Wednesday, December 29, 2010

My Brush With Personal Disaster


I'm 37 years old, and until five weeks ago, I was invincible.

I'm addicted to body work. Shutting down my musculature and letting an experienced massage therapist take over my body is one of my vices. Five weeks ago I had a session that changed my life. I was going through a routine session with a therapist with whom I've worked with dozens of times over the years. Then something weird happened. And then something else weird happened. First, she performed a neck move that, over the course of a few seconds, led to me nearly blacking out. If you've done a lot of massage, you know that there are moves that do weird things with your nerves and blood-flow, so I didn't think much of it. While it was definitely a new sensation, and a troubling one, before I could say anything she'd moved on, as did the sensation. Fifteen more minutes passed and the session was over. I took my customary minute or two to re-enter the here-and-now, and sat up. Bam! I hit the mat instantly. A sense of dizzy I'd never experienced before took over and I couldn't get upright.

At this point I was obviously scared, but, again, having done lots of massage, I knew there were times when things feel "off." I rested a few minutes then slowly got up, pushing through the dizzy. Once standing I was able to move through the dizziness. I brushed it all off and figured I'd wake up the next morning just fine. I didn't. I woke up dizzy.

It was at this point that I realized something wasn't right. I plowed through the day and figured I'd wake up the *next* morning fine. I didn't. I woke up dizzy. At this point I was really scared. What had happened? After some digging the odds started suggesting that my vertebral arteries were slowly pinched off during the neck maneuver, progressing to blackout (which never culminated).

It was time to head to the Emergency Room. They conducted a CT scan and concluded no major blood vessels/veins/arteries had been damaged. That was good news, but I was still spinning 24/7 and was feeling horrible. I cannot describe the concern and discomfort that arises from one's sense of balance being disrupted for an extended period. True horror. The parameters by which you've experience the world completely change. Interpretation. Distance judgement. Balance. Clarity. Focus. They're all off, and as you can deduce, therefore everything is off.

My beloved wife was digging at this point as well, and found something called BPPV (benign paroxysmal positional vertigo) that hit my symptoms on the head (no pun intended). She also found a physical therapist in Boulder, CO (of course) who'd been knocking diagnosis and treatment for this disorder out of the park for years. I called the PT in a panic. I went in and was diagnosed with BPPV and severe neck strain/sprain. I'm still not 100% comfortable with the coincidental onset of both of these things, but, one thing has become very clear, balance and vestibular issues are a black art. There's little science to understand what goes on with the brain's sense of balance and the intricacies of the inner ear when things go sideways. This gets into my overall concern for modern/conventional medicine, but, that's another blog post.

I mentioned my symptoms to a good friend who's metastasized liver cancer chemo is underway. Coincidentally he'd woken up one day several years ago in a dizzy state. He conducted some Epley maneuvers after some PT and then woke up a few days later as though nothing had happened. I suspect he'd had BPPV and didn't realize it. He self-treated and life was good afterward. Given his current medical scenario, he was able to provide me with some… let's just call it… "perspective."

At this point a week had past and nothing was getting better. I found myself faced with the impossible question: how do I live life this way? Everything around me was distorted. One of my senses (frankly my most important one; vision) was compromised, and I was experiencing some sort of tunnel vision where I couldn't see or focus on much in my periphery, and instead all I could see was what I adjusted my eyes' focal point onto. Very hard to describe. At this point I was freaking out. I could tell my mind was at a fork in the road: choose to spiral into oblivion and become depressed while things tried to work themselves out, or choose to be positive. If you know me, you know I'm a realist (err… pessimist?). I don't walk around viewing all the glasses half full (at least externally, but that's another blog post). Incredibly, I was happy. Petrified with fear, but happy. My spirits were higher than than usual. I can't explain this unexpected behavior yet.

When I finally got to my first PT appointment I unloaded. Therapist: "What's up?" Me: "I'm going to talk for awhile. Do not interrupt me. Listen carefully. I'll tell you when I'm done, and then I'll shut-up, at which point you take over." Luckily the PT and I were aligned. She listened intently, let me blab for awhile… let me stop, then she dove in.

Her confidence and clarity around her experience in diagnosing and treating vestibular stuff were exactly what I needed. She grabbed the steering wheel, told me I was ultimately going to be fine (which I doubted), and proceeded treating me for vestibular issues. The intricacies of how our body/mind establish balance are unbelievable, and again, there's very little science that clarifies any of this. Black magic. Once you get into the brain, all bets are off; bottom line.

Over the past several weeks, and several PT sessions, it's become clear to me that I suffered severe neck strain/sprain. Looking back on the massage session that instigated all of this, I was more relaxed than normal during the work. I'd relaxed to the point that my body was not responding with normal reflexes when danger was sensed (that in and of itself is a scary thought). I'd relaxed so much that I wasn't protecting my vertebral arteries with muscle tension, and that led the massage therapist's normal maneuver (which I'd had done literally hundreds of times) to throw me off completely, and compromise my mind and bodies' physical defenses.

Much like a severe ankle sprain, which can take a couple of months for an adult to recover from, my neck was combating serious inflammation and tendon strain, in addition to BPPV. The result has been that my vestibular system, occipital portion of my brain, and blood flow infrastructure to inner-ear and associated brain area, had been compromised. From my point of view, I've been healing from a severe inner-upper neck bruise.

I found that physical activity (bike rides, weight lifting, jogging, massage) minimized the symptoms; oddly. But, in discussing that fact with the PT, she clarified the consistency with a major sprain/bruising scenario elsewhere in the body. Score another point for the PT.

I'm almost back to 100%. Three things have led to my recovery: one, upbeat spirit (again, if you know me, this is an odd one). two, the successful treatment of BPPV by an incredible physical therapist. three, patience with a severe strain/sprain in a rare/unlikely part of one's body; the neck. I'm not used to taking that much time to heal; I'm getting old.

For the first time in a very long time, I have a new outlook on life. It's cliche, but now that I've lived it, we are fragile animals. In an instant our entire world can change (for better, or worse). Our brains and vestibular systems are intensely fragile. Just as intellectual activity can forever change our worldly interpretation, so can physical things. Inadvertently mess with the inner ear, and very bad things can happen.

I have no ill will for the massage therapist who initiated this. She'd personally conducted this maneuver dozens of times before without issue, and I have an appointment scheduled with her next week.

I'm so grateful that I'm pulling out of this balance disaster that I can't even describe it.

I am eternally grateful for an old friend who had shinned a light down a dark tunnel for me during this ordeal, and illustrated how great life can be even if things don't get better. I'm glad I didn't have to ultimately test his suggestion however.

Things aren't 100% back to where they were, but the physical things that comprise my life are back, and that's all I can ask for. Furthermore, the rate of improvement has finally gotten to a rate I'm comfortable with. Slow healing is note something I'm accustomed to. I'm used to bouncing back from everything fast.

