A digression on Software Patents

I wrote some software to make collaboration with Excel easier and have been writing up a few posts here about how it works. I’ve been struggling recently with how much of the details to describe on this public forum. Essentially I have this little niggling voice in the back of my head telling me: “Protect your IP, file a patent, protect your IP, file a patent”. Any sensible person would surely file a patent before going public with anything.

Yet I loathe software patents. And perhaps I’m not all that sensible.

Patents take a lot of time and distraction and cost lots of $$. The patent process moves at such a glacial pace that they are all but meaningless when you’re trying to get an idea off the ground. Interestingly it wasn’t always as bad as this. From “The Victorian Internet” by Tom Standage;

[Alexander Graham] Bell worked for several months to build a working prototype [of a “harmonic telegraph”, i.e. telephone]. On 14 February 1876, when it became clear that [a competitor] was pursuing the same goal, Bell filed for a patent, even though he had yet successfully to transmit speech. He was granted the patent on 3 March, and made the vital breakthrough a week later, when he succeeded in transmitting intelligible speech for the first time.

Now if I read that right it took less than a month to get a patent granted. Whereas now it takes years during which time who knows what could happen to your business. How many businesses do we take for granted today that barely existed five years ago?

If patents could be decided and genuinely only granted in non-obvious cases in a few weeks then I might see some value around the certainty they could provide. But they take forever and they seem to be as likely to be about something trivially obvious as they are about something genuinely ground-breaking.

And anyway. Even owning a patent doesn’t mean much unless you have the $$ to take someone to court over infringement.

So when it comes to the real world, at least where software is concerned, patents are a tax on innovation. They divert resources away from where they are best used. They are a brake on innovation.
Arguments I’ve heard in favour of patents include:

  1. The revenue stream argument: If you own a patent you can license the IP.
  2. The risk mitigation argument: If you are lucky enough to be successful and are about to IPO or similar then some fucker (technical term) somewhere will try to scupper you by claiming you are infringing a patent somewhere along the line. So better to have some patents that say you are allowed to do what you are doing, or failing that let you counter-sue the fucker by claiming that he is infringing on your patents.
  3. The ego-trip argument: The idea that you must be cleverer than the other guys if you have more patents than them. Never mind that (as I am reliably informed) the number of patents you own is irrelevant – what is important is the number of claims across the patents. You could have one patent application with 1,000 claims in or you could file 10 patents each with 100 claims and you would be in an equivalent IP position. So why people insist on counting patents is surprising. Still they do.

Those are all valid arguments to a degree. If you want to build a business around selling some IP then you need to license it. If someone is going to value you based on a not very meaningful metric then, whatever, don’t hate the player, hate the game and all that. Just a bit of a depressing game.

So to cut a long story short I have now excised from my psyche any thinking about software patents. Not interested. I do hate the game and so will do my best not to play in it.

BTW – in case any lawyery types are reading – I don’t have a cavalier attitude to IP protection in general. I just think that in the world of software, copyright is the correct approach, not patents.

Lots of love



Think software archaeology sucks? Try hardware archaeology.

This post is for anyone who has had to try to bash through someone else’s shitty source code with all its confusion, obsolete logic and lack of documentation. In other words every software developer, everywhere. Spare a thought for Lieutenant Commands Rupert T. Gould.


From Longitude by Dava Sobel

H-1, H-2, H-3, H-4 are the model names for the various generations of clock that were created by genius inventor John Harrison for reliably telling the time at sea: the crucial . The devices languished unused and uncared for until Lieutenant Commander Rupert T. Gould from the Royal Navy took an interest in restoring them. It took him 12 years to restore all four. This restoration is very much a hardware story but software people will empathise:

So he set to right away with an ordinary hat brush, removing two full ounces of dirt and verdigris from H-1 …

It seems only proper that more than half of Gould’s repair work – seven years by his count – fell to H-3, which had taken Harrison the longest time to build. Indeed, Harrison’s problems begat Gould’s:

“No 3 is not merely complicated, like No. 2,” Gould told a gathering of the Society for Nautical Research in 1935, “it is abstruse. It embodies several devices which are entirely unique – devices which no clockmaker has ever thought of using …” In more than one instance, Gould found to his chagrin that “remains of some device which Harrison had tried and subsequently discarded had been left in situ.” He had to pick through these red herrings to find the devices deserving of salvage.

I feel for the guy, working through someone else’s undocumented code. Struggling to clean out the accumulated cruft of (what seems like) centuries of neglect. Discovering tons of methods that aren’t just commented with HACK or TODO, but methods that it turns out never get called in production.


I Wrote a Software II: The Problem (aka Opportunity)

We keep collaborating with Excel despite the deficiencies

Despite all the collaboration opportunities provided for next to no cost by the likes of Trello, Office365, Google Apps, Zoho, Box, Huddle people keep finding a use case for emailing an Excel document around. And then they struggle when they sent out the wrong version or someone wants to make an update etc etc.

Office 365 has an online version of Excel. It’s sort of somewhere between “real” Excel and Google Sheets. But without much consideration for usability. Here are a few things that I have been enjoying recently:

  1. When I first open a spreadsheet I have to press a button to be able to edit it (unlike Google Docs where I can type straight away)
  2. Before I can sort or filter an online spreadsheet I have to click a mysterious button called “Format as Table”. Given that sort and filter is one of the main use cases for Excel it’s a bit bizarre to make users make additional clicks and expend additional cognitive effort to unlock that feature.
  3. There’s no freaking strikethrough.
  4. Where is the version history?

If only they had called it something different so people didn’t think it was equivalent to Excel. The surveys feature looks neat though it’s just a me-too version of Google Forms. But there are plenty of irritations that just add up.

To be fair to (real) Excel, Spreadsheet Inquire looks pretty neat. It lets you compare different spreadsheets to find the differences. This should be really useful where you have different people updating different copies of the same spreadsheet.
I have yet to see it in real life as apparently the licensing restrictions are pretty tight. But my instinct is that it’s going to be really hard to use and that will put people off.

Excel alone just isn’t practical enough to justify the amount work we do with it in a collaborative business setting.

Browsers considered dangerous

The traditional solution to this is to build database-backed systems that are accessed through a browser. It is perfectly standard to think it is a good thin an for application to be “web-based” rather than to require a custom fat client. Makes sense because the costs of supporting a piece of custom software on any kind of PC/tablet configuration can be huge. Why not use a web browser which is a more or less standardised piece of software already on everyone’s PC.

The problem here is that web browsers are weak when it comes to handling tabular data. The TABLE element in HTML is pretty much unused. Everyone who wants a table ends up having to define their own approach rather than using something standard. And many business applications are about manipulating a table of data.

Opinionated Excel?

Hmmm, I wonder if there is another piece of widely-installed and widely-supported software that we can expect business people have access to. One that is good at laying out tabular data? What happens if you start thinking of Excel as the UI layer in your system? Of course Excel has an enormous amount of power and so to effectively use it as a front-end that doesn’t then screw up data integrity you would need to take a leaf out of the success of the Rails framework, and how it transformed web development by defining an opinionated way of using the Ruby programming language. I wonder how much appetite there is to work to an opinionated way of producing Excel.