Eclipse Hudson Plugin
Context - Continuous Integration (CI) is a must. And Hudson is a free, decent, and quick to setup CI server.
To get Hudson into Eclipse - there's a plugin. The recommended way of installing is of course, via the plugin's update URL - http://hudson-eclipse.googlecode.com/svn/trunk/hudson-update/.
After installing it, you'll need to configure it:

Once that is out of the way, you'll get this:

5 Simple Rules To Effective Debugging
1. Use your IDE to debug

As odd as this will sound, many, many programmers I know still does System.out.println() (which easily incurs insults from yours truly) for debugging; slightly smarter ones will use logs. Both will never be as fast or as convenient as using a real debugger in your IDE. I was lucky enough to pick up this valuable skill from my first senior and for that I'll be forever grateful. IDE debugging often allows the following cool features
- hot swapping of code
- object inspection (it doesn't freaking matter if it's a plain object or some fancy data structure)
- execution stack monitoring
- break when variable equals [some value]
- real-time modification of variable value

2. Remember thy shortcut keys
This is applicable to programming in general - mastery of your IDE's shortcut keys isn't a luxury, it's a necessity. What this means is that you need to always be able to step-in, step-out, step-over and continue debugging without even touching your mouse or looking at your keyboard. Memorize each key-stroke for those operations folks (that's F5, F7, F6 and F8 for Eclipse users). This is probably the simplest rule, but it's important nevertheless.
3. Write Unit Tests

