Geertjan's Blog

  • January 9, 2006

NetBeans in Cairo!

Geertjan Wielenga
Product Manager
Yesterday I met with Mohamed, Sarah, May, Moataz, Ismail and Ahmed who are students in the Computer Science Department (CSD) at the American University in Cairo (AUC). It was an awesome experience. I found out that the CSD consists of about 350 students, many of whom use NetBeans IDE for their Java development needs. So, everyone I met (i.e., the above 6) was very familiar with the IDE -- they use it for web and standard J2SE development (but not J2EE). The length of time that they'd been using varied, but Mohamed told me that he's been using the IDE since 3.6! It seems that students in the CSD spend the first two years of their degree using the command line for Java development and that they then switch to an editor -- and that their instructors implicitly suggest that the students use NetBeans IDE.

What Mohamed, Sarah, May, Moataz, Ismail and Ahmed are currently specifically interested in is module development. For their end-of-degree thesis, they want to develop a plugin for NetBeans (they haven't made a final decision yet on what kind of plugin, but they're seriously considering a Java 3D Image Editor -- so, if there's anyone out there reading this who wants to give them advice or suggestions, or if there are people out there with experience in this field, please let me know or leave a comment at the end of this blog). So, somehow Mohamed had got in touch with Gregg (about something unrelated) and then Gregg, because he knew I was hanging out in Egypt, put me in touch with Mohamed. After exchanging a few e-mails it seemed like a good idea to do a short presentation on module (i.e., plugin) development in NetBeans IDE 5.0, followed by a brief overview of other 5.0 features. I got Brian to send me his slides -- and then arranged to meet Mohamed outside the Egyptian Museum in Cairo. (The train for Cairo left at 6.11 in the morning, so I didn't get much sleep. I was also worried that maybe I'd somehow miss Mohamed at the museum or that there'd been some miscommunication about something.)

But everything went perfect! I met Mohamed at the museum, walked back with him to the AUC, then met with the others, and walked through Brian's slides -- all of us were crowded round Mohamed's (great, and very very clean) laptop (except for Ahmed who joined us later). After going through the slides (which give a very basic but thorough overview of the whole module development process), I did a quick demo which added a menu item and toolbar button to the development IDE. The speed with which everything happened really worked in that they clearly felt excited about how quick and fast it all was. (One thing I stressed, which didn't come through so clearly in Brian's slides, is the connection between the NetBeans APIs and the module file wizards -- i.e., using the Actions API is kickstarted through using the New Action wizard, using the Loaders API is kickstarted through using the New File Type wizard, etc.) Also, what really works very well in demonstrations (because both these features are just so cool) is to show the layer.xml browser in the Projects window as well as the API filter in the Project Properties dialog box.

I also did a quick demo of various other 5.0 features -- obviously, I included Matisse, the many new refactorings, and web service support (that really blew them away -- so much code is generated for you in the web service area, when you see it happening before your eyes for the very first time, it's an awesome experience).

Then they asked a lot of interesting questions, some of which I couldn't answer. Here they are (these are the ones I couldn't answer or which I consider to be issues that I'll add to Issuezilla soon):

  • In the New Action wizard, why can't you create your own menu? In other words, you get a list of the existing menus, to which you add your new menu item. But what if you want to add the new menu item to a completely new menu? You'd need to create the new menu in the Options window first, and then go to the New Action wizard. It would be better if the listbox in the New Action wizard were a combobox instead. (But I'm sure this is planned for the next release. And it's very easy to change this in the layer.ml file.
  • In the Module Manager, after you've installed your new module, what does the "T" icon mean? Only the modules that you install (i.e., not the default IDE modules) have this "T" icon. During the demo, we wondered what that stood for.
  • Are there limits to the size of the icons used by the New Action wizard? I always assumed that the icons had to be 16x16 pixels, but during the demo we used a random 10x10 pixel icon on Mohamed's laptop, and that worked without a problem.
  • Matisse, obviously this was a really cool part of the demo (main takeaway: "you don't need to know anything about layout managers, just pretend you're using DreamWeaver, but in the desktop area"). However, it would be good if there was a single button that you could press to return all your changes to the defaults (in addition to the current situation, where each property has to be set to default individually).
  • They asked about compatibility between .Net and Java web services. I said I didn't know the answer, but that I'm sure there's some solution in this area (or that it's being worked on -- I guess this is what Tango is all about). For example, they mentioned that .Net web services deal with datasets while Java web services deal with resultsets. Is there some way of mapping these to each other?
  • In the coffee shop, I quickly showed Mohamed how to create a Google toolbar for NetBeans (thanks again, Ludo), as explained here. However, I re-encountered the problem where the module doesn't work for the internal HTML browser. (I know that Ludo knows about this, because I mentioned it in his blog, but I don't know if a solution has been found for it.)

After the slides, the demos (a new menu item, toolbar button, loader, and web service, all within 5 minutes), and the questions, we went to a local hangout place, with coffee and so on (reminded me a bit of Starbucks). There we took several pictures (once I get them from Mohamed, I'll publish them here so that you can see what they look like). I had a really good time with them, they took me to central Cairo, where we hung out, had a really great meal (fantastic Egyptian kofta), and then they even drove me all the way to the airport. (And they didn't laugh at my pathetic Arabic, not even once!)

