A Blog, of Words and Code

Welcome to my totally rad blog! Check out the latest posts below!

"Blog" is an old-fashioned word nowadays, but I like it nonetheless. This blog is indeed old-fashioned. You won't find any hero banners here, or calls to subscribe to a mailing list. And like old-fashioned blogs, it has a lot of articles. I wrote them all myself. Perhaps you might read them.

If you'd like to know when the next article is out, I suggest subscribing via the Atom feed using your favourite feed reader.

2025

Ideas for free

Symbols, rituals, focus

2024

Ideas for free

Ideas for free

Ideas for free

Dieting is personal

So I rewrote my blog

A new look

2023

Web Mindset

Pointless work

2022

I shall finish more than I start

I'm not fucking about, I'm internalising

Twitter's doomed. What's next?

Maybe, just maybe, there are other ways

#OneEstimate

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Throwaway development environments with Nix

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

How to drive fast

Lessons from a failed startup

Lessons from a failed startup

Lessons from a failed startup

A little announcement

Transparent memoisation in Haskell with MemoTries

Laziness in Haskell

2021

Meeting structure

What kind of meetings are you having?

Overcoming writer's block

I miss unconferences

Test-driven development in three easy steps

Truly great CI/CD

I contain multitudes

What to refactor

One Weird Trick To Improve Development Culture

You Could Have Invented Booleans

Running Agda with Nix

All Problems Are Hard

Thirty-two

2020

talks

Smoke: Rewriting a Ruby project in Haskell for fun and type safety

Untriggered traps in zsh

2019

Smoke v2.1 is out!

What to expect in an Interview Technical Test

Mean Time To Recovery, as a lifestyle

Teaching a Machine to Code, at NewCrafts Paris 2019

Running Swift without Xcode

2018

talks

Plz, respect ur data

Plz, Respect Ur Data

Functional Reactive Serverless Architecture

Chet Hendrickson, on the craft of software development

Teaching a Machine to Code, at Joy of Coding 2018

The Five Stages Of Agile Transformation

Going Static

A Continuous Flow Of Coffee

Amdahl's Corollary, For Teams

The Decentralised Web is the Client-Driven Web

Twenty-Nine

City Planning

2017

They

I Promise I'll Call You Back

Public Speaking Is Hard

You Don't Need To Rebase

No Computers

Facilitating Better Code Reviews

Teach Me BDD

WebOps Workshop

More like Hask-Hell LOL

Player Characters

2016

Docker, Part Seventeen: Continuous Deployment

Lean, Reactive Event-Sourcing

#SoCraTesUK, Buzzfeed Edition

Docker, Part Sixteen: Logging

Isolating Gems With RVM

Too Much Work In Progress

Ninja Pairing

Three Months

Docker, Part Fifteen: Securing Your Containers

Docker, Part Fourteen: Behave Like A Process

Docker, Part Thirteen: The Twelve-Factor App

Language-Agnostic Test Cases

The Three Laws of Project Management

Making a calculator with bash and sed

Toggling browser elements without JavaScript

Cleanliness

Docker, Part Twelve: Cleaning House

Docker, Part Eleven: The Guts Of Docker Compose

Docker, Part Ten: Docker Compose

Docker, Part Nine: Scripted Deployment

Building Is The Job Of The Compiler

Why Maven?

Finatra and Maven

Unless You Have A $PAGER

Docker, Part Eight and a Half: docker volume

Docker, Part Eight: Turn Up The Volume

Docker, Part Seven: Start Talking

Interlude: The Tiniest Web Service

Under Construction New! Generate your own 90s page here! Under Construction