What happens when I run a program on my computer?

My job for about a year now has been writing embedded C on bare metal – meaning there is no operating system on the computer my software runs on.
Doing this kind of work has really pushed me to learn more about the inner workings of computers, and I've really ...

Continue reading »

What actually is Object Oriented Programming?

And where does Rust fit in?


When I first learnt to write computer programs, the focus was entirely imperative: that is, programs were focussed on logic and actions. My code was organised into subroutines, but I didn't have much notion of structure beyond that.

Later, like many people ...

Continue reading »

Let's get rusty! Fast and safe systems programming with Rust

Rust – what is it? Rust is a systems programming language as fast as C and C++, but without the horrible capacity for shooting yourself in the foot.

Imagine: freedom from the horrors of out-of-bounds access, use-after-free, data races – without sacrificing speed!

Not only does Rust guarantee memory safety, but it ...

Continue reading »

Property based testing

The following is a rough transcript of a talk I did for my colleagues at PA on property based testing. You can find more materials here at the Github repo.


As software engineers and programmers, we all know the value of writing automated tests for our code. Many of ...

Continue reading »

Making an automatic chord recogniser

I've ...

Continue reading »

Linux: Finding useful serial port names (i.e. NOT /dev/ttyUSB0!)

I was recently working on a project where I used USB-to-RS232 adapters to talk to some devices via serial. We started with just one device, and referenced it using /dev/ttyUSB0. Big mistake!

Later, we added another serial device. It got plugged in first, and – you guessed it – got assigned ...

Continue reading »

All things wooden wonderful

I haven't posted on my blog in ages! I just changed themes to the lovely Pelican Hyde, and thought it was time to update the content, too.

I made some exciting wooden things around Christmas time – or rather, I embellished one and designed another. Both were presents for others ...

Continue reading »

The Desk

The finished desk

A few months ago I bought a desk. It was the end of a long and consuming search to find one I liked that would fit in the 105cm wide alcove in my living room.

A combination of things meant I decided it would be a good idea to refinish ...

Continue reading »

Toronto Trip Part 2

The next day was CN tower day!!!

I took so many photos on the way

So tall!

I was excite. I had seen that there was the option to do the "Edge Walk". What is that, you ask? Not much, just casually walking round the edge of the CN tower, attached by a mere rope. I so wanted to do ...

Continue reading »

Website revamp

I recently revamped my websites. Turns out they were pretty hideous before! I remember being so proud and pleased with how they looked. I guess my aesthetic taste has evolved.


First up for redesigning was my homepage, mcla.ug. Let's see how it used to look:

Garish old website


Continue reading »

Toronto Trip Part 1

I went to Toronto for a week in September! It was my first time travelling alone, and I really enjoyed it. My hostel had an awesome view from the roof:

So many pretty lights

I was knackered on my first night from jetlag, but the next day I had relaxing time getting my bearings ...

Continue reading »

Job hunting experiences

I've just finished job-hunting, and am looking forward to starting an exciting new job! During my time job-hunting, I ended up making a couple of fun things to aid applications... ;o

Pop sensation

One online form had a field asking me to, in 120 characters or less, tell them ...

Continue reading »

Double vision ;o

I thought I'd explain how I did some of the web design on mcla.ug, as I picked up a few CSS tricks along the way. Here I'll show how to have one image fade to another when you hover, like in the ...

Continue reading »

K-means clustering