djhworld

thoughts


I don't know how CPUs work so I simulated one in code

A few months ago it dawned on me that I didn’t really understand how computers work under the hood. I still don’t understand how modern computers work. However, after making my way through But How Do It Know? by J. Clark Scott, a book which describes the bits of a simple 8-bit computer from the NAND gates, through to the registers, RAM, bits of the CPU, ALU and I/O, I got a hankering to implement it in code.

Read more »

Reed Solomon codes are cool

Imagine wending your way through a great book on your e-reader, the world melting away, and suddenly everything comes crashing back to reality with an apologetic Sorry! Chapter 20 corrupted! message. A few tired cells of the flash storage gave up the ghost overnight and corrupted your book. Wouldn’t it be great if your device didn’t complain about its innards, and recovered from the problem itself?

Read more »

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 »