Hi, I'm Nathan, I'm 20 and I'm currently studying computer science at the University of Cambridge. I enjoy programming more than I reasonably should. The main languages I work with are Java, C/C++, and, more recently, Rust.
My main technical interests are programming languages and operating systems. I have a several ongoing projects in these areas.
Beyond the realm of 1s and 0s, I enjoy studying Asian languages, particularly Japanese and Chinese. All the translations on this site were done by myself, so if you spot a mistake please let me know!
My currently active projects are:
'naisei' is a project of mine to write a self-compiling C compiler. Its currently very limited but I believe I will have it working within the next few months.
'kaku' is a much longer-term project to develop a very restricted UNIX-like kernel, mirroring the original v6 kernel but for modern multi-core x86 and x64 processors. I'm using this project as a learning exercise to build on courses I've taken at university in order to gain a better understanding of operating system design and implementation.
'block' is a domain-specific programming language (currently implemented in Java although that is likely to change) for web-templating. It offers a number of features that other such languages do not provide such as a heavy focus on reusability and inheritance. Although this is the least technically demanding of my current projects, it is far and away the most useful so if you're interested please check it out!
I've also worked on these projects (with varying degrees of success) which you may find interesting:
Code Atlas was a web application I developed for procedurally recommending Github repositories to contribute to based on the preferred languages of the user and other repositories they had contributed to.
'grassland' is a simple 3D game framework written in Java using LWJGL. It was created by myself and my friend Thomas Crawley in around two weeks. We used it to create a game we entered in the Hackers at Cambridge annual game jam and placed in the top three submissions.
Anocube was an attempt I made at implementing a distributed computing platform. Although it was a fantastic project to learn from, the performance of the platform meant that it could not be used as I had hoped.
Anoscript is a simple scripting language I developed while working on Anocube. The idea was that the language sand-boxed developers such that processors could trust the code they were running. For this to work, the language had to be interpreted. However, this proved to be the limiting factor in the performance of the Anocube platform as a whole. Despite this, the project proved to be a fantastic introduction to language development and also useful enough that I still use it for small scripts from time to time.
Industrial Games is a blog I ran for several years where I would post about games that I had written. Over the years I ran the blog I programmed a number of titles, some of which achieved a modest level of popularity. The most successful of these was a game called "The Infinite Potato Complex". The majority of the games I wrote were written as part of game jams and are for the most part still available to download via the Industrial Games website.
The best way to contact me is by email at email@example.com.