Your next Linux distrubtion: Windows 10?

12 Mar 2020 - linux, windows, wsl

How using Windows Subsystem for Linux has changed how I work, letting me use all the development tools I'm used to from linux, and still run all those other apps I need to run a full business like Adobe Creative Suite.


Working with Wikibase from Go

26 Nov 2018 - api, golang, mediawiki, wikibase

A review of working with the MediaWiki Wikibase API, and the Go library I built to make it easier to work with.


Failure strategies vs Swift optionals

15 Jun 2018 - development, swift

How I disapproved of forced unwrapping optionals in Swift in general, but have made my peace with the existence of the operator in practice.


Encoding and decoding polymorphic objects in Swift

29 May 2018 - development, swift

Some notes on trying to keep the flexibile approach to data-structures within the safety net of a type-strict language like Swift.


Be wary of timestamps for Windows Performance Monitor data

15 May 2018 - development, windows

A look at what seems to be an unsolvable issue with Windows Performance Monitoring - it stores the events without a timezone reference but using daylight saving aware times.


A simple UI for managing local docker instances

18 Apr 2018 - docker, macos

A simple macOS status bar item that lets you quickly manage your running Docker containers.


Better testing for golang http handlers

23 Feb 2018 - golang, testing

A write up of the testing pattern I use for Go http handlers as I've not seen this technique documented anywhere else.


Fretboard design generator

1 Dec 2017 - cnc, javascript, laser, maker

I made a small open source tool that lets you generate fretboard designs ready for laser cutting or CNC routing based on MakerJS.


Managing GOPATH for multiple projects with direnv

17 Nov 2017 - development, golang

A quick tip on using the direnv project to make it easier to manage multiple Go projects without sharing your GOPATH.


Handling golang third party dependancies robustly

5 Nov 2017 - development, golang

One of the current weaknesses of Go is how third part libraries are managed, in particular how they depend on third party services, which is not ideal for production build systems. This is a write-up of how I've solved this for one particular project at Bromium.


Digital Flapjack Ltd, UK Company 06788544