I am a computer science student who is in their third year at Hull University. I started out teaching myself about various web technologies, and then I managed to get a place at University, where I am now. I've done a year in industry too, which I found to be particuarly helpful in learning about the workplace and the world.

I currently know C# + Monogame / XNA (+ WPF), HTML5, CSS3, Javascript (ES6 + Node.js), PHP, C++, and a bit of Python. Oh yeah, and I can use XSLT too.

I love to experiment and learn about new things on a regular basis. You can find some of the things that I've done in the labs and code sections of this website, or on GitHub. My current projects are Pepperminty Wiki, an entire wiki engine in a single file (the source code is spread across multiple files - don't worry!), and a Prolog Visualisation Tool, although the latter is in its very early stages.

I can also be found in a number of other different places around the web. I've compiled a list of the places that I can remember below.

I can be contacted at the email address webmaster at starbeamrainbowlabs dot com. Suggestions, bug reports and constructive criticism are always welcome.


Blog Roll | Article Atom Feed | Mailing List

Latest Post

Rendering LaTeX documents to PDF: Attempt #2

It was all going rather well, actually - until I discovered that pandoc doesn't support regular bibliographies / references. Upon discovering this, I ended up with a bit of problem. Thankfully, the answer lay in pdflatex - but getting to the point where I could use it without having it crash on me (which, by the way it can't accomplish properly - it gives an exit code of 0 when crashing! O.o) was not a trivial journey.

This blog post is a follow up to my first post on rendering LaTeX documents with pandoc, and is my attempt to document what I did to get it to work. To start with, I installed texlive properly. Here's how to do that on apt-based systems:

sudo apt install texlive-latex-extra --no-install-recommends

The no-install-recommends is useful here to avoid ~450MiB of useless documentation (in PDF form, apparently) being dumped to your hard drive. I've also got an arch-based system (it's actually Artix Linux, that I've blogged about) which I've done this on, so here's the install command for those kind of systems:

sudo pacman -S texlive-latexextra

Once that's installed, we can use it to render our LaTeX document to PDF. Upon discussing my issues with my Lecturer at University, I discovered that you actually have to run 3 commands in succession in order to render a single PDF. Here they are:

bibtex filename
pdflatex --output-directory=. filename.tex
pdflatex --output-directory=. filename.tex

The first one compiles the bibliography using BiBTeX. If it isn't installed already, you might need to search your distribution's repositories and install it. Next, we run the LaTeX file through pdflatex from TeXLive not once but twice - as it apparently needs to resolve the references on the first pass (why it can't do them all in once pass I have no idea :P).

It's also worth noting that the bibtex command doesn't like you to append the filename extension - it does it automatically, apparently.

That's about everything I've got on the process so far. If you've got anything else to add, please let me know in the comments below (I'm rather new to this whole LaTeX thing....)

Further Reading

By on


An implementation of an algorithm to find the distance from a point to a line, adapted for multi-segmented lines.
githubjsLine Distance Calculator
An implementation of Valvalingam's line simplification algorithm.
githubjsLine Simplifier
Share files and images on your computer with your friends!
A night sky full of pretty twinkling stars.
sbrljsStarry Sky
A small gem I found in my archives. From 2013.
sbrljsArchives: Colour Picker
A bicycle riding through some procedural scrolling parallax hills.
sbrljsParallax Bicycle
A procedural castle generator I wrote for /r/proceduralgeneration's 2nd Monthly challenge.
githubjsProcedural Castles
A pen I created as a demo whilst writing a class to draw regular shapes.
codepenjsRotating Shapes
A pen I created as a demo whilst writing a class to draw smooth lines.
codepenjsSmooth Lines
A small experiment to get my head around how fractals work.
sbrljsFractal Shapes
An example of context.ellipse in action, written for a blog post.
Get all the fun of the fair without the noise and the cold.
sbrljsBig Wheel
Some treasure is hidden on your screen. Can you find it using only your ears?
sbrljsAudio Treasure Hunter
A Voronoi Diagram Generator
sbrljsVoronoi Diagrams
A random snowflake generator
sbrljsSnowflake Generator
A fully functional wiki in a box.
sbrlphpPepperminty Wiki
Some clouds drifting across the screen, drawn via the HTML5 Canvas.
sbrljsHTML5 Canvas Clouds
A turtle based drawing program for your first forays into simple programming.
A client side online tool for stitching strings of still images into an animated gif.
sbrljsGif Renderer
A set of parallax scrolling stars using the HTML5 Canvas
sbrljsParallax Scrolling Stars
An (almost) pure CSS spotlight demo.
jsbincss(Almost) Pure CSS Spotlight
A Javascript Bookmarklet to fade the unimportant parts of a page. Also features HTML5 fullscreen API integration.
A small script to trianglify (draw triangles on) an image.
sbrlhtmlImage Trianglifier


An implementation of HTTP and Websockets in pure C♯ as a library. Does not use System.Net.HttpServer.
githubcsharpGliding Squirrel HTTP
A program that detects and decodes morse code embedded inside an audio file.
sbrlcsharpAudio Morse Decoder
The one and only C♯ class generator. Tired of typing the same old scaffolding out all the time? Give this tool a try.
A class modelled on StreamWriter that makes it easy to generate CSV files.
A web based tool that generates diagrams based on Prolog traces.
githubjsProlog Visualisation Tool
A command line tool to generate random noise, written in C#
A (hopefully) better traceroute utility written in C#
An easier way to generate XML.
sbrlphpSimple XML Writer
A PHP based Atom feed generator.
sbrlphpPHP Atom Generator
A simple CodeMirror based javascript bookmarklet editor.
sbrlhtmlBookmarklet Playground


I find useful tools on the internet occasionally. I will list them here.

I'm Only Resting
Art by Mythdael