12
Apr 10

The Dangers of Building on Someone Else’s Platform

Sometimes we hear about how M&A is the new R&D.

Sometimes I wonder if Embrace & Extend is the new R&D.

A lot of startup business models involve building products that fill gaps in existing platforms. There is absolutely nothing wrong with that, and there have been a few success stories. But if you don’t own the platform, or if you aren’t wildly successful at filling the gap you’re taking a really big risk.

If you fill a gap in someone elses platform and you are moderately successful, then it means there is demand. You have done a fantastic job of demonstrating peoples willingness to pay for something. Twitter needed search functionality and acquired the company that was doing that, but instead of buying an existing control panel, Amazon just built their own. There isn’t a reason why the platform itself will buy you rather than implement the features you’ve spent all your time building.

The issue seems to be the massive amounts of startups going after ‘low hanging fruit’. It’s one thing to be lean and get a product out the door, but it’s entirely another to be able to sustain your market for any reasonable amount of time. Perhaps one of the issues with the low hanging fruit, is that they are problems which are (relatively) easily solved, but the market hasn’t been proven, or a set of ‘best practices’ has not yet been established.

The new model for services & platform companies (which includes companies like Twitter and Apple) seems to be

1) Create an ecosystem
2) Let the ecosystem figure out what your product is and how its being used
3) Cannibalize the features your ecosystem created for you.

It goes without saying that if you want to solve an Easy problem then you’re going to have a lot of competition (link shorteners, anyone?), and your chances for acquisition are actually much much lower. If you’re trying to solve a Hard problem then you will have less competition but you have to be careful – if you build your solution using someone else’s platform, what’s to stop them from taking your idea and just using it themselves? Does your idea work better as a Feature in an existing product, or would stand on its own? There’s nothing wrong with being a feature, but it’s really important that you know the answer.


02
Apr 10

How to Live Forever

The other day I was speaking with an acquaintance who’s grandfather had recently passed away. Most people have trouble talking about the subject, and all while the subject is generally sad, this story had a an interesting twist.

You & Mii

A few months ago Susan* and her Grandfather were playing Wii. As every gamer knows, its not quite the same to play a Wii game without a Mii character. So Susan opted to create her Grandfather his very own avatar – at his discretion of course. After 30 minutes they’d perfected the essence of the man (playful in nature but I’m told had serious eyebrows).They then proceeded to bowl and golf in the usual fashion. They even managed a couple games of Tennis. All in all a great visit.

But Susans Grandfather got sick, and instead of getting better things got worse.

Dealing with the death of a loved one is difficult in most circumstances but this was particularily difficult for his family. The central figure in their family, he would often be the resolver of disputes, and the reason for their getting together. They attended the funeral grief stricken but mildly comforted by the understanding that a man with such a persistent sense of youth would no longer have to deal with the burdens of an ageing body.

A few weeks later Susans family was over for a relatives birthday. After catching up and eating dinner a few of them decided to fire up the Wii. To their amazement the character that kept popping up the most often was her Grandfather.

“It was as if he was still around, playing games with us”, she recalled.

“As if he would live forever.”

Perpetual Consciousness

If we could live forever what would that look like? While modern technologies may make it possible to sustain our bodies much longer than in the past, the fact is that our bodies are beautiful machines that eventually break down. Phillosophers and scientists have asked these same questions for quite a long time, and many movies and books have been based on the idea that a computer could actually contain your consciousness forever.

For technology extremists the moment that makes this possible is a predicted Rapture-like event dubbed The Singularity. The singularity is a point in the future where technology is able to make improved copies of itself. The concept is that once something smarter than a human can make copies of other ‘beings’ smarter than people then “all bets are off” – there is no way to predict what will happen beyond this point because anything can happen. The singularity is in effect a moment where a machine can actually be conscious, and could contain other consciousnesses.

What does this have to do with living forever? Many people suggest that we will be able to upload our consciousness into some ‘brain’ and in effect ‘live’ in a machine. Whether or not its possible is pretty tough to answer. The singularity, much like The Rapture or Alien Abduction, is one of those things that cannot be verified by the living.

Perhaps the experience of the living is the only element that we should really be concerned with. If the memory is almost as effective as the real thing then perhaps an avatar is enough to feel a presence.

