Articles and tutorials
Notes from a decade of building software. TypeScript, AWS, Node.js, Ruby, Python and the craft around them.
Latest posts
-
Building the Matcha Byron Bay website
A rundown on the design, technology and wholesale work behind the new Matcha Byron Bay website
-
Building the Pocket Rice marketing website
A rundown on some of the designs and working behind the Pocket Rice marketing website
-
Two Pointers
Learn how to spot two-pointer problems and walk through pair sum variants with interactive visuals
-
Software Interview Guideline 2026 (Australian edition)
A collection of links, ideas and approaches to interviewing for software companies in 2026.
-
Using BuildKite with AWS CodeBuild
A working proof-of-concept for using BuildKite with AWS CodeBuild with the AWS CDK
-
Using AWS Bedrock with opencode
Setup your opencode CLI to work with AWS Bedrock foundational models
-
Interface-based functional optionals in Golang
A pattern to pass optional settings to build flexible constructors without a ton of parameters.
-
Adding Swift packages in Xcode
Learn how to add the popular Swift networking package Alamofire in a Swift Xcode project
-
Swift from the command line
An introduction to using Swift without Xcode
-
Building TUIs with Golang and tview
A practical walkthrough for your first steps on building TUIs with Golang and tview
-
Implementing more manageable transform streams in Node.js
After working through async generators and class streams, I'm sharing my conclusion on making these streams more manageable
-
Configuring Omarchy on Beelink
This walkthrough describes the steps taken to load Omarchy, an opinionated archlinux/Hyprland setup, onto my new Beelink SER5.
-
TypeScript Private Elements vs Private Modifiers
We explore private elements in classes and why you should use them over modifiers
-
Tail Recursion
Understand what tail recursion with this visual aide and example in Zig.
-
Data Classes in TypeScript
Learn how classes focused on holding data can clean up type definitions and provide discriminants for your TypeScript code.
-
Isolating PostgreSQL Tests with PGLite
Learn how to rapidly extend your test boundaries to the database without losing speed or introducing flaky tests.
-
PostgreSQL Performance
Learn more about PostgreSQL indexing practices and performance measurement in this blog post.
-
Multi-tenant testing
Exploring Uber multi-tenancy paradigms and seeing how they can impact testing in TypeScript.
-
Retries, timeouts and spans for TS Rest clients
Customize your TS Rest API calls to enable capabilities such as retries, timeouts and span information
-
Well Known JSON Web Key Sets (JWKS)
Understand how JSON Web Key Sets served from .well-known endpoints enable you to dynamically verify JSON Web Tokens (JWTS).