If you are a nerd, you might be wondering what Kayak is made of. The short version: it's AJAX served up by Apache, Tomcat, Java 5, with Perl and Groovy operational glue, all running on Linux and developed (mostly) on Mac OS X Tiger and Ubuntu Linux. We use MySQL when we need to do databasy things. We use memcached to keep the database from getting crushed.
If you're not crying from boredom yet, read on for further details.
AJAX. We didn't know we were making an AJAX application when we started. We thought we were just being clever. Then somebody mentioned to us "Hey, nice AJAX application." After some googling around to make sure we weren't being called abrasive soap powder, we said "Gee, thanks, AJAX is definitely the wave of the future."
Java 5 isn't the greatest programming language in the world. It's probably not even in the top ten. But there are a ton of great, free, widely tested libraries to do everything under the sun, and it is quite efficient. Java 5 is the latest marketing version, which is also known as 1.5 to us nerds. The latest version adds a bunch of syntactic candy to the language so it doesn't look quite so rusty next to C#.
Perl, of course, is the great do-everything of scripting languages. It is not exactly elegant, but it is supremely powerful in qualified hands.
Groovy is an interpreted language wrapped around Java. It's cool because you can whip up a script without deploying new class files, but you can still call all the mounds of Java functionality you've been slaving at for years. Super cool.
MySQL is a modern, easy-to-use and free or very inexpensive (depending on how you use it) relational database. It is very reliable, and very fast. I'm not saying that you should take your gigantic multi-site global banking system and port it to use MySQL, but for maintaining data about all the hotels in the world, it's just fine.
memcached is a totally awesome distributed memory cache. It works for many languages, but we use it for Java. It is super-fast, super-efficient and helped us eliminate dozens of redundant server-specific caches that had poor hit rates. I can't believe this functionality wasn't built in on so-called "network" operating systems years ago.
We run the Kayak web site on Linux because it is free and it works. We don't even use those Linuxes that are "free" but cost $795. We figure those are for chumps who are afraid to take responsibility for technology decisions, and need a vendor to yell at when stuff crashes. There is no one to yell at when our stuff crashes, but our mothers always told us we shouldn't yell. Always listen to your mother.
Many of our engineers develop the Kayak software on Mac OS X. This is the operating system for Apple computers that is basically Unix with a nice GUI. Those who don't use Macs, use Ubuntu Linux for development.
Cheers,
billo, Chief Architect
P.S., if you want to send me encouraging notes or vitriolic hate mail, I'll bet a clever person like you could guess my email address.
P.P.S., if you are a developer, please check out
http://www.kayak.com/labs/ for some fun stuff.