Projects

Astrill Extractor

Astrill, my VPN of choice, allows you to export OpenVPN config files for all its VPNs, allowing you to connect on platforms it doesn’t provide clients for, which albeit isn’t many. The AUR package astrill has started becoming really unstable on my machine recently, so I decided to switch it out for ovpn files, as gnome has excellent support for OpenVPN.…

Attack on blocks game

Attack on Blocks is a space invaders style game I wrote for my IT coursework, for the games development unit. We could make any game we wanted, provided it could be done within the time limits, was very easy to play, and easily run on the college computers (which were pretty terrible).…

Backgrounds

Even though I use i3, a window manager well known for being minimal, and black, I still like having desktop wallpapers. It makes my desktop feel far less plan, and my lock screens far less boring. I’m not one for keeping things the same, and so my backgrounds cycle, every minute.…

CircleCI Artifact Proxy

My favourite feature of CircleCI, besides the fact it’s the fastest CI I’ve used, and support docker natively, is artifacts. Artifacts allow you to store files from your build, and download them from the web interface. This means you can use the interface to build mobile apps, installers, or even disk images!…

Date Group

Over the years, I’ve taken a lot of photos on my phone, and it’s hard to keep them organized properly. Large directories of files don’t play nicely with Nextcloud, my storage of choice. date-group is my tool to solve this. Give it a directory of files, and it’ll group them into directories by year and month.…

Django Plaintext Password

It’s well known that storing passwords in plain text is a bad idea, A really bad idea. For production applications, there really is no excuse for it. Really, there’s no real reason for this module to exist. Although there are a couple reasons it might be handy.…

Django SRI

Subresource integrity (SRI) is a way of securing your remote CSS and JS from being modified without your consent. This works by adding a hash of the file to the script or link tags, and if the remote file doesn’t match, it’s not executed.…

Docker Static Server

Sometimes, you just need a simple container to host some static files. Whether that be files for download, images to show, or a directory of files. # Why not just use Nginx? If you’re not really bothered, the default nginx container will work just fine for you, however this container has a few modifications which make it more suited to serving static files:…

Git Mirror

Recently, I started moving most of my archived projects from GitHub onto my own Git server. Unfortunately, the self hosted offerings aren’t perfect for mirroring. Gitea supports mirroring repositories into itself, but not pushing (work is planned). GitLab supports pushing repositories to an upstream, but not mirroring into itself unless you pay them a lot of money.…

Grafana Apprise Adapter

Grafana is a great application for monitoring. With a plethora of data sources allowing for analysing and cross-referencing several metrics. Unfortunately, it doesn’t support much in terms of notifications. Apprise is a great library for creating generic integrations between applications and messaging services for receiving notifications.…

Hugo Theme RevealJS
3 minutes

RevealJS is a versatile front-end framework for creating slide show presentations in your browser using HTML. It’s designed to be easy to use, and create high-quality presentations. To create a presentation with RevealJS, you’ll still need a server to run the presentation from.…

Lantern

Lantern is a generic web server which wraps any application and allows it to respond to HTTP requests. The request body and headers are passed to stdin as JSON, and anything sent to stdout is returned to the client. Is this useful?…

MDCal

MDCal is a project designed to make creating calendar feeds simpler. Static site generators are great, but sometimes you need a calendar rather than a website. View on GitHub Demo: https://mdcal.netlify.app/

Morse code decoder

It’s not often people need to decode text into morse code (and visa-versa), but if I had something like this when I needed to, it would have saved me hours of time! # Usage In order to make it accessible for as many people in as many languages as possible, I converted our code from python to JSON.…

My Dotfiles
#arch #linux

Dotfiles are a way for people to store settings and preferences to make setting up a new computer that much easier. I use both my laptop, desktop and work machine almost every day, and want them to be set up in an almost identical way.…

Notes

As someone who spends a lot of time at a computer, you pick up certain commands and tricks which make life easier. Unfortunately, the human brain can only remember so much. And shell reverse search can’t remember everything. To store things like this, I created a “notes” site, powered by Gatsby and gatsby-theme-code-notes.…

Prank Lock

Everyone knows that you should lock your devices when you’re not using them, but it still shocks me just how few actually do. Leaving your computer unlocked whilst you leave it, whether it be for the toilet, lunch, or to leave the house greatly increases the chance of someone compromising your machine and stealing important, possibly sensitive information.…

Wiki Game solver

The Wiki Game is an online game where you attempt to navigate through Wikipedia from a start page to a goal page using as few other pages as possible. Not long after I was shown it, I realized that I really wasn’t very good at it.…

Yoga Pal
#linux

Once I started work, I bought myself a Lenovo Yoga 3 14" laptop, because I needed a thin and light laptop for trains and the office. This came with windows, which within 10 minutes was running Ubuntu Gnome! Ubuntu greatly increased the performance, but I had to sacrifice all the screen, touchpad and keyboard customization when changing ‘modes’.…

Buy Me A Coffee