The Lazy engineer's guide to running your Go web application to AWS Lambda

One of the things I really love about Go's structural typing is how interfaces work. It took a bit of getting used to it coming from Java, but I really enjoy the fact that just by implementing a method, you can call it a day. For instance, if you want to implement an HTTP server,...

Some notes on the cost of Go finalizers (in Go 1.20)

Which OS and CPU architecture is this binary compiled for?

Let's say that we have three binaries, and we want to detect the Operating Systems and CPU architectures in use: ls dmd dmd-darwin dmd.exe url If we run this through the file command, we can see the following information: $ file dmd dmd: ELF 64-bit LSB executable, x86-64, version...

Why I use separate lexers in my recursive descent parsers

Creating an HTTP 404 handler for Go `net/http` servers

I've recently been writing some HTTP servers using Go's net/http package, and found that trying to add a 404 handler - by default - wasn't super straightforward. As per the net/http documentation: Note that since a pattern ending in a slash names a rooted subtree, the pattern &q...

Fuzz tests in Go

Fuzz testing is Go’s clever way of generating new test inputs that you didn’t think of—and that may flush out some hidden bugs. Stand by for things to get a little fuzzy!

Fuzz tests in Go

Fuzz testing is Go’s clever way of generating new test inputs that you didn’t think of—and that may flush out some hidden bugs. Stand by for things to get a little fuzzy!

Twenty years of blogging

This blog has now been running for 20 years! Twenty years... a significant chunk of a human's adult life; while so many things in my life have changed since May 2003, the blog has remained a constant companion. This milestone inspired me to do some archaeology using the amazing W...

Writing Bubble Tea Tests

Learn how to use x/exp/teatest to write tests for your Bubble Tea apps.

FAAS in Go with WASM, WASI and Rust

This post is best described as a technology demonstration; it melds together web servers, plugins, WebAssembly, Go, Rust and ABIs. Here's what it shows: How to load WASM code with WASI in a Go environment and hook it up to a web server. How to implement web server plugins in …