colorise
About me
I'm Sam De Roeck, a software engineer at Meta. I work on distributed systems, where even the computers have communication problems.
I’m Sam De Roeck, a software engineer at Meta working within Core Infra. I spend most of my time on dynamic uses of Thrift serialization: the places where a schema is known, but the query or mutation may need to be described, transported, inspected, and executed somewhere else. That work turns up in databases, event notification systems, and other infrastructure operating at Meta scale.
My current project is TXL (Thrift Expression Language), a programming language and virtual machine for sharing and executing portable Thrift queries and mutations at scale. In other words: define a Thrift expression once, move it to where the data lives, and run it consistently across different systems. Read-modify-write ops in DBs, subscription filters, RBAC rules: check!
Naturally, the safest response to a large ecosystem of existing standards was to build another language. “This time it’ll be different!”.
Ten years of distributed systems
I’ve worked on distributed systems for the past decade, across fintech, object storage, SQL databases, key-value stores, DLTs, and a few systems that resist fitting neatly into any of those boxes. Interestingly, almost all of these systems also have a reliable way of reminding everyone how much civilization depends on a surprisingly small block near the bottom of the stack.
How I approach the work
I’m curious, implementation-oriented, and suspicious of claims that cannot be measured. I like turning strange behavior into something inspectable, whether that means following bytes through a serialization stack, tracing ownership across a runtime, profiling a performance problem, or reverse engineering a game because I wanted a minimap.
I care about architecture, but I care just as much about whether it survives contact with the real system. I care about performance, but not always (and likely neither should you…).
What this blog is about
This is a journal for the things I find interesting enough to take apart and explain:
- Distributed database tech
- Data serialization, programming languages, and virtual machines
- Rust & C++
- Performance benchmarking & optimizations
- Game dev and reverse-engineering
- Experiments that begin with “how hard can it be?” and occasionally answer the question
Away from the keyboard, I cycle, play games (board & video), and take charcuterie boards seriously enough that they may eventually need their own schema.