About
Hi, I'm Caio. This is my digital garden: a place where I plant notes, half-formed ideas, and things I'm learning, and tend them over time.
I'm a software engineer drawn to backend and distributed systems - Go, software architecture, and how systems behave under load. Most of what I write here grows out of that.
Unlike a blog, nothing here is meant to be finished. Notes link to one another and grow as my understanding does.
Now
- Tending
- The performance and latency cluster - six linked notes on how systems behave under load.
- Focus
- Backend and systems engineering, and getting better at explaining it in plain writing.
- Reading
- Designing Data-Intensive Applications, a chapter at a time.
Skills & interests
- Go
- Distributed systems
- Software architecture
- Systems design
- Backend & APIs
- Kubernetes
- Cloud infrastructure
- Databases & data systems
- Python
- TypeScript
- Technical writing
Elsewhere
Latest notes
-
What this digital garden is and how to wander it.
-
Reviewing material at increasing intervals to fight forgetting.
-
Your program cannot touch the disk, the network, or another process on its own - only the kernel can. A system call is the one controlled crossing into kernel space, and every crossing has a toll.
-
Single-threaded code runs in the order you wrote it. Put a second thread on the same memory and that stops being true - a memory model is the contract for which writes a thread is guaranteed to see, and when.
-
Automatic memory management removes a class of bugs by deciding for you when memory is safe to reclaim. You pay for that convenience in a currency that only shows up under load - pauses, CPU, and headroom.