If you know me, I lack the empathetic gene, and I'm rather selfish. My wife's unfettered empathy while I plowed through this gave me new perspective for sure. You might even start to see me empathize with things where I wouldn't before.

I am lucky on so many levels.

Monday, December 27, 2010

Software & Remodels

A couple of weeks ago we moved back into our home after a six month renovation. Unlike 90% of renovations ours was very close to on budget as well as on time. How did we do it? Now that it's over, I realize we built it similarly to how I like to build software. What follows are some steps to adhere to if you want to build real software, or succeed at a major home renovation.

We loved our builder before, during, and after the project. Equally as important, he loves us.

Of course the abstraction here simply comes down to "hire someone with great project management skills;" they're worth their weight in gold.
  1. Hire relevancy. Make damn sure the person you're hiring to build your stuff knows your domain and has built stuff similar to what you want to build. We have a house in the Mapleton Hill historic district that was built in 1894. The district has strict guidelines and all exterior modifications have to be approved by a board. Our general contractor has successfully remodeled in our neighborhood over the past decade. He has worked with homes from our era. He has worked with the board. He has successfully problem solved random issues in the field for years. New construction is its own beast. Had we hired someone that had built a hundred tract homes, we'd have failed miserably; apples and oranges.
  2. Hire experience. Complex challenges require experience to solve. You need someone who's been through many puzzles before. Every remodel comes with many unknowns. You need someone engaged who has proven their decision making over and over again when confronted with seemingly impossible challenges. Old homes were built without standards, so every wall you tear into, or every foundation you breech, is greenfield in terms of how you're going to ultimately contend with it. Successful navigation requires someone who's used to working in adverse conditions.
  3. Hire consistency. Sporadic energy levels, sketchy output and variable results are bad things. From week to week, you need to know who you're working with.
  4. Hire character. Your general contractor has to be a good person who isn't going to screw you for a buck.
  5. Hire emotion. This can be a fine line. You want someone who cares about your project and your goals. At the same time, you don't want someone overcomited to an unhealthy degree. The job can't just be about the money.
  6. Spend money. Smart problem solvers cost money. Take the money away and you're hiring someone inconsistent, irrelevant and lacking experience. If you hire on fixed-bid and run into challenges (hah... as if you won't), you're pinching someone for unfair reasons when the issues arise. Remodeling is like software, unforeseen issues run rampant, regardless of how smart, experienced and relevant the folks you're working with are. Pay time-and-materials to ensure motivations are aligned on the micro-level. Looking at the project only from the macro will burn you. You get what you pay for; every time, everywhere.
  7. Be flexible. You may want gold-plated nails, but you might not be able to afford them. You may want everything done overnight, but you can't have that. They experienced, relevant, person you've hired does this day-in and day-out. When they suggest a storm ahead, listen carefully, and weigh whether or not you want to sail straight into it, retreat, or go around.
  8. Trust. If you've done pretty well with the previous points, you finally come down to trust. Trust those around you to help you and to make the right choices. If you don't, you'll get bogged down in the details, and your project's due date will come and go without being completed, and over budget.
Good luck.

Thursday, December 2, 2010

Nice Guys Finish Last?

When it comes to reputability, honesty and intelligence, you see quite the range in the entrepreneurial & startup world. Unfortunately, a lot of what you see isn't pretty. As a relative "nice guy," I've tried to carry the "nice guy" torch through it all. I've dropped the torch plenty of times of course, but I've always led with it.

The notion that "doing the right thing" always wins has been severely challenged for me over the past five years of my career. I'd seen a lot of "success" at the expense of dirty business. Lots of bodies kicked when they were down. Lots of good 'ol boy club antics in the classroom. My reactions have varied from "I gotta get me some of that" to flat-out leaving a room that was covered in slime. I've seen the pitch black souls of ruthless businessmen, and I've removed 12" hunting knives from my back.

On one level I admire heartless action. It's clean and usually doesn't have any baggage (IIF you can truly emotionally disconnect). On the other, it's disturbing.

Part of the challenge in the game is being successful in a moral and ethical manner. I have to be able to sleep at night and I can't if I know I've left the field with ill-gotten reward.

While I've also learned to "man up" on many levels (and still need to on many more), I've realized manning up actually means accomplishing amazing feats without screwing people. Any chump can kick someone when they're down, or manipulate the system to their advantage. It's a lot harder to squarely face-off and win. What makes "doing the right thing" even harder is that system manipulation is precisely what you need to do in order to break new ground or to innovate.

Enter obligatory Star Wars analogy. Return of the Jedi... Luke obliterating Vader on the walkway... moments away from killing him. Then Luke realizes he's won... Emperor Palpatine is in the background drooling over what appears to be Luke casting over to the Dark side. Luke stands up, takes a breath, and tosses his light-saber over the edge. He'd shown his prowess. He'd won, without tipping over to the Dark side.

I recently accomplished something on the battlefield that I'd written off as impossible to do if we were going to be nice about it. Still, without sacrificing good for evil, we won. It was a shot in the arm of confidence in that doing the right thing is right and should prevail.

Tuesday, November 23, 2010

Sticky Logins

One of my biggest issues with the web today is authentication. OAuth and OpenID aside for a moment (both of which are cool), the iPhone app model has largely gotten authentication right. I'd like to see user expectations around mobile app login, carry through to desktop browsing as well. When I login to an application on my iPhone I rarely ever have to login to it again (I don't care how insecure that reality is; I DO care about wasting time trying to login) which is bliss.

Conversely, when I use a web browser on my desktop, I have to login dozens of times everyday. I have to maintain and understand a dozen different username/password pairs and play login Tetris in an attempt to login to the various services I use each day. What a drain on me, and on society at large! "Remember me" checkboxes never work (due to poor cookie creating/handling policies on the part of the app provider (you can't blame the browser here, it's your fault; read the spec)).

I'm not an iPhone app developer so I don't know why this "just works" in native iPhone app-land, but it does. I'd appreciate some of that login love being shared into the web app space at large.

