Archive for the ‘Technology Futures’ Category:


The Art of Being Invisible

Invisible Man

Recently Citrix commissioned a survey into the public perception of cloud computing and it went ever so slightly viral.  Which was presumably the intent – to get magazines and websites to publish articles which link Citrix with cloud computing, rather than actually to learn anything new about the cloud.  I have nothing against this – Citrix is a company that is a big player in the growing cloud, but anyone who hasn’t noticed this (and many haven’t) probably still consider them to be ‘Those metaframe people’ – so any PR that works is probably a good thing.

What I found out from watching this unfold was:

Not many people writing articles about surveys actually link to the original source

Even when I got to the original source, I wasn’t able to locate the survey people were give, or the responses to those questions – just the results, as digested by the company.  Which means I have absolutely no idea of the context in which to put the results.

Most people who actually reported on the article didn’t seem to care.  They pretty much parroted the press release data.  Again, as I would have expected – that seems to be what tech journalism is all about.  But it would be nice to see more people out there who get some interesting data and actually think about it – and its implications – before writing anything.

And finally, as the survey suggests:  Not many people know what cloud computing is.

Which isn’t a surprise, because it is a made up term which loosely describes a whole bunch of tech industry trends.  In short, I think we can safely say it comes from those vague technical drawings of infrastructure where you might draw a few data centers, each with a bunch of servers and storage inside, then link them by straight lines to a picture of a cloud – often with the words ‘The Internet’ inside to suggest the data centers were connected together via someone else’s infrastructure.  As people are increasingly hosting there technology on someone else’s infrastructure, rather than in bits of a datacenter maintain by company employees we say that technology is in the cloud.

The public don’t know about this.  And frankly they don’t care.

And also they shouldn’t.

My day job is developing a key part of the infrastructure for the cloud.  Without it big parts of what we call the cloud wouldn’t work – or at best would have to work in a very different and less good way.  You will almost certainly have used part of this product in some way today.  And you probably don’t even realise it, or care.  So why don’t I care that no-one knows about the cloud?  Why don’t I wish more people would love my work and sing its praises?

Because, if I do my job well, my work is invisible.  Every time you notice anything about my work, any time you worry that it exists in any way, shape, or form, you’re keeping me up at night because I’m not doing my job well.

I’ll give you an example:  Electricity.  To get electricity there are power stations, huge networks of wires, substations, transformers, all ending up at a plug socket in your house.  You don’t notice these.  You don’t care.  Unless – that is – it all stops working… or perhaps you have some technical problem like trying to run a 110 volt appliance in the UK.  If electricity wasn’t invisible – if we had to ring up and request enough power for our TV set to run, then we would care more – and enjoy our lives a little bit less.

Cloud computing is actually all about making computing into a utility, just like electricity.  It is about not having to worry about where servers are.  It is about not having to worry about where your data is.  Now, some people have to worry about electricity – if you’ve ever set up a data center, you’ll know that you need to start caring about all sorts of issues which don’t worry the home owner.  Similarly, if you work in the IT industry, you’ll have all sorts of worries about aspects of CLoud computing which end users simply shouldn’t ever have to care about.

So if you ask a man in the street about the cloud – he should remain more worried about the sort of cloud which rains on him.  And, to determine how worried he should be, he’ll probably ask Siri on his iPhone.  And not care about how Siri takes his voice input, and uses vast numbers of computers to respond to it with data generated by metrological offices who process big data over vast grids of computers.  He won’t worry about anything which goes in between, and more than he worries about how to charge is iPhone when he gets home.

Consumers already have their heads in the cloud.  They don’t realise it.  and they don’t care.  because they are already used to it.  To them the cloud isn’t anything new, its just how things are these days.  As for companies and programmers – we need to make the cloud less and less obvious, less and less difficult.  One shouldn’t need to think about doing something in the cloud, because that should be the easiest way to do things.  We have to take the blocks of code we put together, and make them blocks which work across the cloud as seamlessly as they currently work across CPU cores.  We need to stop thinking in terms of individual computers and individual locations – and those of us who build the code need to make it easier and easier to do this.

We are already on our way.  But would I want to be the number one clod computing company?  No, I would want to be the number one computing company – because once everyone is in the cloud, the cloud vanishes, and we ar back playing the same game we always played.

 

Rethinking Social Media : A Self-Contradictory Opinion

Stamp US 1977 2c Americana

Should the USA nationalize Facebook?  Um, no.

To be more specific, aside from it being the USA – a country which tends to believe in the market doing a better job of looking after people’s interests than the government – there are any number of reasons why you don’t want a state running a social network.  A good example would be “People from other states use it too”.

