Various

While updating this website I looked through some of my repositories and found a few cool gems.

TwoSips

I'm frequently converting images from one format to another (e.g. to add pictures of cats to my presentations) and my go-to solution has typically been to use sips from the command line. However, I never remember its usage or options that I need to set and always have to look at the manual. Due to having been a Mac OS developer in a previous life, I got a bit cold-turkey on the absence of square brackets in python at some point and wrote a quick Objective-C App. Its still incomplete in terms of being polished, but its fully functional and I use it once every couple of months.

code App

Checkers

In my last undergrad year, one of our coursework assignments was to implement a Checkers game. 2-player games are a pretty cool AI problem and the way one implements tic-tac-toe or Checkers is essentially the same as one would produce a basic Chess engine. Once its figured out how a Game state is represented and how successors of that state are built, its all MiniMax from then on. My checkers game implements MiniMax (actually NegaMax, because its slightly simpler implementationwise), together with Alpha-Beta Pruning. The code is in Java, but I have also created a Python version - basically to check whether my answers on mock-exam papers are correct.

Checkers MiniMax Python

Braitenberg Vehicles

In my second undergrad year, we were playing around with embodied AI. One of the coolest things was implementing the Braitenberg Vehicles behaviour, using Rodney Brooks' Submsumption Architecture on Lego Mindstorm robots. The code is super simple and as part of my coursework submission I've filmed some of the Lego Mindstorm Braitenberg Vehicles in action.

Braitenberg Vehicles