I started writing software when I was 9 years old, after my brother, entirely by accident, discovered an easter egg in a game he was playing. A face, hidden inside a lamp (for those of you familiar with the matter, this was Dan Johnson’s face, a running gag at Insomniac Games for a few years). “I want to learn how to do that.”
Fast forwards a few months of having dabbled in various dialects of BASIC, a family member recommended I pick up C, as it was a far more serious language and would carry me much further. Later on, I started to pick up C++ as well. This lead to projects such as writing a relatively simple text editor for Windows, which I now realise was a poor attempt at re-inventing Emacs.
As my knowledge grew, so did my ideas. I started toying with writing my own operating system, among other things, and this led me to get into systems development. Around this time, I also started experimenting, mentally, with the idea of what I called a “global file system”. My idea was to have people sign up to some network, somehow, and donate storage. However much they donated, they got that much back on the network. Alright on paper, but had a series of problems that weren’t very obvious to 14 year old me.
After starting at the University of Essex, things began to clarify for me significantly. The project complexity I was able to handle rapidly increased, with all these incredibly smart people surrounding me, that I could bounce ideas off, and collaborate with. The course itself was somewhat incidental to this. This was the communal mindset, driving me to greater heights. I played with some network protocols in C, toyed around a lot with LISP, and eventually found Rust.
This facilitated me to then apply to the Google Summer of Code, at the end of my final year, for Redox. My project was to write an ACPI machine language interpreter for the kernel. AML is used, as a bit of background, to control the interface between the hardware and the software – hardware can request the software to spin up fans, for example, and the software will do it through AML. Or, the software might want to turn off a disk it isn’t using, which is again done through an AML function – probably a different one though.
I was sold on Rust for several years, and worked on all kinds of projects in the language. Redox was but one. A ray tracer, an implementation of ping (which I originally intended to flesh out into a remote server management thing, but that didn’t quite come into fruition), etc.
All this was helped by my time at Rolls-Royce. I’d seen safety critical code, and the way it used to be written. Very careful management of C, Ada, and so on. While it worked, it was a little clunky. A lot of manual processes were in place to ensure safety was maintaned, as well as a lot of automated processes which could take a very long time. Rust avoided all of this, by taking an altogether more modern approach to the same goal.
While all this was going on, I started to build up a moral framework for my work. I was strongly in favour of open source, both for moral and practical reasons. Knowledge should be shared, and if a tool doesn’t do what I need it to, why shouldn’t I modify the tool?
I also became heavily involved in electronic rights – privacy, anti-censorship, and so on. I made a personal vow that no software I wrote would ever weaken somebody’s electronic rights, nor put their life in danger, nor do anything else which could actively harm somebody. And, where I could, I would work towards improving said rights of people, through technology.
When MaidSafe reached out to me, I was pretty much instantly sold. It combined an idea I’d had years ago, which I was still mulling over, with my favourite language to code in, along with a company that had all of the same morals as me. And, to boot, it was remote, giving me all the flexibility I got to enjoy while coding for Redox. All this seems right up my street as far as work goes, allowing me to solve exactly the sort of problems I’m interested in solving, using all the technologies I want to use.