Wednesday, April 15, 2009

Google Mania

I've recently discovered some new Google apps that I thought I'd share. First, Google has an updated version of their Picasa for Mac and Linux. This version seems to support most (perhaps all) the features of Apple's latest iPhoto. That's a pretty impressive feat. It's presented with a simple, intuitive interface .. very Mac friendly. Next, I've discovered some of Google's Mac dashboard plugins. Specifically, their Gmail and Blogger plugins. These are great little utilities that allow me to perform some simple actions (like send an email or a blog post) without switching to a separate virtual desktop. While this may seem superfluous, it's worth pointing out that when you are using the dashboard widgets the rest of our desktop is visible. This means you can easily reference a web page, source code, etc while your typing your email or blog post. This may not be useful for everyone, but I find it helpful.

Thursday, February 26, 2009

Who Will Watch the Watchmen?

I'm a big fan of the Watchmen graphic novel. My wife and I have been very anxiously awaiting the opening of the movie. While previous Alan Moore movie conversions have been poorly received, I've got high expectations for this one. After watching the trailer I was quite surprised at how much the environment looked like it was taken directly from the book. We plan to go see the movie with some friends next weekend. So, who else will be watching the Watchmen?

Monday, February 23, 2009

Demo Day

Is there anything worse than demo day? I have a big review tomorrow and find out at the last minute that we must prepare a demo. Now in my mind, preparing a demo is something akin to performing a miracle. There's the ritual chanting (why aren't you working?), dramatic moments (leaping from your chair, tossing something across the room), and plenty of emotional extremes. But unlike all the great miracles, the demo doesn't last. You just hope it doesn't come undone during the show.

Friday, January 9, 2009

Java Serialization and Sockets

I remember working with sockets years ago and thinking how much work was involved to get simple messages over the pipe. Even though I was doing the sockets programming in Java, and Java greatly simplifies the actual socket connections, it was still intimidating designing a communications library and breaking everything up into bit streams.

Since then I've tried a number of high level communications schemes like CORBA, RMI, and web services. Let's face it, CORBA was just painful. The price of getting that high level connection was just too high. RMI was big improvement. With surprisingly little effort you could send fully instantiated objects over the pipe .. as long as the pipe didn't include any firewalls. Web services work great with firewalls, but you have to jump through hoops to maintain state. In case you haven't noticed, state is a pretty useful thing to have. Working in a stateless environment seems to be a step back into the dark ages. Of course, I can implement my own session state, but wasn't the initial goal to make things easier?

Recently I've been working with sockets again. But this time I've thrown Java serialization into the mix. This allows me to serialize high level Java objects and send them over the pipe without writing all the usual code to break the object down into bits and then recreate it on the other end. Sure, you still have to develop a communication language for the sockets, but far fewer commands are required, as everything is essentially just treated as a single piece of data.

While using sockets may seem like a step backwards, it is the single solution that provides both inherent statefulness and simple firewall traversal. I certainly won't be advocating sockets for everything, but if you find yourself working too hard just to get your network layer functioning maybe you should consider it.