Lullaby Architecture Overview
- May 19th, 2006
- Write comment
Archive for May, 2006
One of the more difficult types of problems to debug are silent failures. Unless you really know what’s going on, there’s just no way you’ll ever find the problem. Sure it may be ugly and it might be annoying, but I’d favor a big, red, and bold error message over an implicit “you didn’t really want to do that so we’re going to ignore you.”
Case in point, whenever I tried to sort the mailbox on my webmail client, the sort returned with, “you’ve got ZERO messages.” Which was, to say the least, odd since there were 100′s of messages before I tried to sort it. The fact that there were 100′s of messages is exactly why I tried to sort it in the first place.
So fine, no big deal. I like to pretend that I’m a competent software developer so I started down the dark path of trouble-shooting. Get past the dumb questions (is computer turned on? check; is there mail? check; etc.) to the log files. Except there was nothing there. Not in the IMAP server, not the Web Client, and not in the Web Server.
About this point, panic sets in. After all, this is all third party Open Source Software. I have no idea how any of this stuff works. I decided to start upgrading each component to see if I could get any change. Updating apache and php didn’t help and I was about to rip out the IMAP Server when I noticed this little tidbit in the configuration file:
# Those capabilities will still be advertised, but the server will reject
# them. Set this option if you want to disable all the extra load from
# server-side threading and sorting. Not advertising those capabilities
# will simply result in the clients reading the entire folder, and sorting
# it on the client side. That will still put some load on the server.
# advertising these capabilities, but rejecting the commands, will stop this
# silliness.
#
Granted, not noticing this earlier is no one’s fault but my own, but this doesn’t make any sense. The best part is, when the IMAP server is on the same box as the (web) client, it doesn’t even get you anything!
Every now and then I write something that just doesn’t fit in a little blog post. Normally it involves installing Linux on something and various hairy steps that I don’t want to forget. This is a listing of those pages. As I get better about keeping things updated and doing new things, I might expand this section to include a few tutorials.
Inevitably, every situation boils down to “us vs them.” It is the manner in which we are constructed, and an inescapable reality. This situation manifests itself in all situations, important and un-important. It’s not hard to find. Wal-Mart vs. Target, Ford vs. Chevy, Muslims vs Jews, Bears vs Packers, Microkernels vs Monolithic, so on and so forth.
And then there are the really important ones, Emacs vs VI, Gnome vs KDE, and Eclipse vs Intellij IDEA. It is the latter that I find the most annoying. The problem with being a developer is that you spend the entire day looking at and working with source code. This source code may encompass multiple languages, different paradigms, and use differing build tools. However, regardless of what it is or how it’s written, inevitably, the IDE becomes the application of choice.
Both Eclipse and Intellij have the requisite features for java development. Incremental builds, remote debugging, hot-code replacement exist in both environments. If either lacked in this regard, the choice would be easy. However, the differences are far more difficult to resolve.
There are just some things which are trivial in IntelliJ IDEA that are just too difficult if not impossible in Eclipse. Ant building comes to mind. IDEA lets you click on the target to execute. If there’s a way to do this in Eclipse, I can’t figure it out. Eclipse’s support for xml, html, and jsp is iffy at best. IDEA appears to be much better in this regard. As far as pure Java goes, IDEA may well be better.
Of course, there are things that I don’t like about IDEA. The keybindings are strange and I can’t figure out what’s with all those buttons that act like tabs. I don’t like that you can’t logically group similar items, nor do I like the lack of a synchronization view. None of these alone are enough to turn me off Eclipse.
But then come the x-factors. Eclipse might not be as good for Java, but I don’t only Program in Java. Eclipse has a wonderful plugin framework that lets you extend the product in ways that take it away from the run of the mill IDE. You can play games in it, surf the web, or write Perl, PHP, Ruby and pretty much another language. It’s like emacs on steriods.
And then comes the clincher: the interface. Some people don’t like the perspectives, the configurable views, or the modal menus, but there is one thing you can’t deny. It’s not just another Ugly Swing App(tm). Eclipse is easy on the eyes because it looks like an application that belongs on your system. On OSX, the menu bar is in the right place. On Linux, it changes to match your theme. On Windows, it looks as hideous as the rest of the system.
When you’re staring at something for 8 hours a day, looks are very important. Who knows, my new co-workers fanaticism or the better Java environment might win me over to IDEA, but for now, I’m sticking with Eclipse.