About Me

I am an undergraduate student at the University of Oxford where I study Computer Science and philosophy and will admit unashamed that I am obsessed with both. When I was 9 years old, I learnt my first programming language, Microsoft Visual Basic. I will admit that this was in order to modify the client side of the since discontinued game Club Penguin, but we all have to start somewhere. Although my initial motivation was to show off my ‘cool, modded’ version of the game at school, the focus quickly moved away from Club Penguin and towards programming instead. I became fascinated by programming languages; the way that abstract and pure ideas could be expressed and then at super speed converted down the chain of abstraction into machine code and how thinking about the computer as a processor with resources could help program better high level code. But Club Penguin clearly stuck in my mind, as I learnt ActionScript 3 next.

This initial interest was luckily very broad and lead me down many rabbit holes. Firstly, the number of languages I learnt increased, teaching myself C, C++, Objective C and ARM Assembly, but also I became fascinated in computers at a hardware level, designing 3, working processors (although limited in functionality) using this tool at the age 14. Operating Systems were next on my list, breaking my second hand computer over and over again in pursuit of a satisfactory Linux experience.

It was around this time, with the assistance of GCSE RS that the Philosophy kicked in. Although my course was fully religion based, I must thank my teacher for giving me a new set of tools to look at the world with. Of course, my first application was back to programming. Computer Language Theory became the foremost obsession; questions like “Even though all programming languages target the same final destination, are there programs that are only implementable in certain languages due to the fact that humans have a limit to the amount of detail they can consider? If it is possible to write a program in ASM, but no human can due to the complexity, do we consider that program actually possible to write?” Of course an applied aspect came with this questioning, thinking of ways of expressing or presenting, formally, complex ideas such that a person can write advanced code with ease. This endeavour, caused me to learn more languages, OCAML, F#, C#, Forth, BASH, Python (sadly), JavaScript (+ variants), Java (sadly), lua and probably some more that I have forgotten about! During my summer holidays (year 9-11), I worked on the Uppingham Summer School, teaching game development in Unity.

In 6th form, the philosophy really took off. Although I didn’t do the A Level, I discovered the work of Bertrand Russell. Before this I had written philosophy off as interesting, but far more waving hands than actually working things out. Bertrand Russell taught me that philosophy was rigorous, often more so than maths, and for that I thank him. I ended up at the Oxford open day for no reason other than to miss the compulsory religious brainwashing that my school was so good at (in their defense, it was a CoE Academy) and next thing I knew, I was applying to do a MCompSciPhil at Oxford.

Between School and University, I worked for the company Enjoy Digital in Leeds, a digital marketing agency. It’s a fantastic place to work, but what I learn most of all is that I will not be looking for jobs in backend web development after graduation…

Luckily I got in, and this changed my view on both subjects radically. They taught me Haskell in the first term, a rabbit hole that I’m still falling down, as well as all the other classically Computer Sciency things you don’t really cover when you are self taught. On the Philosophy side, I have looked at general Philosophy from an analytical perspective, as well as the work for Alan Turing and huge amounts of logic.

During my first summer, I worked in the media group at ARM. More specifically, the Display SW Team, where my job was to construct a ‘shim’ that sat between a hardware composer module and the surfaceflinger of Android as well as analysis tools to look at the kind of requests android was making to the hardware so that arm could optimise their processors for the newest versions of Android.

I am now in my second year, taking modules in (finally) Compilers, Security, Models of Computation, Concurrent Programming, Lambda Calculus, Philosophic Logic and Philosophy of Logic and Language.