Essays
2026
-
A neural character-level bigram language model, optimized with gradient descent rather than counted from the training data.
-
Generalizing the statistical bigram model to arbitrary n-grams, and using it as a vehicle to explore hyperparameter tuning.
2025
-
Building a statistical character-level bigram language model - the first step from raw autograd toward models that emulate natural language.
-
Using race data from the 2025 Hyrox World Championships to identify the performance measures that separate elite athletes from top non-elites.
-
Extending the autograd engine with more arithmetic operations and nonlinear activations, then building a small neural network library on top of it.
-
Implementing a scalar-valued automatic differentiation engine from scratch. First post following Karpathy's Neural Networks: Zero to Hero.
-
A response to Cal Newport's case against superintelligence, laying out where his rebuttal of Yudkowsky's existential-risk argument goes wrong.
2022
-
How the standard library achieves a space-optimized boolean vector without giving up container semantics, and why that optimization still surprises people.
-
Adding an almost-equal operator to CPython by extending the tokenizer, parser, and abstract syntax tree. First in a series on hacking the interpreter.
-
Comparing several options for deploying containerized applications on AWS across usability, scalability, and pricing.
2021
-
A recovered 2019 presentation on the gulf between cryptographic theory and practice, and how that gap invalidates common assumptions about real-world cryptographic strength.
-
Takeaways from Simon Peyton Jones's talk on writing research papers, annotated with commentary from a first-time researcher.
-
Benchmark results for two popular reader-writer lock implementations, with tentative explanations for the patterns they reveal.
2020
-
Using C++20 coroutines to hide memory stall latency during bulk lookups on a hashtable larger than last-level cache.
-
Building an awaitable timer on top of native system timer facilities, as a template for integrating coroutines with any asynchronous system event.
-
Exploring the semantics of coroutine composition through a deliberately simplified implementation of the task type.
-
An introduction to a series on C++20 coroutines, and why they offer an elegant solution to the problem of asynchronous state management.