Projects
This list is 2 years out of date.
This a list of my projects, i.e. things I’ve spent time working on in the past. They’re loosely sorted by how exciting I think they are. For the most part, all of the code is available on my GitHub and my GitLab. On projects that you can try out right now in the browser, you can either click the link in the text or just click on the image.
aqa++
- An implementation of the AQA GCSE pseudocode specification in Go. For some reason, AQA decide to use an imaginary programming language to teach GCSE Computer Science rather than something more practical. This project “un-pseudocodes” their pseudocode by lexing, parsing and evaluating programs so you can actually run them.
- You can try it here on Replit.
- More information and the source code is in this GitHub repository.
- October 2019
go-albatross
- An open source note-taking tool in the style of Roam or Obsidian, with a focus for use on the command line.
- I’ve since switched to using Obsidian for notes which is a much better experience given my usecase, though I still think that this project is useful for anyone who wants a purely terminal-based note taking application.
- More information and the source code is in this GitHub repository.
- See also
vim-albatross
, a Vim plugin. - 2020 - 2022
sergeant
- A tool for easily practicing applying knowledge, in the style of Anki or Mnemosyne using statistical modelling to pick questions that it thinks will improve a student the most.
- I’ve written some more about it here (maybe): [[Sergeant, applying spaced application to A-levels]]B.
- The source code is available in this GitHub repository.
- Ongoing
eulers
- A demonstration of Euler’s method for solving first-order differential equations by simulating a bunch of different points and letting you manipulate them interactively.
- You can try it out here.
- The source code is available in this GitHub repository.
- January 2022
3d-noughts-and-crosses
- Play noughts and crosses in 3D, where each face is like a segment of a Rubik’s cube (so you can get diagonals through the cube or straight lines through a face).
- You can try it out here.
- I’ve written about why you can never get a draw here: [[Can you ever draw in 3D noughts and crosses?]]B.
- The source code is available in this GitHub repository.
- February 2022
cal8
- Generate calendars with eight or more days in a week rather than a boring seven.
- I used this for a while during the 2020 lockdown to see what it was like being on a different planet to everyone else, so when it was my Saturday it was their Wednesday or something. After months of investigation, “not great” was the answer.
- I also used this tool to change polybar’s default clock to show the alternative day of the week.
- More information and the source code is in this GitHub repository.
- July 2020
life
- Run simulations of Conway’s Game of Life from the terminal.
- Written as one of my first projects in Go, so the code is pretty awful.
- More information and the source code is in this GitHub repository.
- August 2019
gofu**
- A Go implementation of “brainfu**”, a Turing-complete programming language consisting of only 8 commands:
<>+-.,[]
. - The source code is available in this GitLab repository.
- If you want to try out writing brainfu** for yourself, there’s this nice webpage where you can try it out yourself, not written by me.
- April 2019
go-lmc
- A Go implementation of “Little Man Computer”, a model of computation where a little man is running about doing all operations.
- It was taught as part of my computer science A-level and my notes for it are here: [[Computing - Little Man Computer]]A.
- The original idea was to then compile [brainfu](https://en.wikipedia.org/wiki/Brainfuck) code to LMC assembly to be able to run complicated programs people had already written in brainfu, but I never ended up doing this.
- This is a much more visual version by Petter Higginson that runs in the browser.
- The source code is available in this GitHub repository.
- September 2020
stacked
- A very basic stack-based programming language.
- Precursor to
aqa++
, made whilst I was learning about parsing. - You can see the source code in this GitLab repository.
- April 2019
timetable
Seed: 1573504119091066000
DAY | ITEMS
------------+-------------------------
Monday | Maths, Art, Drama
Tuesday | English, IT, History
Wednesday | Science, Geography, PE
Thursday | Music, Art, Maths
Friday | English, IT, History
- Generate weekly plaintext timetables from piping a newline-separated list of subjects/activities/anything into the program.
- My original use of this was as a revision timetable for my GCSEs.
- If I was going to write this again, I’d probably just make it a shell script.
- The source code is available in this GitHub repository.
- November 2019
human-synthesizer
- A fun theremin-like instrument that uses JavaScript to convert your hand location into a pitch/frequency.
- You can try it out here.
- The source code is available in this GitHub repository.
- Feburary 2022
map
- Tool for visualising the connections between topics in the 4 A-levels I take.
- I owe the fancy 3D rendering and even 2D rendering to the
force-graph
project that is making the whole thing a lot easier than it would be otherwise. - Ultimately never finished because the graph is so dense; I think that especially for A-level maths, everything you learn is so foundational that everything really connects to almost everything. Still fun to explore though.
- Did a similar thing with my university notes but automatically using embeddings in [[About this website]]B.
- You can try it out here.
- The source code is available in this GitHub repository.
- January 2022_
epq
- My EPQ (Extended Project Qualification) project about how sensory substitution technologies can be used to help blind people. The idea is that you can turn pictures into sounds!
- You can try it out here.
- The source code is in a private GitHub repository, but you can find it all with Inspect Element anyways.
- January 2022
Older Projects
These are some of the projects that I made before 2019.
punk
- Recreate Daft Punk’s “Harder Better Faster” using the vocal samples!
- You can try it out here.
- The source code (and raw binary data committed to a git repository) is available here on GitHub.
function-mirror
- Run a mathematical function on the RGB values of a webcam, which I made at Hacksoton 2017.
- You can try it out here.
- The source code is available in this GitHub repository.
- May 2017
genetic-tea
- Use a genetic algorithm to slowly hone in on the best cup of tea for your preferences, by modelling potential cups of tea as a population that could change over time.
- This was the first project where someone else actually contributed on GitHub who I didn’t actually know.
- The source is is available in this GitHub repository.
- August 2018
store-destruct
- The idea was that you could load this website up on a computer in a computer store and click the button. It would then enter full-screen mode and stay perfectly black until someone moved the mouse or clicked, after which it would start a 2 minute timer and start beeping progressively louder, saying that the computer was malfunctioning and was about to blow up. Fun stuff!
- You can try it out here.
- The source code is available in this GitHub repository.
- January 2017
zombies
- Simulate a zombie outbreak by varying the chance of infection on bite, the rate that zombies die and the rate that the dead become zombies.
- You can try it out here.
- Built on a SIR model, and the source code is available in this GitHub repository.
- September 2018
corporate-jargon-generator
- Smash a bunch of nouns, adjectives and verbs together to make a phrase which sounds like something you could say about a business.
- E.g. “enthusiastically using users to enhance supply chains”.
- You can try it out here.
- The source code is available here on CodePen.
- January 2018
midi-to-sonic-pi
- Convert a single-voice MIDI file into something that can be played with Sonic Pi.
- You can try it out here.
- The source code is available in this GitHub repository.
- May 2017
bad-video-calculator
- Calculate the exact percentage to speed up videos like “All Star by Smashmouth but it gets 15% faster everytime he says ‘the’” so that the final video length is some duration exactly.
- The problem is solved by turning it into a problem about finding the roots of a polynomial, and I couldn’t think of a nice picture to use here so this is the version of Newton’s method it uses to find the root.
- You can check out the source code in this GitHub repository.
- May 2017
CodePen
I have a CodePen that I used a long time ago and still occasionally use for quick testing. I’ve put the worthwhile ones below:
Pen | Explanation |
---|---|
Matrix to Latex | I use this sometimes to make writing $\LaTeX$ notes a little easier (such as |
[[Further Maths - Vectors]]A). | |
Keytar | Play basic guitar chords using a computer keyboard. The example given is Hotel California. |
Cheat at GeoGuessr | You used to be able to use this tool to cheat at GeoGuessr, before they changed it so you had to pay to play and stuff. Because they were using the Google street view API, the coordinates of where you were ended up in an API request, which you could snoop with some JavaScript. |
Fishing Site | A very sneaky attempt at a fishing (not phishing) attack. |
Super Duper Secure Hashing Algorithm | A very secure hashing algorithm. |
Type-What-You-Want-Base-Conversion | Convert between mathematical bases using almost plain English. |
Pushy 3d Buttons | This is the first project on my CodePen. I was over the world because it got 36,000 views. |
Quite Boring
These are projects I’ve done in the past that probably aren’t as exciting as some of the other ones.
jump
- A tool I used for a while for quickly hopping around the filesystem before I knew about
wd
, which is superior in pretty much every single way. - This was one of my first projects in Go, but changing the current directory of a shell requires some really funky hacks if you want to do it from a binary. So this project ended up being more like a key-value store, where a
zsh
alias would call this program to work out the location of the directory you wanted to go to. - The source code is available in this GitLab repository.
jbook
- Kind of the precursor to the website you’re on right now. I used to use
jrnl
(not my project) for writing on the terminal, but wanted a fancy way of outputting it as a website. - The source code is available in this GitHub repository.
- Jan 2020
spotify-song-cleaner
- Spotify has two places where you can save albums and songs. There’s your “library” which contains artists, albums and playlists you’ve added, and you’re “liked songs” which are individual songs you’ve hit like on. However, Spotify used to add all the songs in an album you saved to your liked songs, rather than your library. Ages ago I wanted to download a bunch of albums for offline, so my liked songs got cluttered with thousands songs that I knew but that weren’t necessarily my favourites. This made shuffling my liked songs annoying because it would include a bunch of songs I didn’t want to hear.
- This tool removed consecutively saved albums from my liked songs so that I could add them to my library instead and keep my liked songs just as my favourites.
- Very over-engineered but I thought I’d include it here. The XKCD diagram above is accurate – I would’ve saved more time doing it all by hand rather than writing a fun program to do it instead.
- The source code is available in this GitHub repository.
- July 2020
To Add
- Curiosity rover
- Frictionless pool
- Squares
- SumChum
- StupidChess
- Pyrattle
- Mathscroll
- SW Coast Path
- FRACTRAN