In the olden days the argument around login caching revolved around generalized "kiosk" browser scenarios wherein a browser would be shared by lots of people. That model died, and now everyone has their own computer (for the most part), so you can't argue that a mobile device has a 1-to-1 relationship with its user as effectively as you once could. Even if you do, I'd argue to carry that 1-to-1 relationship over to other devices via some other means (biometrics, use the camera in the machine to recognize me, I don't care)

(yup, I had to login to blogger.com to write this post)

Sunday, November 7, 2010

Want An Independent Board Member?

Board composition for a VC funded tech startup is usually, rightfully, heavily tilted in favor of the VCs that have invested in your company. Several months ago my firm, Gnip, added an independent board member on the recommendation of one of the existing board members. I'm new to all this board stuff, so the value wasn't clear to me. I didn't resist, but I didn't jump at the opportunity either.

The board member that suggested we add an independent, had someone in mind (shocker). We met, we talked. Rapport was solid and given that the guy was a like-minded engineer, asking him to join the board felt right. Months ticked by and value was tangential; concentrated during board meetings. As as a side note, it's been quite nice having an engineer on the board rather than just career VCs and company executives.

We're facing some steep technical challenges, and while I have full confidence that our team can solve them, I thought I'd ask if this independent board member would come to Boulder for a couple of days and design/discuss architecture and implementation with us. It was really just a "let's see what happens" request.

Out of the gate, this guy's true impact was felt. He, independently, provided relatively non-bias (of course he's a share holder, but he doesn't have cash on the line) product, direction, architecture, implementation, and prioritization perspective. Because he's on the board, he's abreast of our game, so we didn't have to bring him up from zero, and upon arrival we all hit the ground running. His background in related technologies and markets gave him inherent understanding of some of the challenges we're facing, and his suggestions and ideas made total sense in our context.

My experience with cash invested board members is that they usually have money on their minds (shocker). That headset is hard to get away from, and therefore discussion and direction suggestions obviously come from there. That particular value is crucial (unless it's poorly guided without full thought), but I didn't realize the value an "independent" board member could provide until last week.

If you're considering an independent board member, and are kind of on the fence about it, give it some real thought. I imagine it only makes sense if the candidate has highly relevant experience (not just "kinda relevant"), is a good person, and would truly be happy to help you out.
I'm grateful to have the board members and advisers that Gnip has. I can't imagine doing this any other way.

Tuesday, October 19, 2010

Facebook vs. Twitter

I was having a conversation with someone the other day about Facebook vs. Twitter as "reach" platforms within the context of advertising. I was about to send this to them via email, but thought it might make for good blog fodder.

We were comparing how many people had become a fan of the FB "Coke" fan-page (1.4m), vs how many people had followed the TW "Coke" account (40k). My brain's been background processing this for a few days, and here's what's been bouncing around in there.
  • FB's been around longer (though I'd argue that doesn't account for the difference)
  • Becoming a fan in FB is a relatively passive operation when compared to following a user on TW. The cost to follow someone is high (their dope gets spewed into my stream). The cost of becoming a fan is low. Fan'ing is a passive statement, whereas following is more aggressive and intrusive.
  • In general, I view FB as the massive beast social network. Mark's, ironically, been genius about the sociological subtleties inherent in human behavior, and the product reflects that. While FB falters plenty, most of the functionality "just works" as you'd expect; without you even knowing it (whether or not we know it, or should, is a separate conversation). I view TW as less of a social network (oddly), and more as a literal communication medium.
  • Very few people "favorite" tweets, whereas lots of people "like" things in FB. For me this is because "favoriting" is a very strong statement when compared to "like'ing" something. I "like" things in real-life all day long, but calling something my "favorite" carries more weight, and I do it less as a result.
  • TW feels extremely public; it's like a PA system. FB feels quieter and more private (don't worry, I'm not deluding myself into thinking things I do on FB are private... I'm simply saying it "feels" more private).

Location Labs & Non-GPS API based LBS




I'm a heavy FourSquare user and am intrigued by Location Based Services at large. LBS related stuff will lead to the most significant behavioral changes on Earth since the network came online 15 years ago.

Just The Beginning
While we're all basking in what feels like an LBS revolution with so many devices being able to present latitude and longitude to developers these days, as anyone who's used those APIs before will tell you, we're way off from true value. There are two fundamental problems with device-side detection today: one, accuracy is all but useless, and two, hitting those APIs siphons battery life right out of the device. Both of those are significant barriers.

In an attempt to clear these hurdles that inhibit today's mobile LBS apps, Location Labs has built an iPhone app (Mayor Maker) that can auto-check you in to venues you define. They can do this with decent accuracy while not decimating the battery.

How?
They leverage their own web service to setup geo-fences around your venues, then as you move across those fences their back-end sends the background running iPhone app a notification to the effect of "you just crossed one of your fences, do you want to checkin to your venue?" Location Labs knows where your handset is because they're embedded into the carrier (all of them) backbone network infrastructure, which itself knows where all the handsets are.

Accuracy
I don't know just how accurate the carrier's tower triangulation is. In past experience it's been pretty poor, but passive observation of Mayor Maker and their other app Family Map, suggest it's gotten a lot better. MM defaults to checkin when you cross a fence of 300' accuracy. That's way too coarse a setting, so I changed mine to 150' which is the most granular you can do, but that still feels too coarse. Ideally I'd like 10' (ten), but the fact that such a setting does not exist gives us insight into what the true accuracy capabilities are.

I configured MM to ask me before checkin, which allows me to confirm/deny. The default is to simply auto-checkin, but given when/where I get the notifications, if I let it checkin on its own, it would be a mess.

Battery Life
While battery life is no doubt "better" than a background running GPS pinging app, there is a noticeable dip. I'm going to guess that my battery life is reduced by somewhere in the neighborhood of 20%. The fact that it's so high is a bit of a mystery to me. Perhaps that's simply the cost of any background app on iOS.

The Future
The best location accuracy comes from true GPS devices (think bulky Garmin watches), and we all know that hardware isn't making it into our mobile devices anytime soon. We're stuck with broken tools for awhile which stinks. Leveraging the carrier network for LBS feels like the best approach until something better comes along.

Until then, I ask that any location based checkin app (Facebook Places, FourSquare, whatever) use Location Labs' API to leverage geo-fences and background auto location verification/notification. For users that can't handle the battery impact of even that, they can simply disable it and revert to the current metaphors. But if we're going to evolve, we should at least start playing with new ways of doing.

Sunday, October 10, 2010

The Future: My Kids & Computers

We have a 5 yr. old girl & an 8 yr. old boy. They've grown up with a lot of technology around the house. Some notes on how they've engaged. We're an Apple/Tivo house; iOS/OSX/*nix only.

Our Son
- lives on lego.com. he shops there, and endlessly looks at pictures of lego kits/sets
- watches stop motion lego (generally star wars) videos regularly on youtube
- builds his own stop motion stuff w/ iStopMotion, external USB webcam, and a macbook air. he can set everything up on his own, and capture all the shots. requires no adult assistance.
- peruses ebay.com for vintage/hard-to-find legos
- sells custom legos and hard-to-find stuff on ebay.com
- doesn't understand what NOT being connected means. his brain truly doesn't get it. a network connection is assumed wherever he is.
- doesn't understand why he needs multiple usernames and passwords for the operating system and across various websites/services.
- has asked both my wife and myself whether or not iPads/iPhones support Flash. I don't know where he got the notion of Flash, but he knows it, and is keenly aware that iOS doesn't support it. I suspect his awareness comes from trying to use online games he's used on an OSX device, on an iOS device
- can easily search (google obviously) and understands how to juggle keywords to get the results he wants.

Our Daughter
- her device interaction is iOS/touch-screen only. she can't really drive a laptop yet. she can do anything I can do on the device.
- exclusively uses an app called kidtube on the iPad. it's verticalized videos that are kid appropriate from youtube.
- plays games on the iPhone

Thursday, September 30, 2010

Decline of Tweet Density?

After seeing a threaded tweet conversation for the first time the other day (something both Twitter for iPhone, and #newtwitter support), the impact of lacking threads hit me. For years we've been replying to tweets without much prior context. Each tweet has had to stand alone, and that caused us to pack an intense amount of info into 140 characters. Quipy communicators thrive on Twitter, however more contextual communicators have been supressed.

The result is that Twitter timelines have become bursts of disconnected expression, rather than a more traditional communication stream. Threaded message UI allows the platform to take on new communication meaning. We can now see connected conversation context when consuming our timelines.

While this is great from one perspective, I wonder if it will water down the overall signal of Twitter. Here are some before and after examples.

Before
Joe - "This hotel lobby is beautiful... one of the nicest I've ever seen."
Jane - "Hoping to have a fun time tonight. It's so good to have friends in town."

After
Joe - "This hotel lobby is beautiful... one of the nicest I've ever seen."
Jane - "@joe, agreed isn't it nice."

Notice that without convenient threaded UI, Jane's Tweet in the "after" case doesn't stand alone very well. It needs the context of the prior Tweet to have meaning.

I suspect this means all Twitter clients are going to have to support threaded conversations soon, otherwise the user base will lose interest in watching shallow, context free, tweets fly by.

Tuesday, September 28, 2010

Cross-training & Travel

A few weeks ago I was jogging on a treadmill in a hotel and a light bulb went off. Why was I running a drab hotel workout room, when I had beautiful San Francisco right outside my door? I hopped off the treadmill and ran outside. A few days later I ponied up for proper running shoes, shorts and shirt. I've been running a few times a week ever since, and I'm loving it. I've been riding my mountain bike hard for a couple of decades, and it's still the love of my athletic life, but I must say I'm enjoying a new kind of exercise. I travel a fair amount, so exercise is critical else I fall victim to stagnation on the road. Big meals, confined spaces are not conducive to good life.

A huge upside is that I can run anywhere in the world without having to deal with a lot of equipment, or workout room roulette at a hotel (does the hotel have one, is it full???). Running gear fits simply into my already small travel bag. I'm really glad I've found a portable way to move my body and work my lungs.

Onto the physics and biology. My body had become accustomed to biking. All of my muscles and joints had figured out the movement of the bike, and everything just settled in about ten years ago. The result was my chest and stomach got lazy, while my legs and arms got solid. Running is mixing all of that up again, and I'm psyched. While it's not as good as focused anaerobic exercise on my chest and stomach, they're at least engaged when I run. I'm finding running to be more of a dense exercise. I burn calories at about a 33% increased rate which is cool, and I suspect the result of not ever "coasting downhill" as one does when biking; it's non-stop.

The first several runs left me with some hip and back-of-the-knee pain, but that has subsided and I suspect was simply my body getting used to new, jarring, movement. Here's to a more cross-trained exercise regimen!

Monday, August 30, 2010

Exits; You're Doing It Right

When it comes to startups, the notion of "exit" is key. You take big risks, often with high dollar amounts of other people's money, and as a result, everyone wants big returns ("exits"). The old exit path (now just a statistical anomaly) was going public (the quintessential use of other people's money); but the IPO market has dried up. IPOs have been traded for acquisition as the next big exit vehicle. As we all know, acquisitions are 50/50 at the end of the day. They can provide good liquidation for folks in the acquired firm (and associated financiers), but from a longevity standpoint, they're track records aren't great. Over the past year, there have been two great exits/acquisitions for a couple of TechStars Boulder firms. While the dollar amounts might not be where we all dream, the downstream effects of these transactions are admirable.

Occipital
Occipital sold off one of its products (not the team... not the company mind you) to eBay, just a few months ago. What's awesome about this is that the team stands independent. They continue to churn out cool products, with their own culture, on their terms. Spinning out a single product for sale is brilliant (and relatively rare); well done guys.

Filtrbox
Filtrbox sold itself to Jive Software at the beginning of the year. I was a bit skeptical where this would wind up, but I've watched Jive pour resources into Filtrbox, and solidify their offering around Filtrbox's core competencies; so cool to watch.

All right in Boulder's backyard.

Go TechStars! Go smart people!

Sunday, August 22, 2010

Feelin' It In Boulder

In the "counting my blessings" category, I've been trying to build a blog post about things I'm super excited about these days. That's resulted in delay, so instead I'm just going to do a random splattering of bullets.
  • Mountains - This morning I took my daughter up to the same bouldering problem I was taught on; "Monkey Traverse" off Flagstatff. It's so epic that I drove 10 mins from our house to have this experience with my child. Not a day goes by that I don't look West and think "beautiful." I try hard as a parent to instill in my kids not to take where we live for granted. I'm generally failing AFAICT, but I'm determined to have them understand and enjoy it the way I do.
  • Smart People - "we like our bubble." Dealing w/ a relatively small amount of ignorance day-to-day is a good thing. From political to computer science, I love being surrounded by brain power. And for those that view Boulder as a left-wing haven, while we tilt the voting scale that way, there is a lot of hard-core right-wing'ing here (if that's your thing).
  • Weather - While the transitions from Summer to Winter, and Winter to Summer often are blips on the calendar, they're intense, and I _love_ the variability.
  • Entrepreneurship - Growing up here, in a bubble within a bubble (Boulder Country Club was my social/sporting experience as a child), I was surrounded by it. Back in the 70/80's it manifested itself as storage, hardware, bio-tech, and natural foods. I'm grateful that we've evolved to include software (my passion).
  • Family - All of my immediate family is here (as is my wife's).
  • Environmental Awareness (at a community level). From car-shares, to recycling, to alternative energies, I love the progressive day-to-day here. I feel like status-quo in 30 years will have its roots in Boulder life. That said I do have a bone to pick with the current state of consumables disposal.
Happy.

Thursday, August 19, 2010

Luncheon with Jared Polis

Photo by Todd Vernon

I was lucky enough, and honored, to be a part of a luncheon in Boulder today with Congressman Jared Polis, and a great sample of Boulder's startup community. There were roughly 30 of us around a table at the staple "The Kitchen" restaurant. 20 entrepreneurs (~10 from software firms, and ~10 from bio/pharma (a few "other")), 7 Venture Capitalists, and 3 associated with Congressman Polis. Five things struck me.
  1. The amount of regulation (accounting, quality, approval, testing, manufacturing, etc) around bio/pharma dominated the conversation, and it was clear we weren't even touching the tip of the iceberg.
  2. The relative lack of regulation around software led to near silence among the software crew. There are a few key issues (e.g. StartupVisa), but otherwise at a federal level, things are relatively peachy. A few of my software buddies and I looked at eachother during the conversation with a look of "yikes, I'm glad I don't have to worry about *that*" on our faces.
  3. A U.S. Representative's ability, or lack-thereof, to triage incoming information will make or break them. I was astounded at Congressman Polis' ability listen, digest, and engage on a truly random set of complex topics; on the fly. Talk about being "on!"
  4. "Women in technology initiatives" aren't really about "equal opportunity," they're about finding another source of talent to fuel an industry. Computer science is dominated by men. So much so, that if the industry is going to have enough "man" power, it's going to need the opposite sex to fuel the workforce. Women building tanks and airplanes in factories during WWII is an analogy that comes to mind.
  5. My mother would have been beside herself at the informality around dining etiquette. We ate roughly as we were served, instead of waiting for everyone to have their plate. Our host, Kyle Lefkoff (of Boulder Ventures), said it was ok mom; in case you're reading this.
The dichotomy between #1 and #2 had me thinking... why? Software isn't physical, nearly all other industries are. As a result, the essence of a product is intangible. Physical goods based industries (e.g. bio/pharma) produce something physical, with physical impact, and that took physical goods to produce. Something gets shipped over borders (customs/tariffs are related to the physicality of the good). Something can be counted. Something can be physically examined. Software on the other-hand is relatively complex, and often its value is simply polymorphic in nature. Software is a relatively new industry, and perhaps we'll see it "over regulated" in the years to come, but I thought the degree to which the "other guys" in the room were dealing w/ regulation to be rather intense.

A final thing that struck me was something everyone in the room had in common, entrepreneurship. No matter what regulatory morass, technical challenge, or combination of the two, lay in front of us, everyone in the room had a disposition to figure out how to succeed despite the circumstances.

Saturday, August 7, 2010

Ambient Intimacy: Humans & Machines


I used to scoff every time I'd see a group of kids walking down the street talking/texting on their mobiles. How could they consider themselves friends when they're not even communicating with each other!?! However, I've found that my own addiction (as well as those of my immediate family members, to variable degree) to little machines hasn't led to the demise of my relationships (from my point-of-view at least). In fact, in some ways I'm closer to those around me than I ever have been. I have a theory around this. When our intellect is focused on/in the machine, our instinct regarding those physically around us kicks in, starts reading cues, and takes over our physical expression without our intellect getting in the way. Put another way, when I'm focused on a task, I don't have time to over analyze the relationships playing out around me. Those relationships either innately work, or they do not.

If I'm in a room with people who fundamentally aren't compatible with me, and I'm busy on a device, on a subconscious level I'll reject them over time, and spend less and less time with those people (or person). Without the device, my consciousness is on the front-line of engagement with others, and we all know how messy things get when we sometimes over-think things. We justify bad relationships, we talk past each other, we rationalize things we shouldn't, etc.

I've always considered whether or not you can sit with someone else in a car on a long drive, and not say a word for miles, as a good judge of compatibility. If either party is compelled to fill the dead air with words simply "because," then things are probably weird on some other level.

I'm not suggesting intellectual communication is bad; far from it. Without it, we'd lack storytelling, much/most education, most relationships would never start, debate couldn't happen, decisions couldn't be made; life and evolution couldn't happen. I am however saying that we're not going to spontaneously combust because the network penetrates further and further into our lives.

As a parent of two children under 8 years of age, I grapple with what is "too much" use of something digital (books, movies, shows, music, games, youtube, email). In my house you're not allowed to bring machines to the table for a meal (when we're eating at home; restaurants are excepted). You're not allowed to fall asleep with a machine. If someone wants your undivided attention, you give it to them immediately (pausing whatever you're consuming/playing with), without hesitation. That latter rule is important to me. The moment one is unable to intellectually/instinctually switch from non-human, to human interaction, we're in trouble.

