Hi! I'm Amos. I write about how computers work - or at least, how they sometimes work. I write long pieces in a casual style, where we take our time to explore a problem. I tend to cover Rust a lot.

In my view, there's nothing that can't be explained if you're creative about it. And I enjoy doing that very much! I've made long series about reading files, the ICMP protocol, and I'm currently spending way too long talking about ELF executables.

Support me on Patreon, in exchange for my eternal gratitude, and/or early access.

Latest series

Making our own executable packer

In this series, we'll attempt to understand how Linux executables are organized, how they are executed, and how to make a program that takes an executable fresh off the linker and compresses it - just because we can.

Go to series overview

More series are listed over there

Recent articles

A dynamic linker murder mystery

I write a ton of articles about rust. And in those articles, the main focus is about writing Rust code that compiles. Once it compiles, well, we're basically in the clear! Especially if it compiles to a single executable, that's made up entirely of Rust code.

Read more
Getting in and out of trouble with Rust futures

I started experimenting with asynchronous Rust code back when futures 0.1 was all we had - before async/await. I was a Rust baby then (I'm at least a toddler now), so I quickly drowned in a sea of .and_then, .map_err and Either<A, B>.

Read more
Small strings in Rust

Hey everyone!

This article is brought to you by a shameless nerd snipe, courtesy of Pascal.

In case you've blocked Twitter for your own good, this reads:

Read more

There's more articles over there

Ever wonder who's writing these articles, anyway?