• A Metal Renderer in Swift Playgrounds
    A Metal Renderer in Swift Playgrounds
    A little while ago I started a project to write a Metal renderer on my iPad in Playgrounds. A brief history is that for various reasons I am often away from my computer but have access to my iPad. I like experimenting …
  • Low Poly Astronaut Run Cycle
    Low Poly Astronaut Run Cycle
    My first go at animation: a run cycle for a low poly astronaut I made with Blender.
  • Ray Tracing in One Weekend with Rust
    Ray Tracing in One Weekend with Rust
    Recently I was reading through the current edition of Effective Modern C++ which covers up to C++14, and I found myself getting bogged down by the huge number of language features and in particular the caveats around …
  • Running Doom on macOS
    Running Doom on macOS
    I love Doom, and by Doom I mean the various classic Dooms - Ultimate Doom, Doom 2: Hell on Earth, and the Final Doom expansions. I only had Ultimate Doom shareware on my 386 as a kid but I played all of them a lot later …
  • Wrapping Async functions in Promises
    Wrapping Async functions in Promises
    A lot of core APIs in node.js have two forms for each function - synchronous and asynchronous. The synchronous versions block until the function has completed, while the asynchronous versions do not block - instead …
  • Functional Java 8
    Functional Java 8
    I’ve been using Java 8 in some anger lately, and have encountered one or two tips that are worth sharing. I’ll start with some notes about lambda expressions and the Stream API that helped me thinking about …
  • GL Shaders and Atom
    GL Shaders and Atom
    Coming from IntelliJ, CLion is my favourite C/C++ IDE. It also has many plugins that extend its functionality beyond C++, and one that I’ve found useful while experimenting with game development is the GLSL plugin …
  • Graphing with matplotlib
    Graphing with matplotlib
    Today I wanted to draw some graphs. I started out using Wolfram Alpha’s excellent plot() functionality but wanted something that I would be able to use offline too. Mathematica & Matlab are beyond my …
  • Bootstrapping an HTTP server with Camel + Guice
    Bootstrapping an HTTP server with Camel + Guice
    I was tasked with creating a skeleton Java application that ran Camel for a project at work. As documentation was a bit sparse on how to achieve what I wanted, I’ve written this post on how to bootstrap a very …
  • Janus development so far
    Janus development so far
    On the subject of Learning how to build a game Although it’s been slow, there has been progress with my C++ game. I’ve given it a working title of Janus and it’s taken the form of a 2d platformer. This …
theme: