I’ve been building things for as long as I can remember. It started with an Amstrad CPC and a manual that walked you through drawing geometric shapes in BASIC — which I followed dutifully, because apparently that’s the kind of child I was. By the time the internet arrived properly, I was building HTML pages with inline styling, which I now know is something to be slightly embarrassed about. The first time someone actually paid me was in the early 2000s.

A Zimbabwean expat living in the UK had built an online community for people in his situation using a free open-source CMS. It worked well enough that it grew — and then the small customisations he’d made early on stopped scaling, and things started breaking in ways he couldn’t fix. We happened to work the same part-time job a couple of evenings a week, he clocked that I was someone who might be able to help, and he asked. The code was ASP. I had never looked at ASP before in my life.

I said yes anyway. I was young enough to be either confident or naive — looking back I’m not sure there was much difference — and I recognised the structure quickly enough. It wasn’t entirely unfamiliar territory: I’d been running a PHP forum on a corner of a university server, mostly so my coursemates and I could grumble about that week’s homework, and although ASP and PHP are nothing alike, the pattern of a page assembled from fifteen separate component files felt similar enough that I didn’t panic. I took a copy of his site and database home, started making changes to see what would happen — documentation be damned — and by the weekend I had found his customisations, understood why they’d broken, and re-engineered them to work the way the CMS expected. I turned up with a handful of files, we updated the live site, everything worked, and he was delighted.

From that point I was his web guy. The work covered ASP, SQL, hosting management — whatever needed doing. He didn’t pay me with bags of money, but what he did pay me made being a student considerably more bearable. I’m still grateful for that.


The PHP forum at university had a MySQL backend — free infrastructure I could use because all the computing students lived inside Solaris UNIX and had access to an unusual amount of things to try. Eventually the forum outgrew the university space, partly because I’d started adding content about Linux. I was trying to recreate that UNIX environment at home, and the closest I could get was Linux — but getting Linux to actually work back then was a project in itself.

Getting a modem running took weeks. Without the modem I couldn’t get online, so the workflow was: try something, get errors, go to university the next day, search those errors, download files, go home, try again, get new errors. When I eventually got it working I started writing up everything I’d learned — partly so nobody else had to go through the same process, and partly because writing it down made me feel like the weeks hadn’t been wasted.

That content needed a proper home. I rented space from a regional hosting company, backed up my SQL database, FTP’d everything across, and set about building a PHP-based CMS and forum from scratch using a platform called Xoops. Translating the old phpBB database structure into the new one took days of painstaking work, but eventually the members, the forum posts, and the accumulated content all arrived intact on a proper web host. I felt pretty good about that.

The site was called LinuxJourney.com. Fedora Core — version 3, I think — had become my distribution of choice after trying most of what was available at the time, and the site grew into a genuine resource for people trying to get the best out of Linux at home. I owned that domain for a long time. Eventually a full-time job ate the hours I’d been spending on it, the audience drifted, and I forgot to renew the domain. Someone else has it now and has built something considerably nicer looking. Good for them.


With ASP, PHP, and SQL all reasonably sharp, I went looking for more work.

A local IT company had tried to build a forum and news site using an open-source ASP CMS — I forget the name — and needed someone to look after it. I sounded confident enough, which at that age was most of the battle. I ended up managing their site and eventually helped them migrate from a slow locally-hosted setup to the same hosting company I was using. I looked after their ASP, SQL, and hosting until they went out of business around 2007.

Around the same time I stumbled across an online Bible built in PHP, and my mum had close ties to a local church. They had a member directory that ran to about twenty A4 pages folded into a booklet — something they’d paid me to help organise before — and I thought there was an opportunity. I could combine the directory, lock it to members only, add the Bible, and give them a proper web presence. Win-win.

I met with the church elders and described the project. They had no idea what I was talking about. So I went away, carved out a subdomain on my existing hosting, and built a demo. Met them again, showed them it, and they loved it — but needed to reach consensus before committing to anything.

The business-minded version of me would probably have offered it for free. A church full of people who’d all see my name on the site, access to a community that might need IT support — that’s not a bad trade. As it happened, the elders decided the church didn’t need a digital presence and politely sent me away. These things happen.


Looking back at this period, what strikes me is how naturally I went looking for work. Spotting a problem, pitching a solution, diving into unfamiliar code with more confidence than was strictly warranted. It doesn’t feel much like me today — or at least, it doesn’t feel like the version of me that talks myself out of things before I’ve started. Maybe it should.

The themes from this era — Linux, PHP, helping people fix things they half-built themselves, inheriting someone else’s mess and making sense of it — have followed me further than I realised at the time.

Tags: