I've been a professional software developer for 20 years. I've written a lot of website applications and I absolutely love what I do. However, it's time to do something for myself.

more...

ai vibe coding book

Process over Magic: Beyond Vibe Coding - Takeaways

Published: 2025-12-24

Some bullet points from the book to help me remember what I've learned.

rust

Rust: A Test Driven Guide

Published: 2025-12-23

A tour of Rust for the experienced programmer driven by tests. We're all writing tests, right?! I wrote this to help me learn the language as efficiently as possible. It's not exhaustive (but it is long!). It should allow me to start writing some code. It'll also serve as a reference.

f# tools vim lsp

F# Language server and Neovim 0.5

Published: 2021-02-26

Updated: 2021-03-27

I've been using Neovim 0.5 (nightly) for several months now and I think I've finally found a setup I'm happy with.

game

I'm back! Recap of 2020 & next steps

Published: 2021-02-15

It's a been a while. I've been busy building my engine/game, throwing it out and starting again, again!

game f# opengl

Text rendering with OpenGL and F#

Published: 2020-01-16

Unlike WebGL, rendering text in OpenGL is a bit more complicated. Here's how I went about it with F#.

game f# opengl

Cube rendering library in F#

Published: 2019-11-20

I finally reimplemented my basic cube rendering library in F# and OpenGL from JavaScript and WebGL.

f# testing

Automated Testing In F# With Expecto

Published: 2019-11-12

Updated: 2020-02-18

Test or Behaviour Driven Development has been a staple in my workflow for years. Now that I've got some familiarity with F# it's time to get serious.

game f# opengl

OpenGL Library Choice

Published: 2019-11-08

WebGL interfaces directly with JavaScript, OpenGL is natively C. So we need some bindings in F# or C# to allow us to interface with OpenGL. To add further complications we also need to handle Window initialization which can get pretty tricky when dealing with multiple platforms.

game f# .net

Project Reboot - Going all in on F#

Published: 2019-11-06

Updated: 2021-02-15

Whoah! Over a year since I posted updates! Selling our house and all our stuff and moving into a van is time consuming! In that time I've had a chance to re-evaluate some of the choices I made when starting this project.

deploy aws

Automatic Let's Encrypt TLS Certificates

Published: 2019-11-01

Updated: 2020-11-12

Here's how I renew the TLS Certificates on my 3 websites every 3 months with one command.

web aws cert s3

Create a Static Website on AWS

Published: 2019-10-28

Updated: 2020-04-29

Some notes on quickly setting up a static website with a custom apex & www domain over HTTPS/TLS using Amazon S3, Route 53, CloudFront and Let's Encrypt Certificate Authority.

dev

New Development Machine

Published: 2019-06-30

I just took delivery of my new Razer Blade Pro to take with me on my travels.

game js fp

Code Style and Functional Programming

Published: 2018-07-08

In this article I discuss my choice of coding style and also touch on functional programming. It's something I've been studying for a while and I'm slowly trying to introduce into my work. Both these things will affect the style of code I post on this blog.

game js physics

More JavaScript Physics

Published: 2018-05-06

Physics will play an important role in this game and the performance of the physics engine is a crucial factor. I've spent a bit more time tweaking the comparison and trying out ideas.

game js webgl physics

JavaScript Physics Engines

Published: 2018-04-15

Under promise and over deliver! Last week I said I'd be releasing a demo of 3 physics engines I've been comparing. Well guess what?! I've got 4 to show you!

game js webgl

Language and framework choice

Published: 2018-04-08

I've considered a number of different languages to write a game in. From C to Elm. Certainly C is the most widely used. Elm probably being the least widely used. Ruby is what I use most these days. So why did I choose JavaScript? Let's take a brief look at languages I considered and why I ruled them out.