Tuesday, December 27, 2005

A Second Look at the Google Favicon

Update: Thousands of people are flocking to my site today (May 30, 2008), because Google changed its Favicon to a lowercase "G". This blogpost is a totally unrelated random musing; Google Blogoscoped has the story of the new icon.

The Google favicon is playing tricks with me. This is what I think it looks like:

Looks very serious and corporate, doesn't it? Just the first letter of the well-known logo, surrounded by a grey box. In reality, though, it looks like this:

The UI artists in Mountain View probably couldn't resist making it all colorful, just like the logo itself.

Am I the only one who fell for this?

Saturday, December 10, 2005

How Do we Solve the Offline Problem?

Rich web applications like GMail, Flickr, Kiko, or Basecamp are very useful for organizing your life online. But what happens when you have no Internet connection? How do get to your information?

There's two schools of thinking about this problem:

Some say that it will be easier to wire the entire planet than to make everything work offline. There is much evidence that ubiquitous online access may become reality: You can check your e-mail from everywhere in Europe these days and can also surf the web while on a plane. Google is deploying Wi-Fi in its home town.

Joel once wrote that Excel sales really took off when version 4.0 made it easy for people to save files back to Lotus 1-2-3. In the same way, I believe that online apps will really take off when it's possible to go back to viewing stuff offline.

Let's start by thinking about what we'd need to implement (Adam Bosworth also has some good thoughts on this topic):
  • Caching: this amounts to keeping a copy of your online data locally - either all of it or just some fragment.
  • Presentation: When you click around in web app interfaces, this generates requests to the server. You'd want to reproduce the online UI reasonably well, possibly by pretending there's a server that doesn't even exist.
  • Synchronizing offline and online data: When you modify data offline, you'll need to store these operations until the next time you can "call home" and talk to the server. For example, in GMail, this would amount to having "Unsent Messages" stowed away somewhere.
There are three possible architectures:

  1. Do everything in JavaScript. This could be very hard, especially since the only permanent information JavaScript can modify on your computer is cookies. (Is this right?)
    We could get JavaScript strong enough to do handle the entire application, but since it's design-by-committee, that may take some time. Also, I'm not even sure JavaScript should be that powerful.
  2. Through a browser plug-in mechanism, control the application or simulate the presence of a server. This is a better choice, but requires a separate solution for each kind of browser.
  3. Install a local server on the system that serves up the UI. This may be the easiest option. I'm sure you could even train users to go to "www.kiko.com" when they have an online connection, but click on "Start Kiko server" first when they don't. Downside: Installing software? Isn't that the opposite of what you want to achieve with a web app?
In closing, I'm sure we'll soon see online apps that have offline functionality. Hopefully, some standard programming techniques and tools will emerge. Maybe there will even be an "AJAX"-like moniker for all this. I believe "Web 3.0" is still up for grabs.

Friday, December 02, 2005

Red, Green, Refactor

A large portion of my computer time is spent with Eclipse, the Open-Source IDE.

Therefore, I was quite happy to attend today's Erich Gamma talk at ETH. He is a co-author of the Gang of Four book, and the JUnit testing suite. Currently, he works on Eclipse as a Distinguished Engineer at IBM.

The presentation was mainly about expanding Eclipse by writing plug-ins that expand Eclipse's functionality. I didn't realize that there are wizards for everything from writing the plug-in to their deployment. Finally, that explains to me why there are so many eclipse extensions out there on the web. Nicely done.

Next, Gamma showed off applications by writing applications on top of the Rich Client Platform, which is basically about taking Eclipse, kicking out all the stuff that deals with developing software, and using the framework for something completely different. For example, NASA uses an Eclipse-based tool for planning rover missions on Mars. Others have converted Eclipse into a stock trading application.

Overall, a very good talk. Erich Gamma seemed very down-to-earth and relaxed. Also, he's the only big-name CS person I've ever seen give live programming demos in front of a large audience.