As a 40 year-old computer nerd, I’m interested in how home computer programming has changed over the years, and I’m seriously wondering if we’re seeing the end of the hobbyist computer programmer. Hey, I’m leaving Microsoft next week, so indulge me.
My first computer was one that I borrowed from a good friend when I lived in N. Ireland. That friend now runs a best-selling Linux magazine in the UK: it’s fair to say we have different outlooks on the computing industry. That little white plastic computer was a Sinclair ZX80. It had a Z80 CPU, 1K of memory (yes, 1 024 bytes), a built-in BASIC interpreter and it stored programs (if you were lucky) on cassette tape. The keyboard was a touch sensitive piece of plastic, and the display was a spare black and white portable television.
This was one of the very first home computers, and it was designed from the outset for crazy nerds like me with no girlfriends to write their own applications, type one in from a magazine, or possibly buy some on tape from another crazy nerd with no girlfriend. In my computer collection, this was followed by a ZX81, then a Jupiter Ace (when everyone else bought Spectrums, or Vic 20s, or Commodore 64s, or BBC Micros), then an Amstrad CPC464 and 6128, and then an Amiga or two. Or three. I loved the Amiga so much that I was co-editor (with my ZX80 buddy) of a UK Amiga Magazine.
Here’s my point. All these computers were designed to be programmed. Right up until the Amiga, the computers came with BASIC (or FORTH, in the case of the Jupiter Ace) in ROM. When you turned them on, there was no booting, no operating system, just a BASIC interpreter. Sure, 90% of the people who bought these would only type “LOAD” into that BASIC interpreter and wait 30 minutes to play “The Hobbit”, but if they wanted to, they could write a program.
On the Amiga, you really needed to buy a C or C++ based development tool to do anything serious, and at this point computers really were turning into something of an appliance or games console, but the fact is you could write a program if you wanted to. If you had the talent and time, you could write the same application as the number one selling game on the market.
In the UK at least, parallel to these home computers were the more expensive and serious computers such as the IBM PC and Apple Mac. These tooo were designed to allow serious development. By the way, my first experience of the IBM PC, with dual 5.25 inch floppies and something called MS DOS was at university, and boy, were those ugly machines. My professor gave me special access, but after 20 minutes I decided they were horrible, and didn’t touch a PC again for many years. Instead, I learnt Pascal on the Macintosh and tried to free my brain of the spaghetti coding that years of BASIC had hammered into me.
Ok, so summary: early computers in the 1980’s and 90’s – all designed to be programmed.
Then I discovered Windows Mobile devices (Handheld PCs they were called back then), and I learnt Win32 programming. One problem: I was broke, and the Visual Studio tool was expensive, and only available in the US. And the Windows CE SDK wasn’t available to anyone other than special select few. So I called in a few favours and got lucky, and someone at MS that I’ve never met was really kind and sent me Visual Studio. I need to send that guy something before I leave.. anyway, eventually I could write apps for Handheld PCs! And then Palm-size PCs! However, even at this point, it was getting difficult to get the tools. Imagine a platform that the manufacturer deliberately made difficult to code for.. this was a huge change from the 1980s.
Then Microsoft did a wonderful thing. They released the Embedded Toolkits for Visual C++ and Visual Basic for Pocket PCs for free. Completely free. This was a great move. Immediately the number of applications for devices mushroomed. Happy days! Life was good. Programming was free!
And then things started to change. Instead of home computers, games consoles became the norm. Loading “The Hobbit” from a tape wasn’t as much fun as loading Mario from a cartridge. Sure it made sense, but how could you write a program for a games console? Answer: unless you were a company you couldn’t.
In my own world, Windows Mobile 5 now required the purchase of Visual Studio Standard Edition, for a few hundred bucks. This wasn’t going to break the bank, but much worse was the growing requirement for code-signing. As Windows Mobile turned more into a phone operating system, and less of a PDA gadget, it was deemed necessary to lock down features. This is probably only going to continue. As you may know, you can buy a Windows Mobile phone in a store today, bring it home, connect it to Visual Studio, and completely fail to run your application on it. Before you can run apps on your own phone, you need to work out the security certificates, and pay a fee to get it “code signed”.
Similarly, Apple released the most talked-about phone ever, and deliberately locked it down to avoid any development other than web sites. Sure, it was possible to “jailbreak it” and run apps until the last ROM update, but since then, it’s been impossible for anyone to write an application.
I find all this very sad. Sure, there are good reasons for making it harder to write applications, but for me, this makes the platforms less exciting. I’m clearly not a business manager or a lawyer, but I want to be able to write code for my gadgets. I want the 25-year younger versions of myself to get excited about the latest cutting edge technology, and make it their own. Rather than be consumers, I want them to be able to take it apart, expand it, learn about it – and make kick-ass things out of it by pushing it way beyond what the original designers ever imagined.
Instead, it seems, the industry is on a march to make it ever more difficult to do this by locking things down in order to protect sales, networks, reduce security risks, protect IP..
That said, I do see some good things still happening. Here’s a list of things that lift my spirits:
· Visual Studio Express – free versions of Visual Studio, that make it possible to write applications for the desktop using professional quality tools. Another good move from Microsoft. I wish there was a version for writing applications for Windows Mobile.
· iPhone SDK – a story on ArsTechnica today talks about the possibility of enhancing Mobile Safari to add more features suitable for writing applications. Local storage, for example. Again, anything that lets you write apps in Notepad gets my vote. It’s not Cocoa, but it’s a start.
· Xbox – the tools that let anyone write games on the Xbox are fantastic. Top marks to the Xbox team for that. Seriously, brilliant move.
· Web Applications/Ajax – the popularity of the web as an application platform grows and grows. At one time “the network was the computer”, then that stalled, and the Web seemed to be nothing but pop-up adverts, But now, thanks to innovation like GMail it’s more a case of “the information is the application”. We need some better tools, but Ajax is a great start. Again, all you need is a text editor. I like that.
· Tools on free operating systems such as Linux that include powerful C++ computers, and source management tools. Nothing like these existed back when I was using the Amiga
I guess I have a plea for anyone designing a new gadget. If you can’t make it user-accessible and programmable at the same level as you have access to, at least design some kind of sandbox that makes it powerful and safe for writing applications that are as indistinguishable from your apps as possible.
But I’m interested in your opinion. Is it more difficult now to begin programming? What it’s like to be locked-out from coding at the same level as “professionals” on most devices on the market?