djhworld

thoughts


I ported my Gameboy Color emulator to WebAssembly

Around five years ago I wrote a Gameboy Color emulator in Go. It was a very frustrating, but rewarding experience that I’ve been dining out on in job interviews ever since. However, as the passage of time progressed, it landed on the pile of mostly-done-but-not-finished projects and left largely abandoned. One might generously say, on hiatus. Well, until very recently that is. That 5 year gap You see, a few weeks ago Go 1.

Read more »

I thought I found a browser security bug

A few weeks ago I thought I’d stumbled across something really bad when just casually browsing the web. It all started on a financial information website, upon clicking a link, the page partially loaded some of its content, then, without warning, redirected the browser to a completely different domain with some weird spam/search engine content on it, from a known domain squatter. Strange… After refreshing a few times, it was still doing it.

Read more »

Using HyperLogLog in production, a retrospective

A few years ago I was involved in a project that required us to provide a time series metric on how many concurrent users were using our products, and what quality of service they were receiving. On embarking on this journey, it quickly became apparent that the tricky part would be doing the count of unique concurrent users, over a set of dimensions in one minute windows. We’d run into the classic count-distinct problem.

Read more »

Running Go AWS Lambda functions locally

AWS recently announced Go support for Lambda, giving developers more choice over how their functions are written. In an attempt to kick the tires of the new runtime, I found myself rummaging around the open source library required when writing Lambda functions in Go, and was delighted to find a glimpse into what happens when your function is invoked. This post is a brief tour of what I’ve gathered, and describes a simple way of invoking your function in a local environment.

Read more »