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

Peeking inside a Rust enum

During a recent Rust Q&A Session on my twitch channel, someone asked a question that seemed simple: why are small string types, like SmartString or SmolStr, the same size as String, but small vec types, like SmallVec, are larger than Vec?

Read more
Frustrated? It's not you, it's Rust

Learning Rust is... an experience. An emotional journey. I've rarely been more frustrated than in my first few months of trying to learn Rust.

Read more
I am a Java, C#, C or C++ developer, time to do some Rust

As I've said before, I'm working on a book about lifetimes. Or maybe it's just a long series - I haven't decided the specifics yet. Like every one of my series/book things, it's long, and it starts you off way in the periphery of the subject, and takes a lot of detours to get there.

Read more

There's more articles over there

Ever wonder who's writing these articles, anyway?