The following is a mostly complete list of all my projects (both big and small) in reverse chronological order. This page explains the motivation behind my projects and provides a permanent archive for the really small ones.
The italic lines give context on hardware and tools I was using at the time.
We're just getting started.
Ascribe is a standard for software development tools (specifically editors)
to retrieve and handle information on the various files within a project
.gitattributes file already found in many software
It is essentially an alternative to EditorConfig.
An elegant, dark colour scheme with minimal syntax highlighting for Vim.
Photon is a low-contrast colour scheme, which cares about the little details. It is based on an old version of paramount and is designed to look exactly the same on 256 colour terminals as it does on true colour terminals.
These were the early days; I was just beginning to learn how to write code, how stuff works and electrical engineering basics.
2019-02Finished apprenticeship, stayed on.
Org.vim is a minimal Org mode plugin for Vim. It provides only the absolute necessities (e.g. syntax highlighting and folding) at a high standard.
The main goal of this plugin is to replicate Vim's default Markdown editing experience for Org mode files.
An attempt to create a simple database engine and RDBMS which stores the table data in text files, using the CSV format.
This was started as a learning project to learn how databases, SQL and compilers.
2018-01-24Fourth computer (Dell XPS 13 9370).
2017-11-13First job (apprentice software developer).
2017GNOME Theme Switcher
In an attempt to automate the set up of my Fedora Linux desktop installation, I had wanted a way to quickly switch between different themes, toggle extensions, and change system settings quickly. These options were grouped into what I called "complete themes". The result was extracted into a Bash script, and has had a few minor tweaks since.
I announced it on Reddit, and the response was completly unexpected (I honestly expected no one to care). Shortly after the announcement, I stopped using it as I was mostly happy with stock GNOME, and it was too much of a hassle to install GNOME extensions at the time.
This version of Vivid was a full rewrite of was had become "Vivid-Legacy". This new version was a fraction of the size and significantly faster.
The goal of this new implementation of Vivid changed a lot during development time. Originally it was supposed to be a cleaner and faster version of Vundle and make use of the Vim's new packages feature. Later it evolved into a "meta-plugin manager" where it acted as a plugin manager for plugins (to manage dependencies). Eventually I removed that cruft (after realising it was a terrible idea), and finalised the last version in late 2018.
Shortly after creating the final version, I stopped using Vivid and switched to using Vim's package feature in combination with Git submodules.
This was an overly complex and experimental python command-line argument parser library. What made is particularly complex is that it returned a matrix, containing a lage number of items, which should have been stored in dictionary form at the very least. Usage of this library would have be a source of many bugs and pain.
On the plus side, the concept was quite neat.
This was my second programming project; I had been wanting to learn more about Vim and was interested in how the plugin management aspect of Vim worked, so I decided I wanted to try and create my own plugin manager, after a couple of failed attempts, I forked Vundle (which had been stagnant since 2014) and began making minor tweaks.
Eventually I realised that I would have to rewrite it from scratch to get it to become what I wanted. That rewrite inherited the name "Vivid", and this version was renamed to "Vivid-Legacy".
2017ALIS (Arch Linux Installation Script)
ALIS was an installer for Arch Linux. This was my first proper programming project. It was started because the installer I had previously been using (Architect Linux) had recently ceased development. I took this as an opportunity to learn more about Linux systems and how to write code by creating my own version of the installer from scratch.
The project was eventually killed by the end of the year as it had reached an insane level of complexity (typical of first projects), and I had already learnt a lot, in the process.
2016-09Began learning Vim.
2016Matching square and triangle numbers
On the 13th of July 2016, Matt Parker released a video to his YouTube channel titled "Puzzle: Is 36 the only triangle-square number?". This video inspired me to try and write a small program to solve the question he posed by calculating which numbers are both triangle and square numbers.
Upon reflection 3 years later, it is clear that this program was extremely inefficient and has made me consider writing a blog post on algorithm optimisation featuring this type of calculation.
While taking part in a mini survival-like competition as a teenager, I thought it would be interesting to see if it was possible to efficiently generate electricity on a tiny budget. The end result was capable of charging a mobile phone.
This was my first proper hardware/electrical engineering project. It spanned from November 2015 to February 2016.
2015Rock, paper scissors
During my first year of computer science classes we were given a series of tasks to complete in Python; well, lets just say that I may have got a little too competitive.
One of these tasks was to create the classic children's game "Rock, paper, scissors". I ended up creating what may very well have been the smallest Python implementation of the game at the time: totaling just 9 lines of code (all of the others were in the 20 LOC range). It is left as an exercise to the reader to work out what alowed it to become so small (it is very hacky).
After that I created a slightly more advanced version which handled stuff such as best of 3, printing the rules, etc. which was somehow still smaller than all of the others in the class. I had also wrote an implementation of "Rock, paper, scissors, lizard, Spock".
The source code for each is linked below (they have all since been placed into the public domain):
2015-09First computer science class.
2015-06Third computer (Dell Latitude D630).
2015-05-25Second computer (Raspberry Pi 2 Model B).
2014-05-25First computer (Raspberry Pi 1 Model B rev. 1.2).