One very interesting point I picked up from them was when they asked me: "What perception do you -- and other people -- have of programmers in Egypt?" (They asked me this because in my e-mails I had expressed a lot of surprise at having discovered that they had even heard of NetBeans. After all, has anyone come across Egyptian programmes on nbusers? Or anywhere else? I know I haven't.) I told them what I think is not just true for me, but also true for a lot of other people, specifically in NetBeans -- who even knew that hundreds of students in Egypt are all using NetBeans? That really blew me away. Then one of them said something that explained a lot to me -- he said that they have "a suspicion of collaboration". In other words, they want to solve things themselves, only as a very very last resort would they consult a mailing list such as nbusers. In general, any problem they encounter, they solve amongst themselves. In this way, they stay below the radar, and NetBeans folks never know that they even exist...

They'd definitely be interested in hosting something like a NetBeans Day (they say that they should be able to attract at least a few hundred people, students from a variety of universities, especially if the productivity of NetBeans is emphasized and the connection between productivity, skill enhancement and the increased likelihood of getting a job as a programmer). The NetBeans Day would, in their opinion, if it were well-marketed, be able to attract developers from surrounding countries too, such as Kuwait and Jordan.

Finally, as pointed out above, Mohamed, Sarah, May, Moataz, Ismail and Ahmed would really appreciate your input! Here are some very specific things that they'd like input on:

  • Are there plugins out there that already do what they're thinking of doing -- i.e., creating a plugin that provides a graphic 3D editor for NetBeans? They were talking about adding 3D images to the palette, then being able to drag and drop them in the NetBeans editor, being able to rotate the images, and set their properties in the Properties window. (I know of at least one person -- Mark Kay -- who is working on something similar. If you're reading this, Mark, it would be good to link up with these guys.)
  • Would their 3D image editor plugin be useful to anybody? They're doing this for their thesis, but they're also hoping that it be useful for the broader NetBeans community. So, are there use cases out there for this kind of plugin?
  • The scale of their project seems to be similar to that of the Mobility pack (and they have a year to complete the project, the first half year for research and the second half year for development). Are there Mobility developers out there who can advise these students on how they should plan and research their project and to give them general advice on the planning stage?
  • They were also talking about drag and drop functionality of Mobility code for Bluetooth communication. Does someone have experience or ideas for this?
  • They were very interested in finding out about what standards they need to adhere to in order for their plugin to be integratable into the NetBeans sources. I showed them this page, but I suspect that that page, with its various sublinks (such as this one) is not completely up to date.
  • More generally, they're very interested in findout out "what are the hot topics out there". In other words, if their other ideas don't work out, what other plugins could they potentially consider implementing (again, it has to be useful as well as doable within the timeframe). I mentioned a C++ editor plugin to them, but I wouldn't be surprised if someone isn't working on that already (of course, that shouldn't stop them, different implementations of the same concept isn't necessarily a bad thing).

So, basically, if you're out there reading this, and willing to chip in your advice or suggestions -- please feel more than free to do so. You can also just contact Mohamed directly, if you prefer. Here's his e-mail address: elgeish@gmail.com.

And... watch this spot if you want to see pictures of us hanging out together in Cairo!

Join the discussion

Comments ( 6 )
  • Kovica Monday, January 9, 2006
    Some time ago (couple of months) there was a discussion about the c/c++ plugin (cpp.netbeans.org or cpplite.netbeans.org, I'm not sure). The owner of that plugin said that the plugin should be updated in CVS around January, February this year.
    Page http://www.netbeans.org/products/platform/screenshots.html also shows a 3D editor, but there is no link.
  • Mohamed El-Geish Monday, January 9, 2006
    Actually we are interested in developing a module just like the GUI Frame Editor but for Java3D Objects by just dragging and dropping 3D elements like shperes, cubes, lights, ..etc. Our designer should generate java code for these objects and maintain the file for later editing. If you have any idea about this type of projects please contact me.
  • Lukas Monday, January 9, 2006
    Geertjan, you are as productive as always even in Cairo. I take hat off.

    Working on a real project seems to be test way to find some bugs. Isn't it strange to hear it from a quality engineer? I don't think so.
  • Ahmed Hamza Monday, January 9, 2006
    Hello there Geertjan!
    I would also like to add that we were thinking along the lines of generating all sorts of functioanlity for our 3D objects, like animations and user driven events...but this is all Java3D.
    We are, at this stage, very open to a complete change of plans if the community can suggest something better.
  • Masoud Kalali Tuesday, January 10, 2006
    I like to be in path of developing that Image editor.also i would be happy to co-operate about Bluetooth communication .
  • Geertjan Wednesday, January 11, 2006
    Hi Mohamed & Ahmed! Thanks for leaving comments in my blog: as you can see, Masoud is interested in getting involved somehow (he's the one who made the great Gmail Checker Plugin. Kovia and Lukas, thanks for the comments too.
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.