Saturday, December 6, 2008

And after the break... we're back!

I realise only today, with a certain degree of sadness, that it's been a full year since my last post... so people may have wondered, whatever happened?

(or rather, they would if there had been any reader, that is....)

Google happened!

Yes, almost exactly a year ago, on 17 December 2007 I started working at Google and, although, this was great for all the right reasons, I got so swamped with stuff to do that no time was left to dedicate to this blog.

On the bright side, as the Engineering Manager of a team of extremely talented engineers, I get involved on a lot of exciting projects and technologies and I have been exposed to some pretty awesome stuff - only a small fraction of which I will be able to talk about here, but given the amount of code we open source regularly, I'm sure there will be plenty to blabber about to keep this blog flowing.

Over the last few months, I've also taken up again C++ (and, yes, sorry, Java types - it is faster than Java: a lot!) so hopefully I'll be able to tell you about it too.

My current line-up of preferred technologies (and I advise anyone developing in a resource-constrained environment to heed this advice) is as follows:

  • Google Web Toolkit + clever use of CSS on the web front-end
    (and if you use Google Chrome, that does pay handsomely in terms of user responsiveness and usability)
  • Back-end using either J2EE technologies (typically Spring + Hibernate; use JPA if portability is of value to you) or pure, blindingly fast, C++ 
  • Persistence layer using MySQL (we internally use BigTable, this is no secret, there are even papers about it and our MapReduce algorithms - in the open source world, Hadoop is a cool technology that we were using in my previous job and it looks like it would be a really good choice, but I don't know enough about it to really comment)
The beauty of all this is that, beyond being all open-source and freely available (unlike closed, proprietary, pay-through-your-teeth solutions, best left unnamed....) and happily running on Linux (Ubuntu is an awesome distribution, both the desktop and server editions are totally flawless), you can use all of the above with a reasonably low learning threshold and you don't need to limit its use for some mega-super-complex development: even if you are planning to create a simple website to allow people to share grandma's recipes, it's still worth doing and, by the time you're finished (if there exists such a concept in web development) you'll be very pleased not to have adopted some kiddie-scripting solution....