In this post I've consciously avoided the whole debate around the use of radio waves to keep all our little machines aptly connected to the network, and whether that's good or bad for civilization at the end of the day. That's another post.

Embrace and adapt. In the words of Bob Dylan, "the times they are a changin'."

Monday, July 12, 2010

TimeBridge and Behavioral Change

Users rarely, if ever, change behavior. It takes unprecedented genius or beneficial workflow changes to get us to change our ways. We're lazy... bottom line.

A service called TimeBridge/meetwith.me changed my behavior. I use it religiously now. What's surprising to me is that the service touches the "third rail" of scheduling/calendar products which are notoriously messy and hard to get anything right with. TimeBridge says they "make it easy for others to schedule meetings with you" and incredibly, they deliver on that promise, when hundreds before them have failed miserably. How did they do it?
  1. Setup for you is pretty easy. The site's not perfect, and there were bugs in app/screen flow, but it amounts to wiring their app up with your calendar app (Google Calendar for me). You'll be using a calendar app that either "works" or "doesn't." If you fall into the latter category, cut bait and pretent TimeBridge doesn't exist.
  2. Setup for people trying to schedule time with you is... well... there really isn't any, and this is the critical piece. There have been plenty of apps promising to make scheduling easy, but they've all required everyone in the workflow to go through a mess of setup. Guess, what, someone scheduling time with me has never heard of TimeBridge, and certainly isn't going to go through any setup with it in order to schedule time with me. So, they've solved this by not requiring any setup for the ppl trying to get on your schedule.
