Sunday, May 31, 2009

Google I/O: My Impressions

punch card picPhoto from Matthias Schicker's post.

I attended last week's Google I/O 2009 conference in San Francisco. Here's what struck me.

Some friends and I debated what the punchline of the show was over dinner one night, but for me, it was HTML 5; the browser. The entire introduction sequence was about JavaScript execution, rendering speeds, & HTML 5 standards. The five minute automated intro demo before the keynote demonstrated web browser functionality, literally, using a web browser for everything. This theme was downright entertaining. HTML 5 is the distillation of everything we've wanted/needed in the browser over the past decade. What's particularly funny about HTML 5, and in Google's all-hands-on-deck push for its implementation across the board, is that, without exception, all the relevant portions were knocked together (in prototype form at a minimum) a decade ago between Netscape/Mozilla, IE, and Opera. The entire two days felt like a browser resurgence.

What I liked about this was that Google had the gumption, and obviously the money, to make something old, new again. If you ever spent time working on one of the major browsers, you too see the world through HTTP/URL/JavaScript lenses. Those technologies unlock everything. It was cool and fun to be part of a conference dedicated to these concepts.

I left about of a third of the way through the Wave introduction. Again, 10-year old communication/message-threading concepts being demonstrated in front of a technical audience of four-thousand. My initial reaction was, yawn. I've always loved the notion of treating messaging more centralized (in a logical sense) both from a backend protocol/storage standpoint, as well as from a UI perspective. Naturally flowing between an asynchronous email conversation, and a synchronous IM conversation, will be a beautiful thing when we finally get there. However, it felt awkward having one of Google's top three themes be Wave.

Architecturally Wave appears to be able to get us there, however standing up Wave providers en-masse will take a long time (consider how long it took for SMTP/POP/IMAP to proliferate).

I'm particularly excited about Wave's leverage of XMPP (with extensions) as the connection/protocol model, though; feels very fitting. Furthermore, Cisco's acquisition of Jabber last year is feeling like a sweet decision right about now. Imagine Cisco's XMPP routers hardened for Wave Providers; nice dovetail.

Google handed out four thousand Android/HTC mobile's in hopes of spurring Android development. I've gone so far as to pull down the SDK and do some dev "how-to" reading, but I've gotten distracted and have moved on. There are three fatal flaws with Android and the HTC device.
  • The soft-keyboard is too small which makes it very hard to type. This is purely a function of the device/form-factor which can/will change over time.
  • No iTunes/iPod. There's a media player, but my world is painted in iTunes (for better or worse) and it's already a sync'ing nightmare so I'm not about to add another framework into the mix. My "phone" and music/video are on one device (iPhone) and I can never go back to multi devices. If anything, the iPhone has replaced my laptop as well on an occasional business trip.
  • The browser is all but useless. This shocked me, but the UI metaphors (which I'm sure some of which Apple has patented) on the iPhone Safari browser are so well done, that anything less on such a small form factor is a huge step backward.

Joseph Smarr on "The Social Web"
Smarr's always good to watch/hear. He understands the high-level yet always has his hands dirty with the actual hand's on implementation. He underscored how much things have changed with respect to OpenID and OAuth adoption over the past 12 months. Very true, and great to see. He mentioned Gnip, and Plaxo's integration points with it, which was much appreciated; thanks Joseph!

One of the tracks was about "Spelly"; notably the server-side spell checker used in the Wave demos. What was so cool about this spell checker is that it was backed not by a dictionary, but the statistical probability (language independent) of a word being spelled correctly based on its position relative to the surrounding words. For example "Let's met tomorrow" slammed against the corpus of indexed web documents illustrates that the vast majority of the time words starting with 'm', between "Let's" and "tomorrow" are spelled "meet", not "met." So cool!

App Engine + Java

Google's hamstrung Java to about the same degree they did Python in App Engine. If you're a high-level Java hacker you might have fun, otherwise this was a solid miss (at least for now).

Sunday, May 17, 2009

Boulder & California

While playing with my daughter this morning she pulled out the key-chain pictured here. I noticed that the "Boulder" sticker was sitting on top of another. I peeled it back and found "California" underneath. Growing up in Boulder, spending four years in Silicon Valley, then moving back to Boulder to help build and grow our software/technology sector, caused me to view the picture through several lenses.
  • California is passe and products/companies/people are re-branding themselves as Boulder which is trendy.
  • The key-chain manufacturer decided to put California stickers on the keychains as they came off the line, then localize the keychains on-demand and in smaller batches when needed, in order to save cost.
  • Some of Boulder's entrepreneurship is really California underneath.
  • Some of California's entrepreneurship is really Boulder underneath.
  • The Californication of Boulder is real.
  • The migration of Californian's to Boulder continues.
A few friends of mine have written some interesting pieces on Boulder along these lines.
While I'm here, I'll plug what's turned into a phenomenal entrepreneurship and technology incubator; TechStars.

Thursday, May 14, 2009

Pair Programming & "top notch programmers"

Gnip is hiring again so the flood of recommendations/resumes/suggestions has begun. Gnip's a pair programming shop which means there are two developers for every CPU in the office, and two developers sit side by side, day in and day out. Pair programming isn't for everyone, and many simply aren't cut out for it. When hiring for a pairing position, digesting recommendations of "rockstar" or "top notch programmers" as friends/colleagues forward resumes along is often like trying to fit a square peg into a round hole. As an aside, checkout my previous posting on rejection and our hiring process.

The majority of developers come from non-pairing backgrounds, and therefore the good candidates have learned how to build amazing code alone. They've built a reputation for being a rock star while sitting at a desk by themselves', knocking out software. It's hard rejecting incredible engineering talent because an individual doesn't play well in a pairing environment, but it's something we have to do at Gnip.

If you know a killer developer who you're thinking of pointing at Gnip, please consider their pair programming passion/tendencies before sending them our way. If neither exist, they're just not going to fit into our culture and process regardless of how talented they are.