Thursday, September 25, 2008

Pinch me moment

If you don't like over-the-top positive/happy posts, stop reading. I don't write these often because they're generally lame, but had to do it this morning.

How much can go well in a 24 hour period?
  • Yesterday was my birthday.
  • My kids made me fabulous cards.
  • My wife made me a cake and took me out for a great dinner at one of my favorite restaurants; L'Atelier.
  • A company I co-founded, Gnip, had a board meeting in which some incredibly good stuff was finalized (more in coming weeks).
  • Some friends and I have pulled together a unique way to draw programming talent from other parts of the country to Boulder;
  • I won a Google Chrome comic book at auction (this is not an indorsement for Chrome)
  • Some important friendships have found a healthier place for all involved.
  • Hiked Sanitas with a bunch of friends.
Many moons ago I left Boulder to go do interesting things at Netscape in Silicon Valley. It was fun... we changed things. But... the Bay Area became a traffic infested, car driving, grind. No longer worth hanging out there after 3.5 years, we came back to Boulder in the late '90s. I miss a lot of the Valley world. I'd long hoped to mash San Francisco together with Boulder, and it feels like it's finally happening. Just the right amount of mash though; a dash.

My home, and work, lives are in the place I love... home... Boulder.

Friday, September 19, 2008


Via Chris.

1. Take a picture of yourself right now.
2. Don’t change your clothes, don’t fix your hair…just take a picture.
3. Post that picture with NO editing.
4. Post these instructions with your picture.

Tuesday, September 16, 2008

Code Head

If you've ever written code before, you've experienced "code head." If previous statement is true, and you've been in a relationship with someone else, then they've experienced you with "code head." If you string together sentences with operators like "and," "or," "not," "true," and "false," then you've experienced "code head."

It's not like a cold you can catch, or some disease, but it is a state of mind that impacts the people around you when you have it. It's the result of being heads-down in programming, math, or data analysis long enough that your brain continues to loop and process logic problems long after you've left the keyboard. Guess what!? If you have "code head" you're generally not fun to be with until it goes away.

If you're around others (say back home with the family, or out to happy-hour with friends) with "code head," it's obvious, and you aren't interacting with everyone else the way you do when you don't have "code head." You appear sluggish, and detached (because you ARE), and there's an impedance mismatch between you and everyone else.

If you find yourself around someone with "code head," either break off and re-engage at a later date, or help them get out of it by piquing their interest in another topic. NOTE: the latter can be very difficult.

Hmmm, is this a long way of describing someone being distracted? Oh well... my friend Ingrid used the term "code head" today, and I was compelled to write about it.

Monday, September 15, 2008

Clouds & Inverse Sunk Cost Arguments

Over the past couple of weeks I've had conversations with several folks about Gnip leveraging Amazon's Cloud services, and the fact that they are not.

The vast majority of the time it is clear that the other party is not using the cloud because they've already invested so much in their existing infrastructure, and that they're intellectually justifying sticking with their current solution. That said, if your back-end is mature, baked, and generally static, then the financial math likely does justify avoiding the Cloud, but if you're a relatively young application, the Cloud is your friend.

There are certainly times when someone truly has an application that requires physical hardware ownership/leasing, but they are the exception for sure.

Many times folks convince themselves, and their bosses, that they need their rigid, generally expensive, physical hardware (self, or third party, managed) infrastructure, because of their unique high performance needs. So few applications today require "on the iron" cross-machine latencies and processing speeds, and it's embarrassingly obvious at times; does your consumer facing website really need to be served from hardware you own? Don't kid yourself, it doesn't.

If you've already sunk mountains of money into leasing co-lo services, or buying and hosting hardware yourself, and staffing a team to manage them, acknowledging that such cost is now sunk, and that you could/should move your infrastructure into the cloud is a hard thing to do. However, the industry evolves, and it might be time for you to do so as well.

I'm clearly sold on "the Cloud." As a start-up, the flexibility in being able to setup/tear-down dozens of machine instances to support a bump in traffic, or to perform load tests, is a joyous thing. Tough conversations with a managed infrastructure provider about short/long term contracts, or the Operations team, are a thing of my past, and I'll never go back.

If you're avoiding "the Cloud" because you already spent so much on your infrastructure, do yourself a favor and re-evaluate.

Saturday, September 13, 2008

Small World Experience

Every now and then technology works. It's wild when it does. I had such an experience yesterday that made me realize how small the world has become. None of below is remotely close to mainstream (I need to do another blog post on technologies we "think" are mainstream, but are far from it, e.g. RSS), but it was an amazing experience.

A colleague, Kevin Marks, was sitting in a conference (BearHugCamp) that he thought Gnip (either Eric or I) should be attending. He emailed Eric saying as much, and Eric forwarded the mail to me. Within the email was a link to the live webcast being hosted on I clicked the link, click-ed the video into full-screen mode, and I... was... there. Within 60 seconds of Kevin making the suggestion, Gnip was "there." The content was indeed totally relevant, and I had the sense I was "attending" a conference taking place in another state. I gleaned enough to find value, and I moved on.

Not much to the story, but it made me realize just how far live video feeds have come. Latency isn't much of an issue anymore, quality is high, and full-screen is supported by every player now.

The machine is evolving.

Monday, September 1, 2008


It's been a long time coming. Google's impending release of their web browser marks the first notable new browser entry since Apple with Safari. I still think Apple made a big mistake going with Webkit/KHTML for rendering with Safari (over Mozilla Gecko), but what's interesting about Chrome isn't that they chose Webkit too, rather the "fresh look" at building browser in the in the 21st century. It's a different world today.

Gecko & Webkit
I'd prefer modern browsers leverage Mozilla Gecko as it covers more rendering compatibility breadth than other engines for sure, but folks continue to be impressed with Webkit's rendering speed. I don't perceive enough of a speed difference between the two, but load tests indicate otherwise. Whatever. Rendering may indeed be becoming commodity. Hard to imagine, but it is 2008.

Javacript via V8
Google's choice to go with V8 as a Javascript VM is monumental, and could be a real game changer if Chrome gets any market share (I predict sub 10% for years). Ground up JS engine construction can't be taken lightly, and I am impressed, again, at the perspective; looking at JS engines in today's web app heavy reality. It is kind of incredible that JS UI drag/drop on IE/Mozilla based engines is jaggedy. I mean c'mon. V8's performance could wind up being impressive given that they leverage precise garbage collection, actual machine byte-code compilation and execution, along with hidden classes; all overdue. I wonder how it stacks up against Tracemonkey?

Put It On My Tab
Breaking pages/tabs down to process-per level is an age old idea, and it'll be neat to see it in the wild. I'm sure it'll have some benefits (obviously execution/memory/crash isolation), but intra-browser expectations we've all grown up with will take time to get right. Simple things like visited link coloring (in _real-time_), cookies, and session history all will have to be synchronized where they often weren't before (though IE started sharing cookies across processes roughly 13 years ago).

Gears & Software Patterns
I'm most excited at the notion of baked in Gears support. The Gears work Google's been doing of late is the most innovative client-server web app work I've seen. The prospect of this kind of functionality being an integral part (not an add-on) of the browser is revolutionary. Again, here comes that pesky market share penetration challenge. Without server-side apps leveraging Gears functionality natively, it'll be destined to research project status.

I have to wonder if there's room for Gnip integration either in Gears, or in the browser itself. Event driven actions across the network are a major part of modern web apps, and tighter integration with client-side software could be tasty.

The UI design stuff is "meh" at best. It's design, and promoting tabs to the top-level UI element feels right, but.... it's design. Whatever. If you don't get it right, someone else will.

Looking forward to trying it out...