Some of the flows are buggy or a little unclear, so there's lots of room for refinement, but the use case that matters is absolutely nailed. Well done guys. I'm impressed.

Friday, June 25, 2010

Ignite Boulder: Morning After

Last night's Ignite Boulder was one of the better ones. It was the first held at Chautauqua's auditorium which is a great venue; though the audio was a bit off for the sparks (music sounded solid). I hope Andrew sticks with Chautauqua as a venue going forward (at least in the nice Spring/Summer months), it was nice to chill at the park before/after the event.

With increased popularity, the content feels like its starting to water down a bit. I want the edge back! Where's the heckling anymore?!? I do my part, but more often than not the ppl around me don't get it. The perils of mass mediaization; I wonder if you can ever get away from it en masse. If anyone can figure out the mix it's Andrew though.

A few of the talks struck me as particularly bad, and a few as particularly good. Some thoughts on the good ones.

Josh Fraser's talk on fear
Reminded me of Bowling for Columbine. We live in a culture of fear, and it's sad. Statistically everything's always going to be alright, yet we live with irrational fears that dramatically affect our behaviors. Why we do this is always a good question, and Josh got the numbers out there in front of us to laugh at. Nicely done.

Ryan's talk on selfishness
Should you be selfless or selfish? I've always lived my life as a selfish bastard, so I felt a little vindicated w/ this talk. Ryan's one of those rarities in life. Incredible ability to put the core of his being out there in front of everyone, and not in a lame way, rather in a way you connect with; he has true creative genius. Favorite line of the night [paraphrase/butcher]: "while trying to be selfless in trying to be what the one I love[d] wanted, I turned into something she didn't love at all because I lost my selfishness."

