# Projects

> Source: https://ollybritton.com/misc/projects/ · Updated: 2025-02-28 · Tags: blog, safe-to-post-online

> 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](https://github.com/ollybritton/aqa) and [my GitLab](https://gitlab.com/ollybritton). 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](aqa.png)](https://github.com/ollybritton/aqa)

* An implementation of the [AQA GCSE pseudocode specification](https://teachinglondoncomputing.files.wordpress.com/2017/05/aqa-pseudocode.pdf) 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](https://repl.it/@ollybr/AQA).
* More information and the source code is in [this GitHub repository](https://github.com/ollybritton/aqa).
* _October 2019_

### `go-albatross`
[![vim-albatross](albatross.gif)](https://github.com/albatross-org/go-albatross)

* An open source note-taking tool in the style of [Roam](https://roamresearch.com/) or [Obsidian](https://obsidian.md/), 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](https://github.com/albatross-org/go-albatross).
* See also [`vim-albatross`](https://github.com/albatross-org/vim-albatross), a Vim plugin.
* _2020 - 2022_

### `sergeant`
[![sergeant](sergeant.png)](https://projects.ollybritton.com/sergeant)
[![sergeant pick](sergeant-pick.png)](https://projects.ollybritton.com/sergeant)
[![sergeant study](sergeant-study.png)](https://projects.ollybritton.com/sergeant)

* A tool for easily practicing applying knowledge, in the style of [Anki](https://apps.ankiweb.net/) or [Mnemosyne](https://mnemosyne-proj.org/) 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](https://ollybritton.com/blog/graveyard/sergeant-applying-spaced-application-to-a-levels/).
* The source code is available in [this GitHub repository](https://github.com/albatross-org/sergeant).
* _Ongoing_

### `eulers`
[![eulers](eulers.png)](https://projects.ollybritton.com/eulers)

* A demonstration of [Euler's method](https://en.wikipedia.org/wiki/Euler_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](https://projects.ollybritton.com/eulers/).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/eulers-method).
* _January 2022_

### `3d-noughts-and-crosses`
[![3d-noughts-and-crosses](3d-noughts-and-crosses-new.png)](https://projects.ollybritton.com/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](https://projects.ollybritton.com/3d-noughts-and-crosses).
* I've written about why you can never get a draw here: [Can you ever draw in 3D noughts and crosses?](https://ollybritton.com/blog/can-you-ever-draw-in-3d-noughts-and-crosses/).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/3d-noughts-and-crosses).
* _February 2022_

### `cal8`
[![cal8](cal8.png)](https://github.com/ollybritton/cal8)
![cal8 polybar](cal8-polybar.png)

* 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](https://github.com/polybar/polybar)'s default clock to show the alternative day of the week.
* More information and the source code is in [this GitHub repository](https://github.com/ollybritton/cal8).
* *July 2020*

### `life`
[![life](life.gif)](https://github.com/ollybritton/life)

* Run simulations of [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_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](https://github.com/ollybritton/life).
* *August 2019*

### `gofu**`
[![gofuck](gofuck.gif)](https://gitlab.com/ollybritton/gofuck)

* A Go implementation of "[brainfu**](https://en.wikipedia.org/wiki/Brainfuck)", a Turing-complete programming language consisting of only 8 commands: `<>+-.,[]`.
* The source code is available in [this GitLab repository](https://gitlab.com/ollybritton/gofuck).
* If you want to try out writing brainfu** for yourself, there's this [nice webpage](https://minond.xyz/brainfuck/) where you can try it out yourself, not written by me.
* *April 2019*

### `go-lmc`
[![go-lmc](go-lmc.gif)](https://github.com/ollybritton/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](https://ollybritton.com/notes/a-level/computing/topics/lmc/).
* 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](https://www.peterhigginson.co.uk/LMC/) that runs in the browser.
* The source code is available in [this GitHub repository](https://github.com/ollybritton/go-lmc).
* *September 2020*

### `stacked`
[![stacked](stacked.png)](https://gitlab.com/ollybritton/stacked)

* A very basic stack-based programming language.
* Precursor to [`aqa++`](#aqa), made whilst I was learning about parsing.
* You can see the source code in [this GitLab repository](https://gitlab.com/ollybritton/stacked).
* *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](https://github.com/ollybritton/timetable).
* *November 2019*

### `human-synthesizer`
[![human-synthesizer](human-synthesizer.png)
](https://projects.ollybritton.com/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](https://projects.ollybritton.com/human-synthesizer).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/human-synthesizer).
* _Feburary 2022_

### `map`
[![map](map-new.png)](https://projects.ollybritton.com/map)
[![map](map-3d.png)](https://projects.ollybritton.com/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`](https://github.com/vasturiano/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](https://ollybritton.com/blog/about-this-website/).
* You can try it out [here](https://projects.ollybritton.com/map/).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/map).
* January 2022_

### `epq`
[![epq](epq.png)](https://projects.ollybritton.com/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](https://projects.ollybritton.com/epq).
* 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`
[![punk](punk.png)](https://projects.ollybritton.com/punk)

* Recreate Daft Punk's "[Harder Better Faster](https://www.youtube.com/watch?v=gAjR4_CbPpQ)" using the vocal samples!
* You can try it out [here](https://projects.ollybritton.com/punk/).
* The source code (and raw binary data committed to a git repository) is available [here on GitHub](https://github.com/ollybritton/punk).

### `function-mirror`
[![function mirror](function-mirror.png)](https://projects.ollybritton.com/function-mirror)

* Run a mathematical function on the RGB values of a webcam, which I made at [Hacksoton 2017](http://hacksoton.com/).
* You can try it out [here](https://projects.ollybritton.com/function-mirror/).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/Function-Mirror).
* *May 2017*

### `genetic-tea`
[![genetic tea](genetic-tea.png)](https://github.com/ollybritton/GeneticTea)

* 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](https://github.com/ollybritton/GeneticTea).
* _August 2018_

### `store-destruct`
[![store-destruct](store-destruct.png)](https://projects.ollybritton.com/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](https://projects.ollybritton.com/store-destruct/).
* The source code is available in [this GitHub repository](https://github.com/ollybritton/storedestruct).
* *January 2017*

### `zombies`
[![zombies](zombies.png)](https://projects.ollybritton.com/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](https://projects.ollybritton.com/zombies).
* Built on a [SIR](https://mathworld.wolfram.com/SIRModel.html) model, and the source code is available in [this GitHub repository](https://github.com/ollybritton/zombies).
* *September 2018*

### `corporate-jargon-generator`
[![corporate-jargon-generator](corporate-jargon-generator.png)](https://projects.ollybritton.com/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](https://projects.ollybritton.com/corporate-jargon-generator/).
* The source code is available [here on CodePen](https://codepen.io/ollybritton/pen/qYwomG).
* _January 2018_

### `midi-to-sonic-pi`
[![midi-to-sonic-pi](midi-to-sonic-pi.png)](https://projects.ollybritton.com/midi-to-sonic-pi/)

* Convert a single-voice MIDI file into something that can be played with [Sonic Pi](https://sonic-pi.net/).
* You can try it out [here](https://projects.ollybritton.com/midi-to-sonic-pi/).
* The source code is available [in this GitHub repository](https://github.com/ollybritton/Midi-To-Sonic-Pi-Website).
* _May 2017_

### `bad-video-calculator`
[![bad-video-calculator](bad-video-calculator.png)](https://github.com/ollybritton/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'"](https://www.youtube.com/watch?v=rLz1gBKk-t8) 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](https://en.m.wikipedia.org/wiki/Newton%27s_method) it uses to find the root.
* You can check out the source code [in this GitHub repository](https://github.com/ollybritton/bad-video-calculator).
* *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](https://codepen.io/ollybritton/full/XWjKKev)                    | I use this sometimes to make writing $\LaTeX$ notes a little easier (such as [Further Maths - Vectors](https://ollybritton.com/notes/a-level/further-maths/topics/vectors/)).                                                                                                                                                                                                          |
| [Keytar](https://codepen.io/ollybritton/full/PveKxj)                              | Play basic guitar chords using a computer keyboard. The example given is Hotel California.                                                                                                                                                                                                                          |
| [Cheat at GeoGuessr](https://codepen.io/ollybritton/full/REeRBb)                  | You used to be able to use this tool to cheat at [GeoGuessr](https://www.geoguessr.com/), 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](https://codepen.io/ollybritton/full/wYdbwG)                        | A very sneaky attempt at a fishing (not phishing) attack.                                                                                                                                                                                                                                                           |
| [Super Duper Secure Hashing Algorithm](https://codepen.io/ollybritton/pen/YLovNr) | A very secure hashing algorithm.                                                                                                                                                                                                                                                                                    |
| [Type-What-You-Want-Base-Conversion](https://codepen.io/ollybritton/full/VMmpwx)  | Convert between mathematical bases using almost plain English.                                                                                                                                                                                                                                                      |
| [Pushy 3d Buttons](https://codepen.io/ollybritton/full/JXYZRo)                    | 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](jump.gif)](https://gitlab.com/ollybritton/jump)

* A tool I used for a while for quickly hopping around the filesystem before I knew about [`wd`](https://github.com/mfaerevaag/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](https://gitlab.com/ollybritton/jump).

### `jbook`
* Kind of the precursor to the website you're on right now. I used to use [`jrnl`](https://jrnl.sh/) (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](https://github.com/ollybritton/jbook).
* *Jan 2020*

### `spotify-song-cleaner`
[![spotify-song-cleaner](spotify-song-cleaner.png)](https://github.com/ollybritton/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](https://github.com/ollybritton/spotify-song-cleaner).
* _July 2020_

### To Add
- Curiosity rover
- Frictionless pool
- Squares
- SumChum
- StupidChess
- Pyrattle
- Mathscroll
- SW Coast Path
- FRACTRAN

---
Olly Britton — https://ollybritton.com. Machine-readable index: https://ollybritton.com/llms.txt