For Susan and her family, her Grandfather was still very much a part of their lives – able to play tennis with them at the press of a button.


01
Apr 10

Sysadmins are Dead. Long live Devops!

You’re starting a company, or you’re managing and IT department.
Someone needs to keep the lights on, so you look to hire a Sysadmin, or a managed service provider (which is just a bunch of sysadmins paired with people who dont know how to speak Klingon)

Pause, and ask yourself the following question:

“Do I want a Sysadmin? Or do I want a Developer who knows how to be a Sysadmin?”

Turns out there are quite a few developers who also know how to do operations work and do so really effectively. The people who do this kind of work have had all sorts of titles: Systems Engineers, Systems Administrators, Unlucky Developers, Operations, etc.

You want someone who can automate backups, and testing of those backups in a way that removes themselves as bottlenecks. You want someone who can write the API you need for your developers to push code updates every single hour to QA and production, and do so in a reliable fashion (with rollback)

These are the people you want to hire.
Trust me.

The key question you have to ask yourself is this:
“How many people does it take to keep my operation up and running 24×7?”

A ‘decent’ sysadmin can handle more than 50 computers on their own
A ‘good’ sysadmin can handle more than 200
An ‘Awesome’ sysadmin can handle more than 1000.

The new name for this role is is ‘DevOps’ for Developer + Operations. They’re people who keep lights on, and ensure that you’ll keep the lights on if you get 1,000,000 customers tomorrow. The kind of people who will work themselves out of a job because they’ve automated *everything*. The kind of people who actually enjoy writing code that manages other computers. Yep. They actually exist.

Stop asking for what you think you want. There’s a whole other class of developer out there – begging for a challenge.


28
Mar 10

Consume Create Ratio

From the ‘Things that are neat to think about but hard to measure dept’

I’ve been trying this thing lately. Every single time I sit down at my computer, instead of running straight for a website or my email, I try and write something first. What got me thinking about this was a thought I had about how most people spend more time online than watching TV, but the majority of those people are still consuming information.

Take a look at sites like Digg, Reddit, Boingboing, Facebook, etc. You can throw up a few pictures and vote on a few stories but for the most part it’s like watching TV. You didn’t have to create anything to realize the value of those systems – you just had to ‘participate’ by going there.

So what if you could measure the amount of stuff you consumed, and the amount of stuff you created?

Then you could come up with a personal ratio. So lets say for every blog post I write I read 100 websites. That actually seems like a reasonable ratio to me. So my ratio is

1:100

But if you’re not in much of a writing mood for awhile, maybe you’ll read 1000 websites for every blog post

1:1000

Something like this would be cool to track, and I’d be really interested in seeing what the averages are.


google.load("language", "1"); var curstate = 0; var hasloaded = 0; function bnc_show_translated() { if (hasloaded == 0) { bnc_lang_callback(); hasloaded = 1; } for (i = 0; i < 0; i++) { var elem = $("bnc_original_" + i); if (elem) { if (curstate) { elem.show(); } else { elem.hide(); } } } for (i = 0; i < 0; i++) { var elem = $("bnc_trans_" + i); if (elem) { if (curstate) { elem.hide(); } else { elem.show(); } } } if (curstate) { $("bnc_trans_state1").show(); $("bnc_trans_state2").hide(); curstate = 0; } else { $("bnc_trans_state1").hide(); $("bnc_trans_state2").show(); curstate = 1; } } function bnc_detect_div(div_id) { var text = document.getElementById(div_id); if (text) { text = text.innerHTML; if (text.length > 0) { google.language.detect(text, function(result) { if (!result.error) { if (result.language != "en") { if (result.confidence > 0.25) { $("bnc_translating").show(); bnc_xlate_div(result.language, div_id, "en"); } } } } ); } } } function bnc_xlate_div(src_lang,div_id,o_lang) { var text = document.getElementById(div_id); if (text) { text = text.innerHTML; google.language.translate(text, src_lang, o_lang, function(result) { var translated = document.getElementById(div_id); if (result.translation) { translated.innerHTML = result.translation; } }); } } function bnc_lang_callback() { } function bnc_startup() { bnc_xlate_div("en", "bnc_translate_info", "en"); bnc_xlate_div("en", "bnc_translate_info2", "en"); } google.setOnLoadCallback(bnc_startup);