Ceci Ervin's talk on a trip to Poland for a surgical procedure to help/cure MS (which she has).
I'm not a sympathy vote kinda guy (back to that selfish thing), but she presented her quest in such a way that the faith and bravery simply tore through the screen and into the audience. Unbelievable journey with a happy ending. This kind of insight always makes me feel weak and useless, which then drives me to be more. Thanks for the perspective Ceci.

Sunday, June 13, 2010

Can Google's Native Client SDK Fix The Web?

Modern life owes much to the Internet. Many proverbial thanks are due to the inventors at CERN (incl. Tim Burner's Lee) and to Netscape (Jim Clark; the money. Founding engineers; the know-how) for making it accessible to all of us. A recent visit to Google's Boulder, CO office brought back that aching question for me though; is this all the Internet has to offer?

What if it never happened?
Would traditional client-server computing have been able to push network infrastructure (modems, hard-wire networks, wireless-networks, fiber, satellite) as far as the graphical browser has? If we had given it the years that the Internet's had, would we have skipped over and evolved past all the advertising, porn, and shopping that has become our network? I have to wonder if we have simply over-sold/hyped ourselves over the past decade, and subsequently distracted ourselves from the end-goal; better overall human computer interaction. The web is a complete UI/UX disaster, and has severely stunted HCI (Human Computer Interaction) efforts that can only come to fruition with deep driver/hardware bindings (e.g. Oblong - a firm you've never heard of that has the potential to change everything). We're still wallowing around inside web pages, building applications that have awful authentication/authorization models (how many usernames and passwords do you have?), and HTML5 is our latest savior?!? Please.

Getting Serious (again)
My recent conversation in the Google cafeteria challenged some base assumptions that I, and most of my colleagues, make; namely that web-apps are "it." That lunch discussion is well represented in a talk two of the key engineers gave at Google I/O 2010; Programming the web with Native Client SDK". When we were talking, what was initially described to me was something I could neatly, and conveniently, fit into today's browser plugin APIs. "Why not just use NPAPI; why re-invent the wheel?" I asked. I got a response that only someone with the know-how, and the resources could give; "because this [web as we know it] can't be it." I left skeptical, but it's been a month or so, and I'm there.

We'd be nowhere without the tubes that have been built. From a gazzillion miles of various types of cable/wire being laid all over the world, to IP/HTTP ubiquity. However, consider them a simple, yet crucial, layer in the client-server software model stack. Sure it's taken us 15 years to build it, but what if you chalk it up as "done." What's the next layer in the cake diagram that you'd pursue?

If we'd had this layer complete 15 years ago, the kings of client-server software at the time (Microsoft and IBM) could have started building highly distributed applications then, as opposed to trying to do so now (IBM quite successfully in more of an industry consultancy role, and MSFT arguably flat out failing at it). With Native Client, Google is trying to answer the question of what should software look like now that the connectivity layer is "done?" It's a cool question if you think about it and are able to extract yourself for a moment from our day-to-day web-app construction, and browser engineering realities; we have a hard time seeing the forrest from the trees.

It has a very long way to go, but a new way of executing "native" code through our "tubes" could open the door to a new generation of software. One that can harness the power of our hardware and the most important part of the Internet, namely the "tubes." While a train-wreck, recall the confines Microsoft tried to break out of with Microsoft Bob; knocking down the four walls of the traditional rectangle window managers that none of us exists without. Imagine networked software that can talk to your hardware to obtain identity information (something that requires a hardware component; you). These are things that we shouldn't be dreaming about, they should just be.

While Google's Native Client SDK goals seem audacious, they are also admirable, and if there's one company out there right now that has the power to pull something like this off, Google's it. Good luck.

Monday, June 7, 2010

Development Process

Tonight I was asked some high-level questions about development process. I wound up responding w/ enough material that I thought I'd share the thoughts here for broader consumption.

Hey guys,
Please feel free to ignore this email but I'd extremely appreciate some advice if you have a couple of minutes. I am trying to compare best practices for teams over 10 programmers to determine what software development methodology has been the most productive for your company but at the same most fun for your team. If you have time I'd appreciate answers to the following:

1) Software Development Process used (i.e. Scrum, XP, custom)
"agile" (no scrum)... weekly iterations/sprints (no standup). have driven/done xp (pair programming mix) as well; I'd only go this (xp/pairing) route again if I were in a more supportive ecosystem (e.g. SF).

2) Do you track # of hours programmers work in a project?
never. bad idea IMO.

3) Do you have a QA team, if so how many?
no. though I've considered one or two QA folks... it'd definitely be nice to objectively do white/black box testing outside of dev. we're pretty close to TDD, so we've convinced ourselves we "don't need it." I go back and forth.

4) How often is your release cycle?
we deliver code to production once a week.

5) Who is allowed to deploy code into production?
we rotate who does the deploy (everyone on the team, including me, is capable of doing it). we run a shared responsibilty/exposure shop in order to reduce/eliminate the "john's the only one who knows that code/process" scenarios. my general philosophy here is if you're not hiring engineers that you don't trust well enough to do a deploy... you're liking hiring the wrong folks.

6) What project management tools do you use?
http://pivotaltracker.com . in the spirit of agile... we're very light on process/tools. never document something in more than one place (e.g. in the "story"), and even then be light.

7) How accurate are your release predictions?
eh. having tried (as mgr and individual contributor) everything under the sun... I no longer believe numbers folks toss out ("we're 90% on time" etc). I've found everyone's (mine included) numbers are BS, and if you dig into what actually transpired after the release... enough corners were cut, enough brilliant engineering ideas employed, and enough requirements were relaxed during the release cycle, that you never end up with what you started with anyway, so the A to B comparison and judgement of "on-time" is never valid. your mileage will vary though. it all comes down to the "unit"... the "team"... their cohesiveness, experience working together and trustworthiness amongst eachother. that said, if you handed me a green teem of folks that never worked together, I'd drive it agile-style with one to two week iterations/sprits (and production deploy) cycles with goal-level commitments (e.g. team committing to having x y and z done by date 'a'... and working as hard as they can to meet that commitment).

