Pi: The Minimal Agent Within OpenClaw
A gentle introduction to the Pi coding agent and why I think it’s a glimpse into the future of software.
A gentle introduction to the Pi coding agent and why I think it’s a glimpse into the future of software.
It's better if the message comes in an expensive box.
While working on an article for the Monad.Reader, I've had the opportunity to think about how people learn and gain intuition for abstraction, and the implications for pedagogy. The heart of the matter is that people begin with the concrete, and move to the abstract. Humans are very good at pattern recognition, so this is…
A deep dive into how Linux manages process memory, page tables, and virtual address spaces
An interactive deep dive into how the Burrows-Wheeler transform works for compression and for genomics sequence alignment algorithms.
tl;dr: Having swap is a reasonably important part of a well functioning system. Without it, sane memory management becomes harder to achieve.
Exploring the world of constraint solvers with very simple examples.
A blog about making culture. Since 1999.
In my previous blog post I stated that I started defaulting to Rust for my personal projects. While I really like Rust for its type-system, I'm not a huge fan of its learning curve. There is definitely a bit of a sunk-cost with a dash of Stockholm syndrome whenever I say I love Rust.
Srihari Srirama...
Why do solo game developers tend to get into fights with big tech engineers? Why do high-profile external hires to large companies often fizzle out? Why is AI…
6 tactics for fixing your context and shipping better agents. As Karpathy says, building LLM-powered apps means learning to ‘pack the context windows just right’—smartly deploying tools, managing information, and maintaining context hygiene.
If you need to ensure that a particular piece of data is only ever modified by one thread at once, you need a mutex. If you need more than one mutex, you need to be wary of deadlocks. But what if I told you that there’s a trick to avoid ever reaching a deadlock at all? Just acquire them in the right order!
Recently, I revisited Resolving a year-long ClickHouse lock contention post and spoke about it at C++ Russia 2025 conference.
Programming languages typically make a distinction between normal program actions and erroneous actions. For Turing-complete languages we cannot reliably decide offline whether a program has the potential to execute an error; we have to just run it and see.