Projects

2021-12-06
10 min read

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++

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

vim-albatross

sergeant

sergeant

 

sergeant pick

 

sergeant study

eulers

eulers

  • A demonstration of Euler’s method for solving first-order differential equations by simulating a bunch of different points and let 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

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, for example).
  • 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

cal8

cal8 polybar

  • Generate calendars with 8+ days in a week rather than a boring 7.
  • I used this for a while during the 2020 lockdown to see what it was like being on a different planet to everyone else. After months of investigation, “not great” and “quite pointless” is 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

life

gofu**

gofuck

  • 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.
  • April 2019

go-lmc

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]]S .
  • The original idea was to then compile brainfu** code to LMC assembly to be able to run complicated programs people had already written in brainfu*k, 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

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

Works in Progress

These are projects that I’m working on at the moment. A project not being in this section doesn’t imply that I never work on it, or that it’s finished, but just that I’m not focussing on it too much at the moment.

human-synthesizer

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.
  • Ongoing

map

map map

  • Half revision 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.
  • You can try it out here.
  • The source code is available in this GitHub repository.
  • Ongoing

epq

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.
  • Ongoing… but the deadline is soon.

Older Projects

These are some of the projects that I made before 2019. I’m proud of some them, but not proud of a lot of them. It’s funny dividing projects up like this because in a few years all the ones I think are “good” will probably end up in this category too.

punk

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

function mirror

genetic-tea

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

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

genocides

genocides

  • See how many people different genocides would affect if they were occurring again right now. Not the happiest project.
  • You can try it out here.
  • The source code is available in this GitHub repository.
  • April 2018

zombies

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

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

midi-to-sonic-pi

bad-video-calculator

bad-video-calculator

CodePen

I have a CodePen that I used a long time ago and still occasionally use to make quick websites. 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]]S ).
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

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-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

Metadata
date: 2021-12-06 20:10
tags:
- '@?blog'
- '@?public'
- '@?safe-to-post-online'
title: Projects
Attachments