Sunday, May 23, 2010

I'm Done Recycling...

... at cafe's at least; sorry. I thought this get here, but after years of recycling I'm fed up. At home I can control the separation between compost, mixed materials, and trash/landfill. But... cafe's had made it impossible to recycle or compost anymore. Some provide compostable straws/lids/cups/napkins, but some don't; telling the difference between the two is all but impossible. The end result... I don't spend the extra 30 seconds it takes to figure it all out.

To further complicate things, everyone has their own cute recycle station with paragraphs describing what to put in which of the, at least three, bins. Guess what, I just hunt for the trash/landfill bin so I don't have to hurt my little brain by figuring out what is in my hand, and which bin it should go in.

I started recycling and composting long before it became popular/trendy, and have voted for every legislative measure to promote recycling over the past couple of decades I've been able to vote over. However, I hate to say it, the regulations around what can go where have turned me off. Humans are generally lazy and dumb. American's (of which I am one) like to throw unbelievable amounts of things away. Combine the two with today's recycling measures and I predict we're taking a step backward.

Once fairly clean recycle streams are now polluted with materials that don't mix and the energy it takes to clean the stream counters the benefits of recycling at all. Here's a decent writeup on the stream problem, and plenty have been written about Boulder County as well.

We need to mandate the production of compostable materials (cups, straws, bowls, forks, spoons, knives, etc) so, as consumers, we don't have to think about what we're about to "throw away." This should all be easy.

Sunday, May 9, 2010

Take 2: Amazon S3 file deletion FAIL

The S3 bucket key deletion saga continues. I had two Ec2 XL instances running 24/7 for about a month, running ~150 parallelized DELETE requests on s3 bucket keys (each machine), and dented my S3 usage by only 10%. I spent ~$1,500 (money went to Amazon obviously) on those dedicated XL instances in the process, while only reducing my S3 bill by ~10%, and that doesn't include the operational/engineering overhead to manage the deletion software/machines.

I'm left with only one option to wipe out the data on S3 that I don't need anymore; closing my Amazon account, and opening a new one. While I have high hopes that I'll be able to use the same keys/tokens/secrets in the new account, I'm doubtful. Thus, I'll incur several thousand more dollars re-wiring Gnip's vast network of machines, and RightScale, to work w/ the new account.

Lesson here is that you have to be very conscious when dealing with very large data sets on Amazon's S3.

Thursday, April 15, 2010

Twitter's Ad Model; It's All In The Fraud Baby

It's taken Twitter a long time to get where they are, and knowing some of their backstory has made watching the journey from the outside quite entertaining. A few things haven't changed: Biz pontificates and paints the "Twitter is a triumph of humanity" picture (exceedingly well I might add), Ev leads the flock with jagged thinking & speaking, and Dick is the one saying "no guys, really, we need to focus and make some money, here's how we're going to try to do it; no more goofing off." Ryan Sarver has his head squarely around the outward facing platform implementation and needs; he's an asset. Jason Goldman... I still can't figure him out.

On Making Money
Dick's pitch was pretty good. The idea is that tweets themselves are the commodity. Rather than some new model in the system, e.g. a formal "ad," the Tweet structure as we know and love it today, will be the item that is bought/sold. "Promoted" tweets, as Dick kept referring to them as, will float to the top of distilled tweet pages (like search, or top tweets, or trending topics, etc). The "float" algorithm will be affected by 1) whether or not someone's paid for a tweet to float up and 2) whether or not it resonates with users. #1 is obvious and will result in a marketplace for pricing/bidding/buying/selling (ala Google's ad model). #2 isn't as simple (not that the former is simple to begin with).

Resonating
I argue that the dirty little secret on the network today is that current ad models on the web are a sham; a house of cards. We've all made plenty of money on the backs of click fraud, and it'll eventually collapse. Twitter's trying to "do it right" by influencing a promoted tweet's visibility based on whether or not a promoted tweet resonates with users. Whatever your platform, when money's involved, it gets gamed. Whether it's bots doing re-tweeting, clicking, forwarding, generating, whatever, the bots will do their thing. When bots can't do it, cheap humans will be employed to do the machine's bidding.

"If a promoted tweet doesn't resonate, it will go offline." That statement was spewed, in one form or another, over and over again by the Twitter crew. I love the idea as a user, but if Google had squashed ads that weren't resonating with users, they never would have had a business to begin with (and arguably they wouldn't have one now if they moved to this glorious idea). It's all in the fraud baby.

The chicken and egg problem Twitter faces with an ad model is that you need many producers to build a marketplace, yet you need the marketplace to draw the producers. If you do the righteous thing and only display ads that resonate with users, guess what, you won't have many ads to show. Though users would benefit, ad prices would be so high (both in cost and quality) that not many people will pay for them. As a result, resonance is de-emphasized in order to stoke the overall marketplace.

Traditional Internet ad models are fairly simple pyramids folks... the bottom many subsidize the top. Both in terms of quantity, in order for the marketplace to exist, and the dollars.

The picture Dick painted was a pretty one. As an end-user, the notion of only being exposed to "resonating ads" (errr "promoted tweets") is a treat. I hope Twitter can change Internet ad history and actually pull it off.

Saturday, March 20, 2010

Get A Job! At Walmart.

This post inspired by a conversation I had with my mother this morning.

My mom has been self-employed for decades via a small business she runs. Unfortunately her industry has been all but obliterated by the usual "faster/cheaper" competitive model. She refuses to acknowledge that the American consumer is driven almost exclusively by money. She longs for, as do I, altruistic motives on the consumer's part, and moral high-ground. Specifically she's saddened by the decimation of local (state and smaller) government tax revenues, and the fact that consumers choose cheaper products over her more expensive, higher-quality, products.

The conversation led to "buy local" as the solution to the problem. While I generally agree, and do buy local all the time (spending more than many of my peers do; for better and worse), I realized long ago that a perspective counter to the one I'm surrounded by is significant. Namely, if you want to really affect global change, go work for Walmart.

Activists constantly fight "the man" in the form of Walmart, when in fact what they should do is go work for Walmart, and change things from the inside. Identifying processes that save Walmart money, and implementing them, will have more reach than me diligently buying produce at my local farmer's market ever will. For some perspective, checkout some generally recognized facts about Walmart, the largest company in the world.

When Walmart says "jump" every one of its vendors says "how high." If Walmart said "go green" every one of its vendors would do so overnight. Go figure out how to get Walmart to say "go green" or "create local, high-paying, jobs."

Oh yea, and if you don't like what Walmart does to your local economy, don't shop there.

Wednesday, March 17, 2010

Amazon S3 file deletion FAIL

