My introduction into computing began when I was six years old. My father bought a Sharp MZ80K on it’s UK release in 1981. By the time I was six, I was helping him copy in the BASIC programs from the various hobbyist magazines available at the time. As I learned to read more English at school, I soon began understanding more from the magazines and books I was typing from, and learned about hexadecimal, binary and the Z80 processor instruction set. When I was eight, I was given an Amstrad CPC464, and began to learn many other aspects of computing, such as memory addressing and peripheral I/O. It also helped me to learn how to operate tape drives and touch-type.
During primary school, I was often called from class to help fix the school’s BBC Micro. At home, I spent quite some time with an Osborne 1 and eventually had an Amstrad PCW8256 running a derivative of CP/M. However, it wasn’t until my first PC, an Amstrad PC1512, that I was introduced to the 16-bit PC architecture, the Intel 8086 processor, and the MS-DOS 3.2 operating system and began to understand the interaction between the operating system and the underlying hardware, and the use of C as a programming language. For my twelfth birthday, I bought Borland Turbo C Professional and earned myself a new hard disk by reworking a set of utilities that a professional programmer had written for my father’s company. And so I became a commercial programmer at an early age.
When I was sixteen, using the wages from my first job to acquire a motherboard and other parts to build a basic 386SX computer running Windows 3.1. At work, I began to help support the company’s larger clients that were using PCs with terminal emulation software at the time. I also borrowed a 14.4k dial-up modem and began to learn about the Hayes command set, PPP, TCP/IP and in turn how the Internet works under the hood.
After a couple of years, I moved to a development job. To begin with, I was armed with a VT102-equivalent monochrome serial terminal, and tasked with working on fixing bug reports using a console-based line editor. Later, we began using PCs running Windows95 over an ethernet network, using network-based terminal emulation software. Our company installed a WindowsNT server as a file server, and I began spending more time at the company as a network administrator than as a programmer.
The company then finished porting their software from Pick to the UniData database platform, running on SCO Unix on standard PC architecture servers. As the company began replacing their client’s Pick servers with Unix servers, I was sent out on site visits to perform the migration of client’s company data to new PC-based servers, including configuring their new operating system, serial port drivers, database and application software, system user accounts and access controls etc. I also performed a migration of the company data from their existing server, trained the company’s staff on the operational differences of the new system, and performed any necessary customisations. During this time, I began to feel a lot more comfortable about dealing with non-technical customers and learned how to plan and execute a successful migration project.
In my spare time after work, I’d installed a copy of RedHat Linux 3.0.3 on a computer at home, and begun to experiment with the wide variety of open source software available. I soon began to use the X Window system in preference to Microsoft Windows, and I began to learn more about the design and structure of open, collaborative software projects, both in terms of organisation of the source code and organisation of the various contributions and contributors to the projects.
Later, I moved on to work for a small company in London. As there were no other technical staff in the company, I soon learned how to work on my own under pressure, balancing the needs of both the daily administrative work and the project development work. During this time, I began to use GNOME as my preferred desktop user interface, and became interested more in developing graphical user interfaces, as opposed to the more mundane HTML form-based interfaces I was used to developing for work. I spent much of my spare time brushing up on my C development and debugging skills, and learned more about using graphical library toolkits such as GTK+. In 2004, I contributed several patches to a language translation program called ‘gtranslator’, and became it’s official maintainer for a few years, fixing bugs and applying patches filed by the user community and addressing various design issues left by the original author.
I then moved on to work for the ISP that we were selling dial-up accounts for, one of the largest in the UK at the time. As my systems administration experience was growing from dealing with Linux and FreeBSD servers every day at work, I began to get involved with the GNOME Systems Administration team, offering to help them with their backlog of support requests. I quickly learned from the team documentation how the team and the systems worked, who was responsible for which services and how the services were set up and run. I began to spend a lot of my spare time dealing with all types of technical support and account maintenance requests from the GNOME developer community. We managed our users in an LDAP directory, for which I wrote a new open source web-based administration interface, called Mango, so that account management could be delegated to a separate team of non-technical volunteers. I also spent time investigating problems with almost all the services involved, updating the team documentation wherever possible and accounts for new sysadmin team members to help handle the technical requests being generated by the ever-increasing number of developers joining the project and for services to be hosted by the project. My main achievement in the role was to plan and execute the migration of the source code control system from CVS to Subversion, which was performed at the end of December 2006.
In January 2007, my first son, Sam, was born and since then I have not had much time for any extra-curricular technical activities, and have stepped down from my roles in the GNOME project for the time being to spend more time with my family.