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 secret key generator
# What’s a “secret key”? Django’s SECRET_KEY is the setting used as the basis for secret generation and signing. It’s used to generate session keys, password reset tokens and any other text signing done by Django. For the safety and security of a Django application, this must be kept as secret as possible.…
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 minutesRevealJS 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 #linuxDotfiles 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
#linuxOnce 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’.…