How is this related to debugging? Simple. Unit tests by nature are fast to execute and are executable within the IDE. Yes, even if you're using Maven or some other build tools, it is very important to allow tests to be run from within the IDE to facilitate quick debugging. Unit tests are also very atomic, allowing a very narrow execution path, which in turn enables you to zoom in to a small portion of code to debug. Often I've seen folks without unit tests having to fire-up an application server to debug. You lose plenty of time waiting for it to start, only to have to go through the entire waiting game if you should need to change code (naturally this happens often in the debugging cycle). And you know what they say about tests that takes a long time to run... (they don't get executed)
4. Set Correct Breakpoints

If you find yourself having to hit the keyboard to many times to advance the stack, something is wrong. Don't be afraid to start with many breakpoints but start to clear the older ones once you have identify a general flow. I general I try not to have more than 5, 7 at most. If you're using too many breakpoints, your test execution path might be too wide. Consider rewriting a narrower test. You may also wish to consider using conditional breakpoints.

5. You Can Debug Remotely

Yes, it isn't ideal, but if you've got the server up, and the application is acting weird, why not seize the chance to quickly examine the state of the application? Of course this assumes that during development, you have the smarts to start the application using remote debugging VM options:
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
You'll lose the ability to hot swap code, and there's the need to redeploy once you changed code, but these are small inconveniences compared to the ability to view the internals of your application when a bug surfaces (you still retain the other benefits of debugging). Once the examination is done, actual bug fixing and debugging should be carried out via unit tests anyway.
GTK2 2.18.2-1 Breaks Eclipse 3.5.1
A recent update performed installed GTK2 2.18.2-1 and this totally screwed up Eclipse. Mouse events and focus just don't work properly in some dialogue user interfaces. See bugs filed for Archlinux and Ubuntu for more info. A fix has also been suggested - set 'export GDK_NATIVE_WINDOWS=true' in a terminal and run eclipse from there. This works on Archlinux as well as Ubuntu.

Eclipse 3.4 Tomcat Runtime on Ubuntu 8.04

If you've ever tried to setup a runtime server in Ganymede, you'll find that the Tomcat 5.5 installation in Ubuntu doesn't work with it. The problem is that Ubuntu staggers the installation location of Tomcat 5.5 and create symlinks to link all these directory together. When attempting to specify location of the tomcat installation, Eclipse will complain of missing directories (/common/i18n for example).
One solution for this problem is to create a directory with symlinks to link all the staggered directories. These are the symlinks needed:
lrwxrwxrwx 1 root root 24 2007-07-25 00:56 bin -> /usr/share/tomcat5.5/bin
lrwxrwxrwx 1 root root 27 2007-07-25 00:57 common -> /usr/share/tomcat5.5/common
lrwxrwxrwx 1 root root 25 2007-07-25 00:56 conf -> /usr/share/tomcat5.5/conf
lrwxrwxrwx 1 root root 19 2007-07-25 00:56 logs -> /var/log/tomcat5.5/
lrwxrwxrwx 1 root root 27 2007-07-25 00:57 server -> /usr/share/tomcat5.5/server
lrwxrwxrwx 1 root root 27 2007-07-25 00:57 shared -> /usr/share/tomcat5.5/shared
lrwxrwxrwx 1 root root 25 2007-07-25 00:57 temp -> /usr/share/tomcat5.5/temp
lrwxrwxrwx 1 root root 28 2007-07-25 00:58 webapps -> /usr/share/tomcat5.5-webapps
lrwxrwxrwx 1 root root 25 2007-07-25 00:57 work -> /usr/share/tomcat5.5/work
To create a symlink for /usr/share/tomcat5.5/bin, navigate to the directory to place the symlink (say /opt/tomcat) then run the command 'sudo ln-s /usr/share/tomcat5.5/bin'. This will place a symlink for 'bin'. After creating all the symlinks, proceed to setup your Eclipse Ganymede.
Ubuntu 8.04 Is The Desktop To Use

It all started innocent enough. I was tasked with helping my brother-in-law with a new hard drive install in his laptop. Yeah, I'm the resident techie. Fine I thought. After booting up the Windows XP installer I hit a snag - no hard drive found. WTF? I thought nowadays hard drives comes pre-formatted? Don't tell me I needed to run a low-level format on this thing? Times like this I know I need the old fdisk but I don't have anything to boot into DOS to do so.

Then I remembered that I had a copy of Ubuntu around somewhere. OK fine I popped that into the disk and started up the Live version of the OS (means it runs off the CD, no install needed). Then lo-behold a shiny spanking fast OS booted up. This was on a lowly Core Duo laptop with only 512MB of RAM. I ran the disk partitioning tool and walla - the disk is ready to be used. But then I noticed something else - graphics, USB, sound, WiFi, BT, modems, everything was installed and ready to use! I thought WTF, this can't be Linux! I knew that for Windows XP, I'll need to download at least a few hundred MB worth of drivers before anything worked (and I did, post install). Then I remember that Hardy comes with fancy 3D effects that rivals even Mac OSX (nevermind the b*tch called Vista) so I digged into the menu. Wait, that's not right - I only went to System -> Preference -> Appearance and enabled something called "Advanced Effects". What? That's it? No more tinkering with X11 settings and downloading of proprietry drivers? Heck, NO NEED TO REBOOT? Hell yeah! Then came another surprise - the speed of which the transparency, multi-desktop and wobbling windows were rendered! These guys are really on to something. I just saw a demo of OSX when my friend bought one, so I trust me when I say Ubuntu is really on-par graphically! OK that was it, I was sold!

I quickly finished the Windows XP install and popped the Ubuntu CD into my work laptop. A behemoth of one, running a Core 2 Duo at 2.4GHz with 2GB of RAM. I thought to myself "Ubuntu would fly on this thing" and it sure did. I'm now on Linux for 2 weeks. I've managed to sync my Palm Centro, use BT & WiFi, play MP3s, DVDs and all the other proprietry format (I don't have DRM stuff so the transition is easier), run Java & Eclipse 3.4, get the latest Firefox with Flash and all the add-ons I love, do instant messaging, setup my email accounts for work & GMail and much more. Heck it even mounts NTFS partitions so I can access my 14GB of MP3s and work documents without me doing much of anything!


Did I install a lot of stuff to have it run what I needed? Nope, I think less than 10. This thing comes with built-in support for the most ridiculous amount of file formats - PDF, ZIP, XLS, DOC, PSD, and much more. Again, much like OSX, it works out of the box. What I did install was Flash for Firefox, Java and Eclipse, a more advanced manager for Compiz Fusion, a dock software, VLC (just for kicks, I use Rythmbox for MP3s, a couple of fonts and Totem movie player for videos), VirtualBox for Windows virtualization and that's it! I'm still amazed at this modern OS that is faster, graphically pleasaning and more productive. There's a sticky note software on the desktop, widgets like a calculator, a calendar and a dictionary that pops up just by hitting F9 (again, very similar to OSX), multiple desktops that are STABLE and EASY to use, a new ALT-TAB scheme that is more effective because it shows the actual Windows and desktop regions that can trigger Expose-like effects to see all open Windows (again, like OSX). Oh, and there's also a desktop search that I think is better than Google Desktop similar to Spotlight on Mac OSX (of course, feel free to install Google Desktop if that's your thing).

Still, I miss Dreamweaver, Photoshop & Lightroom. I wish Adobe would consider releasing these for Linux. And there's also the issue of Microsoft Office compatibility. Lucky for me, the laptop is more than capable of running Windows XP in a virtual machine so I still get to use Office documents without rebooting. VirtualBox is magic by itself. Windows boots up in less than 20 seconds in VirtualBox which is pretty damn impressive. And I use that to run MS Office 2007. Total cost of switching to a brand new, modern OS that looks nicer, is more productive, easier to use, has tons of quality software out of the box and more secure? Zero (assuming you already have a copy of licensed Windows to run in that VirtualBox).

I still run Windows XP on my desktop though. For games.
I didn't manage to record my screen, but there are plenty in YouTube showing what Ubuntu + Compiz Fusion is capable of. The effects shown are overkill, but used subtly, it looks very cool.
Compiz Fusion on Ubuntu 8.04
Initial Impressions of MyEclipse 6.0 GA
I use Eclipse as my IDE and there is not doubt that MyEclipse is the best incarnation of that IDE. Before WSAD users blow their hats, I like to say that maybe WSAD has more features or is more stable or whatever (I wouldn't know), it's priced ridiculously high and is upgraded at a snail pace compared to MyEclipse. This latest release is based on Europa which is a very impressive feat by itself since Europa was released just a few months back and adds a ton of new features to Eclipse. Kudos to Genuitec for their active development of the IDE. I can say for sure that MyEclipse has helped me a lot especially in terms of packaging and deployment, Hibernate reverse-engineering, application server support (I use Tomcat + Weblogic), XDoclet support and Spring integration. If you are coding Java, you're missing out on a lot of productivity if you don't at least try MyEclipse. Forget about writing tedious Ant scripts or taking forever to deploy to an application server, MyEclipse takes the learning curve out of those tasks.

I can go on writing about MyEclipse's benefit but why don't you download it and go through the tutorials yourself? I guarantee you'll be pleasantly surprised. Read more about the latest release on Genuitec's website and The Server Side.
Update: Initial impressions
- It's speedier than the 5.1 GA (I skipped 5.5). This is to be expected since Eclipse 3.3 has tons of optimizations in addition to Genuitec's efforts.
- It's Java 6 friendly. As with all Eclipse installs, compiling against multiple JDK is easy. In fact, I run Eclipse off JDK 6 but compile for 1.4.
- Install size has ballooned up to 569MB compared to 390MB for 5.1 GA.
- Installation also takes quite some time due to heavily compressed installer. But I guess the savings in download time more than makes up for this.