Archive for the ‘Productivity’ Category

Evaluating / Comparing NetBeans and Eclipse EE for Java EE development

Friday, October 19th, 2007

Although we are ‘big’ Eclipse fans and have been using it for many years for everything (PHP/symfony, Java, XUL, HTML) and have even contributed plugins but we decided to evaluate NetBeans to see if it gives any extra features that might help/speed up development for our forth coming Java EE project.
Technologies we are going to use in our application are:

Preferred IDE requirements:

  • CVS integration
  • Integration with GlassFish - so that we don’t have to leave the IDE to deploy etc
  • Should support debugging of web application
  • Support for profiling
  • XML/JSP editor
  • Context sensitive help and auto completion for tags

We are comparing
NetBeans 6 Beta 1 and Eclipse 3.3 Java EE

Creating a new web project is pretty straight forward. Both IDEs create more or less same directory structure only difference being the location where Java source files are stored. Eclipse keeps them under src where as NetBeans keeps them under src/java.
Next thing I wanted to do was import (share) my project to CVS. Found it more user friendly in Eclipse although NetBeans was equally straight forward.

JSP/XML Editor
NetBeans editor is lot more advance and friendly.
Editing Web.xml in Eclipse
Editing web.xml in NetBeans

Other differences
- In Netbeans you don’t have to click on ‘fast views’ just mouse over brings the window.

- Can’t easily change destination of compiled class files in NetBeans. We wanted to try directory deployment feature of GlassFish so that we don’t have to create .war every time, this required us to compile and put the class files in WEB-INF/class folder. This setting is pretty straight forward in Eclipse whereas you have to change projects.properties file in NetBeans. (Or it was not easy to find how to change it via UI)

- One of the biggest inconveniences was not having auto import while writing Java Code. Eclipse will auto import a class if you use it (Ctrl+space) but in NetBeans you have to manually add imports. There is fix imports also but thats an extra step.

- Eclipse UI in general is more user friendly. As an example ‘output console’ had a title bar and then some tabs. Each of these tabs are (or at least look) like individual windows with separate x (close) buttons. Its very natural to double click on the title to maximize it, hence you would try to double click on title ‘GlassFish v2′ but it will not do anything. You will have to double click on the bar above it ‘Output’. This is understandable but not ‘really’ as expected. On the other hand eclipse is pretty straight forward.
NetBeans console windowEclipse console window

- Eclipse kept on crashing (giving out of memory error) on my colleague’s laptop which has 1GB RAM, this happens when he tries to run GlassFish from Eclipse. Trying to run GF outside of Eclipse doesn’t crash it. This is actually a show stopper, or he needs to upgrade RAM

- I couldn’t figure out how to auto compile and auto deploy application on NetBeans. Every time you change a class file you need to ‘build’ and ‘run’ or ‘deploy’ on the other hand Eclipse will compile and deploy automatically on save. On the other hand auto deploying can also become a problem when application size grows. But this made it very smooth on Eclipse to build/test.

We also evaluated how to create a project so that it can be opened in both the IDEs so that we can either switch or let programmers choose whatever they want. There was no ‘huge’ difference of features or one IDE helping a LOT. On the other hand as we are comfortable with Eclipse shifting on NetBeans can be counter productive as we have to learn/get used to the new IDE. We know that we will need NetBeans for debugging and profiling but development will be faster with Eclipse using directory deploy and .reload feature of GlassFish.

Employees in startups

Saturday, August 18th, 2007

Anuj Khurana has some great pointers of what the employees in a startup should be doing and expecting.

I specifically like points 4, 5 and 7:

  • The company’s success is your success, and vice versa
  • Always remember it’s your company
  • Self-drive and self controlled

Read the full post here

FireFox extensions I cannot work without

Tuesday, January 23rd, 2007

Firefox, Eclipse, Thunderbird, Kopete/GAIM, OpenOffice, konsole, tomboy this is where I spent over 95% of my computer time.

Best thing about all these applications/products is that you can install additional plugin/extension/addons to enhance their usage. Following is the list of firefox plugins I use almost daily.

Firebug - A must have, very helpful js/html debugging tool.

Web Developer - Very helpful for finding html/form related problems. Also a good place to learn how to build firefox extensions.

JSView - Lets you view source of externs js, css files. Very handy.

Load Time Analyzer allows developers to measure and graph how long web pages take to load

Server Switcher It allows you to easily switch between sites on your development and live servers Very helpful.

SearchStatus Display the Google PageRank and Alexa popularity score

del.icio.us
Next: Eclipse plugins I cannot work without :)

Interrupt Management

Wednesday, March 22nd, 2006

interrupt.PNGIt had taken me the whole of morning yesterday to arrive at the strategy and algorithm we would be using for optimizing the performance of a database intensive application. To be sure that the algorithm will work and perform well under all scenarios, I was just trying to run it through various scenarios, on paper. As I was in the middle of one of the scenarios, someone tapped me on the shoulder and said, “I finished the system architecture document and it is there in the version control system, can you take a look at it when you have time?”. Ah, it was so painful and frustrating to look away from what I was doing. But I managed to smile and say “I will”. And I started to run through that scenario all over again :(

That is a typical interrupt I am talking about. But interrupts can be of all kinds, some are really urgent while some can wait. But most often they tend to be productivity killers, specially in places where concentration and continuity are important. I had attended an interrupt management workshop a few years back. It was enlightening to realize how much we can gain in terms of productivity with proper interrup management protocols.

The most common problem about interrupts is the choice of meduim. Most often people choose to interrupt (or lets say, communicate) through the wrong medium. For example, the person who asked me to review the document wanted me to review it when I got time, but still chose a face-to-face communication over an email that would have been sufficient. The only way out in the long run is to have everyone learn interrupt management. For example, we now have an urgency-status attached to each mode of interrupt. The highest being a verbal face-to-face communication, and the lowest being an email. There would be others in between, like a phone call or an intant message. So before we decide to interrupt someone, evaluating how urgent it is, can help us choose the correct medium.

The other aspect is to allow for less in-your-face interrupts yourself. Like, not having those popup email alerts that say “You have new email”. I assume unless you are waiting for an email or are in a job where each email is super urgent, one does nto need that alert. And in most cases, even synchronizing with the mail server should be put off to every 10-15 minutes only. And if something is very urgent, people will actually call/meet you.

Then there is another thing we had tried, using a DND hour. This typically shows best results when the team is very large. We just defines a couple of hours in the day when you should nto interrupt your colleagues, unless really critical and cannot wait. Of course, each team member had the flexibilityt o decide if they wanted to participate so that nobody interrupts you during the DND hour. And for the large team it paid off, most of the programmers said it increased productivity and allowed better scheduling of discussions. But as always this is really a matter of the work culture you adopt in your organization and whether you see this as a good practice.