Biography

Work

I'm an independent software consultant working in London. I help developers and businesses work smarter, communicate better and write clean, well tested code. I enjoy helping people learn how to build better software, using leading-edge tools and frameworks (mostly in the .NET / C# / HTML5+JS spaces), while getting to go home on time without stress.
First and foremost though, I'm a developer who enjoys building software that people use, especially open source frameworks and tools, and I can help you and your teams get the most from (and hopefully contribute back to) popular open source projects.
I can work with you and your business training developers through pair programming, agile "transformations", running retrospectives and doing hands on development and delivery, either solo or ideally as part of a team of your own coders. If you're interested in talking about development practices and low-risk software delivery techniques, get in touch.

I'm an advocate of continuous delivery, open source software and tooling, and shipping fast and iterating. I love building software at web scale, with document databases, distributed caches and other buzzword-friendly-but-actually-useful technology. I've done a whole lot of the keyword matching "WCF, WPF, WF, MSSQL" stuff in the past and can know how and when to use it, but I'm much more at home these days producing software that trades in the domain of the internet - RESTful services, APIs and smart use of front-end tech.

Outside of coding, I've functioned a team leader of several 8-12 man teams, acted as a scrum master, run ideation workshops, retrospectives and hired teams of developers. When required to, I've managed out-sourced teams (using a pull-request model), but I'd not recommend it as a good way to build software.

I love what I do, otherwise I wouldn't do it. You only produce great software when you're enthusiastic about what you're doing.

Education

One of my earliest childhood memories is attempting and failing to use a Commodore 64 (+ tape deck!) and slightly later, an Amstrad PCW8512. These memories certainly feel, at least in retrospect, as the starting point in my lifelong obsession with technology.

In the late 80's I moved with my family to Hong Kong (primarily due to my fathers work), giving me an odd mix of cultural references from my childhood. I was obviously fairly young, however my memory of the island, the schools and the surrounding areas of the middle and far east (which I remember visiting on various holidays) is still clear and striking. My parents divorced in the early 90's and in 1992 I returned to the Manchester with mother and siblings. And a Gameboy and a stack of 30 games.

The rest of my teenage years, in retrospect, were very happy. I became obsessed with videogames, but not really to play them, but more to break them. I gained a childhood obsession with what amounts to tedious bug testing of 8-16 bit games, and that lead to my needing to know how they worked. I dabbled around with various flavours of Basic, like any curious child and seemed to enjoy reading Computer Shopper and PC Format after my mother brought back an old 386 from work so she could work from home (complete with Dos, Windows 3.x and WordStar) in 1993.

In early 1995, after much pressure and begging, my parents bought a 486-DX2, from Toys' R' Us, of all places. One of the early Compaq Presarios, it had a CD-ROM drive and I could play Star Wars: Rebel Assault on it. On top of that, I could play all of LucasArts adventure games. After spending time with the admittedly fancy looking Game Boy and then Mega Drive, the difference in both pace and aesthetic of PC gaming was both exciting and addicting. For the first time I had the ability to start digging through the games files on the file system and see what I could break. We managed to get some kind of Windows 95 upgrade deal when we bought the computer (which I remember installing off 50+ floppies that I still have), and the short answer to the question "what could I break" was "Windows". And it was fun.

I broke that computer so many times I cost our family a small fortune in repairs. But then I learned to fix it, and then I learned how to fix other computers and other problems. At the same time, I started attending "The" Manchester Grammar School. I remember touring the school at an open day, a very prestigious institution, established 1616, devoted to a high standard of learning and I remember seeing huge computer labs and feeling particularly excited. When I started school there however, it became apparent that the institution was just a little bit too traditional and they actually didn't teach anything more than basic word processing.

Throughout my teenage years I maintained a healthy obsession with videogames, cinema, and later as a result, music. The passion for these subjects combined directly lead to "taking programming seriously" and really getting into computing. From 1996 onwards, after reading about the "Internet" in PC Format, I convinced my mother to sign up to Compuserve, and received one of their ever useless numerical username and email addresses and distinctly remember struggling to configure WinSock to browse the early internet in Mosaic. It was an ugly experience, but I discovered USENET and IRC at the same time which somewhat sweetened the deal. I'd been subscribing to Empire magazine since we returned to the UK, and I decided I wanted to make a website about films. It obviously didn't work (and in 1999 "Ain't It Cool News" effectively did what I wanted to do) but I learned HTML (3!) on the way and caught the web publishing bug.

I attempted to run a few websites until in 1997 "Grand Theft Auto" was released on the PC and I got into the game modding scene. I'd dabbled earlier when Quake was released a year earlier, but spent more time enjoying laggy deathmatch than hacking the game. I distinctly remember DMA design releasing the data format documentation for GTA and a number of user created level editors and guides getting released (which for trivia, were later used by DMA to produce GTA2) and I built, at first, a few simple patches for the game. In order to distribute these patches, I started a website, which in turn, I needed to maintain. So I learned Perl. And then I spent some time attempting to learn C++ from the biggest book I had ever seen in my life. Then one month PC Format featured Borland C++ Builder on it's covermount and I started to approach development seriously, in part due to the (for the time) groundbreaking RAD tools and WYSIWYG designers available in C++ Builder 3.

The dotCom bubble was in full force around that time, and I got a few small jobs producing websites for small firms, friends and friends parents, using my newly learnt development chops. It was all very small town, but exceptionally character building. My mum realised I was on to something, and despite her lack of technical knowledge did her best to encourage it. I enrolled in night classes at a local college when I was 15 and did a City and Guilds certification in C and C++. The average age of the students there was about 35 and I felt a little out of my depth, but I managed to produce vending machine simulating C console apps with the best of them.

As any contrary teenager would, when I was at Manchester Grammar, effectively unable to do any technology, I spent all my time doing so (often letting my other work suffer) and as a result, when I graduated, I was absolutely certain I wanted to study computer science at degree level. I spent a large portion of my degree wishing I'd done art. In retrospect, this was because I don't feel the majority of the degree was interesting or well taught, it was over subscribed and not especially enjoyable, but I pushed through. I did occasional contract work on small development projects throughout uni. In the summer between my second and third years I started doing occasional work for the trading services department of the university, cumulating in the porting of a registrations system into the then-new .Net framework from VB6. I pretty much learned VB6 on the job the first week there, and I loved programming with meaning again.

I've never really looked back.