Should any other country nationalize Facebook?  Still no.  If you can explain why having a public social network is more important than good public transport, or good public healthcare, or good public education, you are a better person than me.  No wait, you are a far worse person than me, and you don’t deserve to have an opinion on anything.  Go away.

But the article makes a good point that it would be nice to have a trusted social network – one that would support people in countries where they don’t have freedom of speech.  Of course, no government would do this, because it would either involve being seen as siding with enemies of states you might want to still pretend to be friendly with, or it would involve coming up with a system which would be as useful to enemies of your own state.  The terrorists would have already won (even if all they won at was Mafia wars… which presumably some of them would be quite good at.)

However governments are not usually the protectors of free speech.  In general they tend to protect ‘the sort of speech we want, but not that other speech which tends towards the nasty and evil’.  To protect free speech, I would look instead towards various charities – the Amnestys, and EFFs and CPJs of the world.

And, in thinking of those charities, it occurs to me:

Would there not be some place in the world for a ‘free speech social network’, supported by a non-profit foundation, and presumably grants from both right on for-profit organisations and charities of the sort I’ve described before?

Here is my thinking – if I were to set up this sort of social network, it would have to have the following characteristics:

It would have to compete head to head with Facebook and Twitter and whoever else.  You want this network to be the place everyone goes to, the place everyone knows about – because you don’t just want freedom of speech for specially equipped activists, you want freedom of speech for absolutely everyone.  You want it to be easy and safe to say what you want as and when and why you want.

Because people wish to shut down free speech, and because there is no legislature that could be trusted with protecting a free speech social network, it would have to be distributed.  In saying that, I worry too much that I’m contradicting what I have previously said about social networks not needing to be distributed.  I would like, if I may, to plead a technicality:  There would be a core site for the social network (or perhaps a core site in each country).  All the sites would communicate to each other.  And all would interoperate with each other.  And, if you wanted higher levels of security still, you could run your own version of the site.  Now some of these sites may need to block particular content for legal reasons – but that wouldn’t be a problem, people could simply go to other sites (which would be well known about) hosted in other jurisdictions if they wanted that content.  So what I’m talking about here is not ‘lets build some distributed software, and try to get a network to take off based on it”, I’m talking about ‘lets build a good social networking site, and by the way, you can mirror some or all of the content, and interoperate with it in a distributed way if you want’

To achieve the goal of distribution, its going need cryptography.  Things like ‘only distribute this to my friends’ can only be done with crypto in a distributed system.  But crypto can also be used to solve other issues like ‘this proves who I am’.  The trick here would be to hide the crypto from the end user as much as possible – which is to say, they should never need to know that crypto is involved.

It should play well with TOR – some people who would want to use this network would need TOR – but the site that most people see would be hosted on the open internet, because that is the obvious place to host such things.

It would have to be free to everyone.

I’m optimistic that this could be done.  The wikimedia foundation has worked, and has managed to produce not just Wikipedia, but the software which powers it.  I see no reason why similarly generously spirited people shouldn’t get together to create the ultimate social network.  One which cares about its users, and which is free, because it is funded by people who care about freedom, not by people who care about adverts.

Will it happen?

It could.  And possibly it should. I think it might just be an idea whose time has come.

Rethinking Social Networks : Different Applications

 

Assuming we don’t want to replace Facebook, then we are left with trying to use social networks in other applications.  These need to be applications that lots of people are going to want to use (otherwise the social aspect is useless), which perhaps have a viral way of grabbing people’s attention (using social to sell them) and which fundamentally are made better by being social.

When I’m thinking of the sorts of application which come in and grow big, my first port of call is to see “What are geeks using right now which hasn’t caught on in the mainstream?”  There are two things that currently come to mind:

Bug Tracking Systems

and

Distributed Version Control

Now – clearly neither of these are new ideas (although I was thinking of distributed version control well before it hit the mainstream consciousness – but that’s another story).  And both of these exist to some extent outside of geekdom:  You have a certain level of version control is various word processing systems, and online data storage systems, and ticketing systems of various type exist in various industries (mainly industries with support desks).  So how do we make them different, and make them social.

Bug Tracking:

As I said, ticketing systems are used in many industries.  In my job I have to handle both the customer support ticket system and the internal bug tracking system.  In my time I’ve used quite a few bug tracking systems of various colours.  They have generally common characteristics:

Someone enters a bug into the system (we could generalise this as ‘someone enters a thing for you to do into the system’).  This raises a ticket.

They assign the ticket to the person they think is responsible

This person is made aware of the issue by an email arriving.

If they don’t think they are the person responsible, they pass the issue on to someone else (and that person gets an email)

 

Better systems let you say things like:

This particular tasks consists of multiple subtasks

and

Before I can work on this particular task, someone else must complete another task.

 

This is starting to look like a general ‘to do’ system.  Indeed, I’m astonished when I hear that most companies don’t use a system like this to manage their projects, and keep track of things that have to be done, and when they are to be done by.  That  also suggests to me that, given a more friendly user interface, we might be onto a winner.

So we’ll start with a single user ‘to do’ program.  They can enter tasks, and mark them as done.  They can also break them down into subtasks, and put dependencies between tasks.  All that requires is a friendly UI to make everything clear.  There are good examples on the net.

Now, lets take a leaf out of tripit’s book.  When you sign up to the todo apps site, you get an email address.  You can forward any email you get assigning you things to do to that address, and it will get turned into a todo within the system (which may well be a todo along the lines of ‘TODO: Generate todo tasks from this email”).  The first social aspect is that each task will be associated with the original email – which means you can send an automated email back saying something like ‘I’ve identified the following tasks from your email – if you want to see that I’m keeping up with them, please go to this web page’.  Moreover you could only allow someone with the email address you originally identified to log in to that site (using email based authentication)

We can go further.  What if you generated a task which someone else had to do.  Now, its pretty bad form to say ‘here is something you’ve got to do, which I’ve already put into a task tracking system’) – but you could add a task ‘wait for a response from this person’ and send them a querying email from your to do system.  Moreover, if that person is already using the bug tracking system, the email could be automatically redirected to their todo list box – which would mean they would have a task that you could monitor.  If they are not using the system, well, every email you send will have an advert encouraging them to give it a try.

Monetisation could come from apps (see passim), enterprise subscriptions (will walled gardens that won’t stay in someone’s account once they leave the company and mass email subscriptions), or premium subscriptions.

 

Distributed Version Control

The concept here is there exists some sort of document (or set of documents), wherein each person can have a copy and make their own changes, then pass the document on to someone else who already has a copy of the document, who can decide if they want to accept some or all of your changes into their copy.  There isn’t one true central copy.  Also, you can go back in time and see how the document has changed.

We geeks use it to keep track of our source code.

But in the real world it would seem great for managing that big collection of stuff you have to keep track of for a project (or, on a smaller scale, for a meeting)

I see it as being like this:

I have some sort of application where I can store various pieces of text, photos, lists, links to web pages, other documents etc, and keep them all together in one place.  In the old days that place would have been a file, these days it would be a web site somewhere.  Now, I might want to let someone else look at this collection of documents, while I might want to let others edit it.  Easy – I just set it to email them links to the document – now all those people have accounts where they can take a copy of the document, and where they can edit their own copy to their hearts content - and some will also have the ability to see what changes I’ve made since – and fewer still will have the ability to suggest I accept some of their changes (it would be something along the lines of ‘Show Ben These Changes’ in the ui.  To us Geeks, I’m talking about a github pull request)

Again, it is fundamentally social – and all the app I’m describing needs to actually be is something akin to a wiki – or HyperCard.

 

Go with either of these ideas, and you have the potential to exploit the still underexploited social arena

Rethinking Social Networks : How To Replace Facebook

Facebook engancha

It seems like Facebook has got sufficiently sticky that we will never be able to usurp it from its position.  Altavista felt that way once, but all it took was for a new startup to come along and do things better.  Lets say we want to usurp Facebook – how would we do it?

The first thing we have to do is make money.  Even if we want to get VCs involved, I think they would still want to see some sort of monetization plan.  I also think that, right now, app.net are right – you don’t want the money to come from adverts.  However, app.net seem to suggest the solution is charging the user a subscription.  I’m not sure about that.  If you want to create the ideal Facebook killer you want to get lots of people there – and a subscription is a gatekeeper.

I have a different idea to monetize the social network (a plan, which incidentally, encourages it to be a better platform too):  the network is funded by an app store.  This might seem odd, until you realise that almost all publishing on the network could be an app – and that only apps sold via the app store could interact with the various apis.  Apps could either be ad-supported (in which case, we would take a cut of the advertising), in-app purchase supported (in which case we would take a cut of the purchasing), or price supported (we get a cut, you get the picture).

To explain further – we would create a social network where you would get access to read anything posted to you – and perhaps to post twitter size posts to up to 100 followers.  This would suit most people.  If you want to add pictures to your post, you’ll need to buy the ‘add pictures’ app.  If you want to have more followers, or to be able to push your posts to particular people, we’ll provide apps.  Want to write longer articles?  We can provide the means.  Want to do something we can’t even think of?  We’ll make an api so that other people can do it – so long as they follow the rules of our framework (and our app store guidelines).  Want to use your phone to read – you can do it for free from our mobile site, or, if you need an app – there will be one (but it will be ad supported, to pay for the cost of development).  Want to post from your phone – that’ll be an in app purchase.

