Why I love Debian (and PostgreSQL)

I woke up this morning, got online through my new UMTS/HSPDA modem, and discovered that one of my servers had a load average of 239+

Not the best way to start the day.

Turns out an rsync backup job between two servers had gone nuts and was spinning them up through the roof. A couple

sudo killall rsync

commands, and everything started settling down.

What’s important to note is that while the CPU was pegged, and the load average was over 200, I was still able ssh in, run top, ps, netstat, and navigate around looking at log files, with very little delay. It was just a little slow, but no more than a second wait for anything.

Also, all of my apps which used MySQL as their backend were all dead, with “database refused connection” errors. All of my apps which used PostgreSQL as their backend were a little slow, but were all still up and functioning without errors.

So, Debian and PostgreSQL for the win!

Top Ten Tools

I was surfing around today, and saw this article about the top ten tools you use.

As far as getting work done on the computer (I’m taking the computer for granted and not counting it as a tool, although for it all to come together it’s worth noting I use an Apple MacBookPro with 4GB of RAM) my top applications are:

  1. Eclipse: my favorite Java IDE with a good set of plugins (JBoss Tools, MyEclipseIDE, WTP, Mylyn, and others)
  2. iGTD:  a great GTD task manager for the Mac.  I use it for work, personal projects, home errands, etc…  I used to use KinklessGTD in OmniOutliner, but now I swear by iGTD.  The upcoming Omni Focus will have to bring something amazing to the table to get to me to pay to switch.
  3. SSH/SCP/Terminal: I manage and deploy to many servers.  Being able to SSH into them and move files securely is critical.  I’m handy with the command line, bash scripting, and all that, so I end up doing things that way often.
  4. Emacs: I can handle vi, but when I’m on a remote server making changes or looking through files trying to figure something out, Emacs is my favorite tool for the job.
  5. Safari: I spend a lot of time on the web researching, reading, and looking at the applications I’m building.  I also use Camino, but Safari 3 is my favorite browser and is always open.
  6. Adium: I love staying in touch with my friends, family, and co-workers.  Adium lets me keep in touch on AIM, Yahoo, MSN, GTalk, and more in a very nice application.
  7. iTunes: Music helps me get into the zone and keeps me happy.  Plus I like to watch the occasional TV show:)
  8. Pages: as an architect I often have to generate documentation around projects.  I also write letters (yes the non-e-mail kind).  Pages is a great word processor and making professional looking easy to read documents is a snap.
  9. JBoss: JBoss is a fantastic application server.  It’s free, open source, fast, and powerful.
  10. Postgres: Postgres is a database with all the great attributes I listed for JBoss.  I used to use MySQL but at the time I switched it was lacking many critical features (sub-selects, foreign keys, etc..).  After using postgres for a while, I haven’t looked back.

Those are the applications that I have running on my laptop basically 24/7 and I use each of them every single day.

What are yours?  I’m not trying to get into an emacs versus vi flamewar, but I’d like to hear about what applications get you through your day a little easier.

Why Oracle makes me nuts

When left to my own devices I tend to use PostgreSQL or MySQL. They’re both free, open source, run on every platform I use, and I understand how to use them, tune them, etc…. However, when I’m building an application and database scripts that will be deployed on Oracle, and using an application which doesn’t really support PostgreSQL or MySQL for production anyhow, I will use Oracle. I don’t have much against Oracle really, mostly I just don’t understand it’s inner workings very well, and usually I only deal with it when it breaks.

Installing Oracle on Mac OS X has been possible for a while, but has been FAR from easy. More often than not the installers would throw fatal errors and die horrible deaths. However, you can now get a pre-packaged Oracle 10 XE installation running on Linux as a downloadable Parallels image.

http://ptn.parallels.com/en/ptn/desc/?VA_id=169

Which takes a lot of the pain away. Just download, run, and poof you have a running Oracle 10 instance with a web admin, and you can plug your SQLDeveloper, JBoss, ATG, etc… into it.

Until it starts throwing errors. Not Oracle. Oracle just sits there happily, but your applications start blowing up. Not at first, but when you start trying to DO stuff. Like say running a bunch of install scripts, and it starts failing 1/2 way through. I finally tracked it down as a known issue, mentioned on a few blogs like this one:

http://it.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/

So there’s a hack/fix at least, but come on Oracle! When your database falls over faster than any open source database you have issues.

This isn’t an “I hate Oracle” rant. When it comes to huge production systems I’m not 100% sure I’d pick anything other than Oracle on Veritas. But I just wish they made it easier to use all around. Has anyone seen a very serious production system using PostgreSQL? I’m sure they exist, but I haven’t seen one. By serious I mean 8,000+ simultaneous jdbc connection, tens thousands of transactions/minutes, tables with 10+ million rows, and queries that do multi table joins across tables of that size, and tested disk, hardware, and server failover. I’m not doubting that it can be done, but who’s doing it?