After Anthony Baxter told me that he never repeats the same talk twice, I've challenged myself to do the same thing. It's disrespectful to your audience to give them a talk that wasn't custom tailored for them, and it's doing a disservice to your own personal learning - atleast for me, part of the fun of giving a talk is doing the research for the slides and content.
So, when I was asked to present on behalf of Google at Webstock 2009, I proposed a new talk called "Client Killed the Server Star: The New Client/Server Model". The talk was inspired by Brett Morgan's spiel about App Engine + Gears at the OSDC Hackathon, particularly his beginning slides about how the architecture for the web was changing from server-centric to client-centric, and it was motivated by my desire to research more about the traditional client/server model, and various HTML5/Gears APIs. Here's the talk abstract:
"Most modern websites still place a large burden on the server, constantly sending it requests and asking it to do heavy computations. In the brave new world, the client is king and the server is its faithful shadow. In this talk, we'll look at how cutting-edge technology like Gears, HTML5, and Google App Engine can be used to create websites where the caching, storage, and computing is done primarily in the browser/desktop and the server is used merely as a backup store."
You can check out the slides below, read a great write-up of the talk from one of the attendees, and watch the talk. Oh, and right, the talk title is clearly a parody of an 80s song, and if you're sharp, you'll notice other 80s references in the slides... I couldn't resist.
Here are some interesting links that I read while researching for this talk . Most of these are about the server aspect, as I was trying to imagine the ideal setup of the server/database for my proposed smart client:
- Is the Relational Database Doomed?
- Disk is the New Tape - Flash is the New Disk
- Disk trends will drive the need for column stores
- Memcache: When You Absolutely Positive Have to Get It To Scale the Next Day
- Client/Server Model on the Web
The talk went well, and it got me thinking about web development as it realistically stands now. Right now, we have places where we have really strong, smart clients - iPhone/Chrome/Safari/Google Earth (Webkit), Firefox, etc. But then we still have "dumb" clients lying around - IE6, Blackberry, etc. If we only had to cater to smart clients, we could design our applications to have dumb servers and most of the complexity in the client (as the talk shows). But, given the current state of things, we have to design our applications to replicate complexity in both the client and the server, and just figure out when it can safely pass off responsibility for complexity to the client and save our server effort. And that kinda sucks, because we all know redundant code in multiple languages is error-prone and messy. The solution right now is perhaps: 1) use frameworks that smartly export functionality to either the client or server as it sees fit (not sure if those exist), 2) decide that we don't care about dumb clients, or decide that we're content to send a very pared down version of the application to them, 3) get cryogenically frozen and wake up in 10 years when the world is awesome.
Read through the slides, and take this challenge: when writing your next web app, put all of the complexity in the client. See how far you can go. I dare you. ;)