Most of these apps would be a one off purchase.  We might also charge for storage above a limit (I’ve long believed storage should usually be a one off purchase price – if you’re making people rent storage, you should probably be thinking about making people pay for something like data transmission instead).  We might charge a recurring fee for some ‘enterprise level’ features – but only to skim lots of income from big companies.  People will keep coming back.  People will want multiple accounts.  Each account will need apps.  We will keep making money – but we will be making it from our biggest fans – from the people who want to pay us.

So we have a monetization plan.  How do we get people to the new service?

The answer is:  we make it easy.

Facebook seems to provide a few services

  • Find and keep up with old friends (or at least don’t lose track of them totally)
  • Keep up with current friends, and arrange activities
  • Stay in touch with celebrities
  • Do some amount of microblogging
  • Play multiplayer games
  • Store & publish photos

My guess is we don’t want to replicate all of these – at least not to attract people.  I suggest right off that we don’t worry about the finding and keeping up with old friends aspect.  That’ll come to the new platform when enough people are there.  Celebrities will do the same.  We want to be a good platform for them to blog on, but not spend our time trying to encourage them.

The app store monetization strategy suggests games are a good thing to support.  It isn’t my interest, but it will attract people.

The other area to support strongly is microblogging and publishing of photos.  Now this is harder – why blog on a platform which no-one uses?  My answer is we make it better, and we make it easier to share.  Anyone can read things you publish to the world (and there is no reason why you can’t syndicate such content to other social network feeds, along with a linkback).  What if you just want to publish to a small group?  You could always use email to share your content.  Not just to link to our site, but to share what you are writing.  We have no need for people to come to our site – unless they want to use it to publish – so why not work on making the mailbox the hub of the social experience?  Of course, people are not going to want your tweets in tiny one line emails, so how about trying to create some sort of ‘what I’m up to’ life journal digest you can send out.  Tweets for followers, longer blogs & photo albums to email readers.