I'm a huge fan of Ec2 and S3 offerings from Amazon; they're the future. However, there's a severe deficiency in the S3 API; when you need to delete billions of files, the API breaks down. While there are batch operations, they don't handle enough keys to be of use when dealing with very large file counts, and enough requests are made over the long duration (days) of running your script, that expected errors wind up crapping out the whole process. Rinse-repeat doesn't work when the mean-time-between-failure is on the order of days.

Yes, I'm running the operations on an Ec2 instance. Yes, I'm using the almighty s3sync.

Amazon, you're printing money with AWS, please open up the deletion API so ppl can better manage their files. The current API's inability to a) delete non-empty buckets, and b) handle larger batch requests, feels a lot like greedy "lock-in."

Sunday, March 7, 2010

Fast & Slow

Pondering the meaning of life while bombing down Poorman the other day on my mountain bike, I realized the two things that have had the most impact on my two my favorite activities (coding and mtn. biking) serve two radically different purposes.

Disk Brakes. I got my first set (Hope manufactured) just last year. I'm a late adopter on the bike equipment front. The slowing/stopping power of these has totally changed how I ride.

Solid State Drives. I've been using these since they came to market. I'm an early adopter on the computer junk. The I/O speed of these things has totally changed how fast I can build & run tests.

It's the little things.

Tuesday, February 16, 2010

Multi-level Single Table Inheritance (STI) in Rails

This took me more than one attempt to get right, so I thought I'd blat it out in a blog post in case anyone else has been struggling with it. In the end, the implementation matches your intuition, but getting the sub-classing syntax right took a few tries (undoubtedly due to my relative newness to Rails/Ruby).

Why would you want multi-level STI? When you're using multiple inheritance (class_c inherits from class_b and class_b inherits from class_a) and you want that relationship maintained through ActiveRecord; that's when.

Take the following three classes for example:

/app/model/a/class_a.rb
class A
def method_a
"a"
end
end

/app/model/a/class_b.rb (yes, I mean dir 'a'. class_b.rb is a peer of class_a.rb)
class A::B < A
def method_b
"b"
end
end

class A::B::C < A::B
def method_c
"c"
end
end


Notice the explicit class hierarchy notation. Without this, I can't get the multi-level relationship maintained through STI.

From here, you can merrily create the class through ActiveRecord, assuming you have an existing table for the base class (which includes the 'type' column (where AR stashes the class hierarchy/name information for subsequent instanciations), and use all the methods.


A::B::C.create!
...
c = A.first
c.method_a => 'a'
c.method_b => 'b'
c.method_c => 'c'

Friday, February 5, 2010

Google Chrome for Mac

I spent the past few days with Google Chrome for Mac as my default browser on my primary machine. I tweeted some notes about the experience if you're interested in the details.

I've reverted my default back to Firefox (3.6) however because of page incompatibility (rendering, JS execution, and lacking plugin support) issues I just don't have time to workaround with a new browser.

What I did like about the experience however were the DNS pre-caching optimizations that Google incorporated, and how child-tabs were handled; nice work!

Building a browser is hard. Good luck Google.

Wednesday, January 20, 2010

Does Browser HTML5 Support Matter?

A few weeks ago I watched a saddening interview that a Google guy conducted in NYC; What is a Browser? It was sad because effectively no-one even knows what a browser is. The neat thing about that fact though is that the browser is so ubiquitous that people don't even know it exists.

The other day a co-worker and I were talking about whether or not HTML5 stuff matters anymore. Did Flash get enough market coverage to own "rich" client-side-software forevermore? Will content developers use HTML5 stuff? Are content developers relevant anymore? These are the kinds of questions that came up in the conversation. Here's my perspective.

Flash
It's done a lot for us (thanks Macromedia), but it's still too proprietary and takes too much tooling to do anything interesting with it. Furthermore, video quality (at least what the industry has adopted) is pathetic, and in a world wherein video is becoming more and more relevant (thanks to ease of production of HD content, as well as increasing bandwidth), it's not going to cut it much longer. There's a quarter-ton of Flash content out there though (e.g. YouTube), so, in some capacity, it's here to stay for a long time.

Content Developers
HTML5 exposes some incredible functionality at the JS/HTML/DOM levels. However, while the erosion of the plugin API walls allows for a more fluid/native/stable browsing experience, today's Content Developers aren't going to be able to leverage most of the features directly. Relatively complex programming concepts are making their way up the stack which is great (un-chain the beast!), but the Content Developer brains out there aren't going to map 1-to-1 with the skill-set it takes to harness the beast's strength. New tool chains (ala Macromedia/Adobe app suites) will have to emerge in order to allow today's Content Devs/shops to build using most of the new features.

Put another way, the folks I know leveraging , web sockets, & new local storage interfaces in interesting ways are heavy hitting engineers. Convenience libs will evolve however, and the masses will be able to leverage the new features in the end. It'll just take some time.

Will the features get used? Or, if they build it, will developers come?
HTML5 implementations will yield the most significant browser innovation in a long time, but who's pushing for the changes to begin with? Google for one. Last year's Google I/O conference was a HTML5 circus; I was shocked. I'm stoked Google's pushing hard on HTML5 content/app creation, and apparently betting their entire app strategy on it. I'm still perplexed by Chrome though, and am convinced they're using it simply to stoke Mozilla into building all the right features into Firefox, at which point they kill Chrome. Firefox will do the right thing, of course, w/ HTML5; they're pushed by community & Google. Apple's still off in the weeds with Safari/WebKit; I hope they do the right thing w/ HTML5, but don't really care (other than insofar as it affects my iPhone browsing experience). Microsoft... who cares (other than enterprise which has billions invested in a toolchain that won't adopt HTML5 stuff anytime soon); they're irrelevant in my world anymore.

So, if you resolve that the browsers will provide "good HTML5" support, who will predominately use the features? Will today's content dev shops announce to their clients that they support "HTML5" and build to it? Or will it be the firms building the browsers themselves (e.g. Google) that have vested application advancement interest?

Ten years ago I would have said the developers would dictate and bring about the changes. Today... not so much. If HTML5 goes anywhere in today's world, it will be because the big guys pushed it, promoted it, and built to it. The world has changed in this regard.

What is "good HTML5 support?"
The stuff that matters, and why, in HTML5 follows.
  • . we haven't been able to natively draw yet. c'mon.
  • offline data storage/caching. use gmail on an iPhone to see how powerful this is. you can't build apps without state. you can't build real apps without persistent state. offline data storage will bridge a huge gap between "online" apps and "desktop" apps.
  • web sockets. this feature has the most potential; both to do evil and good. apps being bound to obfuscated HTTP interactions has been extremely limiting to the content/web-app dev tier, so opening connections up to the page/JS will be powerful. However, the thought of some of the folks who build web-apps having access to a socket also gives me chills.