While doing my degree, I often found that the longest part of my lab reports consists of propagating errors.
This is awkward to do in a normal calculator, requiring multiple calculations for what would normally be a one step calculation.
I figured I needed a better way to work with my uncertainties, so I created this calculator,
which allows numbers to be input along with their uncertainties, and handles propagation and conversions for you.
I had a lot of fun making the parser for this calculator, and making sure order of operations is followed (surprisingly difficult!).
If I ever need to make another program involving uncertainties, I now have a good framework to use to represent them.
See it in action here.
This chatbot takes you through an interactive adventure as Dudley Dursley, from Harry Potter. It was good fun to make, and left me feeling comfortable with Facebook Messenger's API.
In the future, I might port this to other chat systems that I know (Kik, Skype and Telegram).
Start talking to it here.
This page lets you make a maze, along with bodies of water, and will then attempt to find
the best possible way through it.
It also lets you compare two possible pathfinding algorithms - Depth first: a very basic
algorithm that just keeps looking further and further afeild until it finds the end. The second A*
algorithm is more advanced, and is almost always better then depth first because it tries to be
smart and look in the right direction.
Compare them both here.
Connect 4 is a game that two people play by dropping differently coloured peices into a grid, where they fall to the bottom of the column.
To win the game, one player must make a line of four of their peices in a row, either horizontally, vertically or diagonally.
I've always enjoyed connect 4, so it struck me as a natural place to start when I wanted to build a simple game to play when I was bored.
Of course, I soon got bored of asking other people to play, so I wrote some programs that would play against me. These evolved until they
reached the point that I could no longer beat them, and were quite fun to play against.
So I've made them public for you to play against, with difficulty ranging from the easy Robo-Jay, to the very hard Logical Laura!
Play Connect 4 here.
Hashing algorithms take an input (such as a password), and do some of complex mathematics to give a jumble of letters and numbers.
This jumble is always the same when you hash that password, meaning that it can be used to confirm that someone has hashed
the correct password (any other password would create a different jumble). This means that one never has to store a person's
password on a server, making it much more secure. If an attacker ends up getting the hashes, it's nearly impossible to convert
them back into the original passwords, so the system is still secure. Of course this is a very simplified explanation, but
the main point is that hashing algorithms form the basis of strong security online.
I made this page so that I could generate pre-made hashes using several of the existing hashing algorithms.
Use it here.
Regular Expressions (or RegExes, for short), are a bit of text that you use to search for other bits of text.
That does sound a bit weird, but you've probably done something simmilar - ever searched google for "Harry *"? That's
a sort of regular expression.
When programming, regular expressions are very useful for things like checking that email addresses are valid,
or finding and replacing certain words or patterns of words.
I made this as a spare-time project while learning how to use regular expressions -
it can be a little buggy due to matching html elements, but it usually does the trick, and I've grown to rely
on it whenever I need to do anything to do with regular expressions.
Try it out here.
A boolean value is one that can only be two possible things, True, or False.
It is common when programming to compare boolean values, and sometimes lots of them at once.
This can get pretty gruesome to work through all in your head, so I have made a little page that will take an expression
and give back the evaluated boolean value.
Give it a go here.