Of course, any email address we send your digest to, we remember.  If you come to our site later, and log on with that email address, it will be pre-populated with all the people who have sent you their digests.  Because each email would have to offer you the opportunity of turning the digests off, the link to do this would encourage you to log in with your email address – and show you what is available.  You might also consider allowing the links to take you directly to your own page (in the zero-login, cookie only, format I described a few days ago… this might have problems though, as I would suspect these links and emails might be very forwardable.  That said, commenting by replying to emails, facebook style, would have to be supported.

This wouldn’t be an overnight success – but it would provide a pathway to something which could grab people virally, and wouldn’t require people to use the site themselves unless they wanted to.  And to get people to want to use the site?  Well, it would simply have to be better for them to use than Facebook - and given how hard Facebook seems to be trying to drive people like me away, that can’t be too difficult.

 

Rethinking Social Networks : The App.Net move

Social Network

Social Networks are high in people’s minds right now.  Twitter is annoying its developers, trying to become an island rather than the convenient platform it used to be.  Facebook is a mess, a jumble of confusing options, an unfriendly interface, and adverts jumping out at every corner – it reminds me more of the pre-Google Altavista than anything else.  And there is reaction to this.  The Diaspora project seems to have gone nowhere, but newcomer App.Net has hit a kickstarter target – and, by getting enough people to make a cash commitment has become interesting.

App.Net makes two points:

  • At the moment, the customers of social networking sites are not the users, but the advertisers.  So long as the users are tied in, they will remain, and their eyeballs will be able to be exchanged for the contents of advertisers wallets.  A social network designed for users needs to be funded by the users – they need to be the customers
  • What makes a social network work is when it ceases to be a website and becomes a platform

Its worth describing two geek fallacies before we continue:

Fallacy 1:  Any good internet project is distributed in nature.

This is the flaw of Diaspora.  Geeks love us some hard distributed systems problems, but the take away from the user the simplicity of going to a single place – the same place as everyone else – to get what they want.  Distributed technologies such as social media require people to provide servers – but these servers have to be paid for, so people will charge.  Charging isn’t too bad, except any such server must, by its nature be a commodity, there is little room for differentiation.  It is hard to see why anyone would want to get into this game – see the decline of usenet servers as an example.

Fallacy 2: It is all about the platform

UIs are for wusses.  What matters is the clever technology underneath.  This is both true, and false.  What matters to must users is that users get the features they are looking for – it doesn’t matter if the backend has some hyper-clever architecture or runs in Spectrum BASIC if it does the job and keeps out of the way.  Geeks think differently – they want to know that their lives are going to remain easy as they interact with the system over time, so they design platforms which you can build good products on top of, but don’t care that much about the product.  I fear this might be what app.net are doing.  I hope I’m proven wrong.

Where app.net have been clever is in using Kickstarter for some cash.  Not because they needed the cash (if you can convince that number of individuals to pony up $50, you can probably convince some investors to do likewise).  Getting the cash gave app.net some publicity, because Kickstarter is hot right now, and social networks are causing consternation – and for a social network to get going, it needs publicity.  But it also got a number of people to tie themselves into the service – and the sort of people who would fund a new social network are early adopters, the thought leaders in the social sphere, and this could be very important to app.net’s growth.

But it could be more important to the people who paid for the developers licence.

Right now, if I wanted to try something new and interesting in the social world, I would seriously consider tying it in with app.net – because its a small market of exactly the sort of people you want playing with your fresh idea.

I don’t think there is anything special about app.net in itself, but I expect it to be a breeding ground for interesting social graph based applications.  So in app.net’s case, perhaps by building the platform, they are doing the right thing, even if it isn’t the right thing for them.

Incidentally, I have a number of thoughts about the next moves that could be made in social networking – I’ll be writing about them over the next few days.

Turn on, tune in, log out

British biometric passport

I hate logging into websites.  And I’m a master of it.  After a number of hassles with external websites revealing my passwords to the world, I now have a lastpass setup managing my login credentials and a google authenticator to keep my google identity (which is probably more important than my birth certificate) extra-secure.  And does this work?  Well, most of the time, but the other day I got logged out of a banking account and had to reregister because I got my details wrong 3 times in a row.  Was it my fault?  Well, maybe, but I don’t for the life of me know what exactly I did wrong  - or how I could avoid doing the same things wrong in the future.

I also hate writing login mechanisms for websites.  They always seem overly complicated – the sort of thing you wish could just be done better by someone else.

My first experience of a half-decent login system was with tripit.com.  With tripit, all I had to do was start forwarding emails to their email address.  I got an email back telling me I could go to a magic URL, where all my details were awaiting me.  But then it asked me to set up a password to secure it all.

On most websites, it doesn’t matter who I am.  It only matters that I am the same person I was last time I came to the website.  Why should I have to log in?  In fact, a lot of web sites recognise me and log me in automatically if I’ve been there fairly recently

So, Idea 1:  Instead of making me sign up to a website, just assign me a cookie, and then whenever I come back in – in a day, a week, or a decade, read that cookie, and log me back in.

This is simple.  It is session management.  Website writers are going to have to do session management anyway, so why not just have two sessions – a short term ‘is currently doing a particular thing’ session and a long term ‘is still the same person’ session.

There seem to be two big problems here:  Security and Multiple Browsers

The security problem is that cookies remain the same and are passed in plaintext.  This can be resolved, in part, by making all connections via https.  All the evidence seems to suggest https-only is the way to go for lots of reasons, so this is no big loss.  As for cookies remaining the same – well, the website can always decide to change your cookie on its own schedule (so long as you log in).  And because the cookie will be website generated, it will only ever work for that website – and if that website gets hacked, well, they probably have access to everything you stored on that site anyway.  No no huge risk, so far as I can see.  (we could probably do more complicated things like making the cookie you provide a public key, and making session initiation a challenge response procedure, but that probably isn’t needed)

The multiple browser issue is harder.  If I want to access the same account from two browsers, the cookie generated account issue is a problem.  Different cookies will be generated for each browser – meaning you are a different person at work and home.  There are three ways around this:

1 – add the ability to set a username and password to your account once you have logged in.  Let people associate different browsers with the same account by then loggin in with the username and password.

2 – add the ability to associate an email address with your account.  You can then request the site emails you with a way to log you in on other machines.  Since you’ll need to do this if you have the username password mechanism, you’ll proably have to do this anyway

3 – make the problem your browsers problem.  Come up with an way of identifying the cookies as shareable, then let your browsers choose a central location to allow them to be synched.  This is ideal as it also allows browsers to let you switch between multiple accounts with the same site.

So – this seems quite simple, but it seems you still need to write code to register an email address with your site (at least until all the browsers come up with a solution to synch cookies).  My suggestion here is:

Idea 2: someone needs to generate a web service which will manage the storing of email addresses and associating them with an internal representation of user ids.  All your site would have to do for registration purposes is provide a form which sent the email address and internal id to said service.  When a user wanted to receive a log in email, you would have to provide a simple request whereby you provided the email and your sites id, and got back the internal id.  You would then look up the id, then generate an email which would lead the user to a page which would allow them to access their long term session cookie.

some bonus ideas:

Idea 3: if I send an email from my valid account to ‘logmein@whatevermywebsiteis.com’, it should, by return post, send me an email that would log me in – meaning I wouldn’t have to do any setup work’

Idea 4: You could happily sign up with multiple email addresses.  The site should only send to the email address you request.

Idea 5: If you lose control of an email address, you may need to revoke it.  The best way to manage this would be to allow you to revoke all email addresses, then let you assign them again one by one.

xoxco makes a similar argument (which didn’t so much inspire this piece, as made me think there was probably something up the tree worth barking at)

Why you should develop your web app in public

For mortals – those of us not gifted with insane levels of insight about how other people work – the process of design goes something like this:

Find out about a problem

Figure out a way to solve that problem

Come up with a suggested way of solving the problem

Show the suggested solution to someone who has the problem

Listen to what they have to say about it

Change your understanding of the problem

Iterate.

 

This is true when it comes to designing the next ubercool widget, and its true when designing the stodgiest piece of business management software.  It is true when designing web apps.  Unless you have a huge usability lab and can fund focus groups, your best way of testing web app ideas is to get them out there, in front of people, and see what they think, so that you can iterate and improve the design.

I’ve been thinking about this for a while, and came to the conclusion that it might be a good idea to do all of your web app development in public – not just making the app available online, but also the source code.  It was an idea which gnawed away at the back of my skull, not fully formed, until I read the following article http://techblog.netflix.com/2012/07/open-source-at-netflix-by-ruslan.html and specifically the following quote:

We’ve observed that the peer pressure from “Social Coding” has driven engineers to make sure code is clean and well structured, documentation is useful and up to date.  What we’ve learned is that a component may be “Good enough for running in production, but not good enough for Github”.

I want to explore wether the benefits of opening your web app code to the world outweigh the disadvantages.

Lets start by remembering that we have had this argument before.  Back in the late nineties we were discussing wether Open Source code was the way forward.  Gradually that argument has matured, and a world without open source software would be unrecognisable – a probably significantly behind our current world.  So there is social benefit to some forms of open code – by releasing your code, and playing your part in the open source community, you are doing a good thing, and moving technology forwards.

Lets also consider that, in the case of web apps, sharing your code is not a common or usual behaviour.  There must be a reason for this (even if the reason is wrong, or out of date)  Perhaps, in looking for these reasons, we can understand why, in the net app space, people are less inclined to share.

The arguments I can think of stand as follows:

I want to get the full benefit of the code I have written.  If I were to share my code, others would be able to compete with me based on what I have written.  I might lose out to someone who hasn’t written the code.

Sharing the code, packaging and documenting the code, is too difficult or labour intensive.  It isn’t what I want to spend my time doing.

I don’t want to expose my code to the world, only the functionality, because I am scared of being judged on the basis of my code.

Opening the code might allow people to spot security holes

When writing an article such as this, it is always a worry that I am creating straw men to knock down – so I would be pleased to learn about other arguments against opening up code to the world – please mail me

The NetFlix quote adresses the argument about judgement.  By exposing your code to the world, you are forced to make the sorts of decisions about your code you would generally only make in the face of peer review.  It will lead to better, more readable, more maintainable code.  This is a good thing.  If the problem is not the quality of your code, but rather the fear of public ridicule, then I suggest that posting and being damned is absolutely the best way of getting over this.

The question of security holes is similar. We know that security by obscurity is ineffective against a dedicated attacker – all you are doing by not publishing your code is giving yourself a false sense of confidence.  By opening the code, you not only open it to potential attackers, you also open it to other people who may wish to use your code, and who may spot the flaws and help you correct them.  Open Source software has a deserved reputation for addressing security issues well – there is no reason why open web apps should not do the same.

Sharing and packaging the code is too difficult.  A while ago, I would have agreed.  But now we have github.  While github is far from perfect, all you have to do is keep a copy of your code there.  I don’t make any suggestion that you need to make your code easy for other people to use – just that you make it available.  If other people care about packaging your code, documenting it, making it nice – let them.  Thats their work, not yours.  You don’t have to become a community leader, you just have to keep on doing what you enjoy doing.

The final one of my arguments against opening your code is that you don’t want anyone else to benefit from your work.  To this I might make a few comments:

1.  You must be kidding.  Odds are your site is running on an open source language on an open source operating system.  You’re using web browsers (the majority of which are open source these days) to let people get to your site – over the internet (a technology which has had a huge amount of development form other people).  Your’re probably using open source libraries and open source databases and web servers. You are absolutely standing on the shoulders of giants.  Is you’re shitty first draft web app really that difficult to come up with, in the big scheme of things.

2. You’re not kidding?  Right, well in that case, consider that the value of a web site is more than just the value of the code.  It is also the value of the design, the graphics, the quality of the  site’s dev ops and the community which use it.  You have the opportunity to succeed in all these areas.  If you don’t win in these areas, you probably don’t deserve to win

3. Still not convinced?  Copying the first draft of a web app is cheap.  Especially since web apps don’t generally do things which are particularly complicated – the thing that gives them value is the idea, and the way it is made available to the user (the design).  Copying design and idea – then writing code to fit is a lot easier than writing the code from scratch.  Just by putting your web app out there you are making it easy to copy – especially from the big boys you are, presumably trying to disrupt.  When you introduce a new idea, the hope is you get big before Google or Facebook notice you have disrupted anything.

4. First mover advantage works.  In the open source world we don’t often see major forks of code – and when we do, it is normally because people want to do something significantly different with the code.  This is less clear in the web app space, but let me point out an example:  Wikipedia.  Right now, I can download all the data.  I can download mediawiki. I can set up my own wikipedia.  But I won’t beat wikipedia.  Because they have the community.  Because they were there first.

5. You might benefit from other people’s code.  If they are using your code, and making changes to it, then you get the benefit of those changes.  If you want to be sure of this, release your code under an affero license.  You might also benefit from someone using your code.  Lets consider Google – lets say they decide to compete with you.  Unless you’ve got the community sewn up, you’re screwed, wether they copy your code or write their own version.  However, if your code is available, why the hell wouldn’t they try to use your code, and bring you onboard – sure it might not be the megabucks you make from creating the next big web app, but its an income based on your work, your love and your passion.

I really don’t see anything except for upsides when it comes to releasing the code which runs your web app.  All you are doing is adding to the ecosystem you draw from.  And in that sense, not only is sharing your code a logical imperative, it is a moral imperative too.

(Random question:  Why can I not fork GitHub?  It really seems like the sort of thing I ought to be able to do)

Building An Idea Assembly Line

When we look at the history of technology successes, we are reminded time and time again they come from incubator areas.  Not from the artificial technology incubators that VCs might set up to house new start up companies, but from regions which are good at incubating companies.

What these regions have are some combination of:

Universities

Big Technology Companies

Research Labs

Now – the advantage of having these sorts of institutions are they put lots of bright people together, playing with technology.  And specifically, the people they put together playing, don’t have to be entrepreneurs – they are getting paid some sort of wage (good or bad) to come up with new things.

The typical VC approach is to wait until there are companies formed by the few of these people brave enough to sacrifice their working wage and go it alone.  The hope is that the best ideas have risen to the top, and have been picked up by people capable of running companies.

But, if you talk to a VC, a common issue which causes them not to back a start up, is the poor quality of the team, not the quality of the idea.  And many many companies wind up pivoting to follow a different idea from the reason they got together.  You need a combination of good ideas and good people throughout the start up’s life.  You need the idea generators to stay in the company.  And you need a strong business team to take on the best ideas.

I wonder if the solution is to come up with an artificial equivalent of the research lab in order to breed ideas, and form teams.  I call this the Idea Factory.

Imagine an office (perhaps a big, brightly coloured open plan office – or perhaps something different) where some number of bright people are employed.  Their job is to have ideas, to prototype them, and to demonstrate them to one another. They also spend some time on building reusable frameworks to make prototyping new ideas easier and easier.

The time spent on prototyping ideas should be short (perhaps measured in days), and we should be quick to drop ideas.  People should feel free to provide support to each other, in taking the ideas they like and adding to them, or improving on them.  Forking ideas, and using their own skills, or even just making suggestions for other people to fork.

Over time, teams would grow, and some ideas would rise above others.  These ideas can then be shown to the world.  At conferences.  In papers. On YouTube. Or by going live on the web.  The question becomes ‘what is the minimum needed to get this idea out there?”

And this is where the VCs come in.  VCs already know people who are good at forming businesses, people who know what to do next.  They can take a team with a good idea and match them up with the business skills they need to move one step on.

Now – the important point here is that, all the time people are working in the idea factory, they are being paid.  You want people in the factory with a range of experiences – from fresh hungry graduates, through to the world weary sorts who have seen everything and know how things really work.  So there are going to be a range of salaries. Perhaps, because the work environment is unusual, you might be able to get away with offering a lower salary then the market would usually require. The question of salaries is where the VCs take a risk – how much time and money will these people need per idea?  By the time the idea is being fitted out into a standalone start up, the risk should be much reduced, and the VCs should be happy about getting a higher rate of return.  [Also, one presumes that an idea factory would be a good source of patents, if one of the members were to be a patant lawyer]

Idea Factories might be the way to inspire entrepreneurial growth in towns currently lacking it, or for a small group of VCs to monopolise start ups (and get a better share of the equity then they might otherwise manage)

But wait – Idea Factories might not just be good for VCs.  Consider your big company – not quite a company the size of Google, but the sort of tech company which regularly takes over large convention centres to support their customer base.  These companies often need new ideas.  They could set up internal idea factories along the same lines, getting people to play with the sort of technologies they are interested in.  It would lower the risk of disruption, and – even if all the ideas came to nought – give them a way of showing they support innovation.

This is an idea which I think – based on rough estimates -  has legs and is worthy of further investigation.  Please contact me if you think you might want to play a part in bringing an Idea Factory to life – either as a venture investor, or within your company, because I would very much like to help.

Car makers heed my advice

In I Want A Different Car I said:

“If you can provide me with a way for the car to make me a coffee, so much the better. ”

Well, it looks like, yet again, captains of industry are racing to meet my every demand:

http://newsfeed.time.com/2012/07/16/the-ultimate-to-go-cup-new-car-has-espresso-maker-built-in/

(well, one demand, and not even a demand so much as a throwaway comment.  And probably not so much racing as ‘had it in the pipeline since before I wrote anything’)

Now, figure out how to fit in a desk (that doesn’t come out while I’m driving), and add a few bonus features such as ‘reliability’ and I’m yours, Fiat.

Use Case : Information Capture

When stumbling around trying to figure out which combination of tablet / laptop / phone makes the most sense for me, I find it useful to consider the use cases which, at the moment, my devices don’t quite meet.  The most obvious thing that I’m missing is a good information capture device.  Here are the situations where it would be useful:

I’m called into a meeting – I need to be able to access web sites during the meeting – and perhaps run GoToMeeting or WebEx, so it’ll need to have decent web browsing facilities.  I’ll also need to be able to access (and maybe write) emails.  Finally, I’ll want to be able to type down notes as quickly as possible, without looking at the keyboard (so I’ll need the sort of feedback which only a physical keyboard can give, and I’ll want a full size keyboard, for comfort)

I’m at a conference.  I want to take notes in all of the sessions. So I need good battery life, and I also need to be able to type with the device either in my hands or on my lap.  So far, I’ve not managed to find a device which is as comfortable for taking notes on as a keyboard, and many tablets with keyboards won’t rest nicely in my lap.  Later, I’m going to want to transform these notes into documents.

After a day at a conference, I’m in my hotel room.  When I travel, I prefer not to take my main computer with me – I prefer to have something cheap, something which doesn’t have all my data on it (I have backups, so I could stomach the loss of my data – and a good quantity of my data is in the cloud, but still, I don’t want the inconvenience).  Recent experience has shown that my windows tablet (with docking station and bluetooth keyboard) does well here (though isn’t that cheap – still any tablet & wireless keyboard combo would clearly do almost as well).

As an added benefit, it would be nice to be able to make doodles and drawings to accompany my notes, using a pen or stylus.

My suggested solutions are:

Carry a laptop, and some form of extended power.  This would be a good reason to buy a macbook air.  But an air, or an ultrabook would not meet my criteria of being a cheap device.

Carry a netbook and some form of extended power.  Then also use a tablet for the things tablets are better for.  The problem here is that netbook keyboards are not as big as I would like.

Carry a tablet, and then use one of those pens which record what you write for making notes:  This isn’t a bad plan – although I doubt the OCR capabilities of the pen’s software.  And we could probably achieve the same thing with pen, paper and a travel scanner.

What would seem to me a better idea would be a tablet case which has a built in keyboard, and is designed to work as a laptop.  Extra marks if it can contain extra batteries to increase tablet lifetime.  We’re not just talking a tablet dock, we’re talking about something specifically designed for using on your lap, like a laptop.  The idea of it being a case more or less rules out android devices – they are just too different from one another, you would end up with some half functioning system equivalent to those suction pads you use to attach phones and GPSs to car windows.

The right sort of thing already exists for the ipad – consider for example the keyboard case from clamcase.com.  There is a japanese company selling a notebook case which also sports a  battery, but this doesn’t seem to have worldwide availablility yet.

I wonder, however, if this is an opportunity for windows OEMs who were blindsided by Surface.  Suface, no matter how funky the magnetic keyboard thing is, won’t work from your lap.  Yet a Windows RT device would meet all my needs as described above.  A WinRT laptop would have a niche that Surface can’t quite touch – and a slightly higher spec varient could easily come with a stylus.  Ultimately, a device like that might mean I would rarely, if ever, need to use a proper laptop for anything.  And also that my life in conferences, meetings, and bland corporate hotel rooms would be much improved.

 

© Ben.Cha.lmers.co.uk
CyberChimps