Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 49,204 posts.
What it takes to make a game by yourself
Macrocosm is a mobile game that takes you from atom to galactic empire across seven interconnected stages where making progress in one stage gives you a boost in the next! This post is a deep dive into the (nearly) four years of free time I spent making it.
The Trouble with D3
Recently there were a couple of threads on Twitter discussing the difficulties associated with learning d3.js. I’ve also seen this come up…
TCP, the workhorse of the internet
What is TCP? This post is an exploration of TCP, the workhorse of the internet. This deep dive includes detailed examples and a step-by-step walkthrough. A simple TCP explanation.
Two Years of Emacs Solo
Rahul's Blog
GitHub to Codeberg: my experience
In which I talk about the process involved in switching forges, and how well that went.
The lamps in my house
I have a thing for lamps. Especially designer lamps from the past. I occasionally share them on X and Instagram, and people always ask me about the brands and models. I love lamps so much that I designed one myself. So I decided to give a tour of the lamps
NextDNS is my new favourite DNS service
AKA Anycast-Pi-hole-as-a-Service... but even better!
A ChatGPT clone, in 3000 bytes of C, backed by GPT-2 (2023)
This program is a dependency-free implementation of GPT-2, including byte-pair encoding and transformer inference, in ~3000 bytes of C. I then use this to create something like Chat GPT.
A Relevant Tale: How Google Killed Inktomi
On March 20th, 2000 Inktomi had a market capitalization of 25 billion dollars. As a relatively early employee, I was a multimillionaire on paper. Life was good. In the next year and a half the stock went down by 99.9%. In the end, Inktomi was acquired by Yahoo for 250M. What happened? Among other things, Google. Grab…
Zero Cost Abstractions
The idea of a zero cost abstraction is very important to certain programming languages, like Rust and C++, which intend to enable users to write programs with excellent performance profiles with relatively little effort. Since this idea is fundamental to the design of Rust and my work, I want to investigate, for a…
Personal thoughts/notes from working on Zootopia 2
The home of Code & Visuals
How to learn mathematics: the asterisk method
All original material on the geometry.org website is Copyright (C) 1999–2025, Alan U. Kennington.
Learn TLA+
tl;dr: online TLA+ manual/advanced techniques/examples here. TLA+ is a tool for testing abstract software designs. I first stumbled on it in 2016 and found it so useful I wrote a free online guide to help others learn it. Then I decided the guide wasn’t good enough and wrote Practical TLA+ in 2018. Then I decided the…
Setting up Git identities
Working on many projects across multiple identities can be difficult to manage. This is a procedure for leveraging git aliases to set an identity at the project level.
The joy of building a ray tracer, for fun, in Rust
TLDR? You can find the code and a bunch of examples on GitHub at dps/rust-raytracer. Over the holiday break, I decided to learn Rust. Rust is a modern systems programming language which has a really interesting type system. The type system can catch broad classes of common programming mistakes - e.g. ensuring memory…
Writing an operating system kernel from scratch
Exploring a minimal implementation of a time-sharing kernel on RISC-V, implemented in Zig, on top of OpenSBI.
The Day I Fell in Love with Fuzzing
In 2007 I wrote a pair of modding tools, binitools , for a space trading and combat simulation game named Freelancer . The game stores its non-art assets in the format of “binary INI” files, or “BINI” files. The motivation for the binary format over traditional INI files was probably performance: it’s faster to load…
Math for eight-year-olds: graph theory for kids
This morning I had the pleasure to be a mathematical guest in my daughter’s third-grade class, full of inquisitive eight- and nine-year-old girls, and we had a wonderful interaction. Followin…
Running Pong in 240 browser tabs
What should you do with your unclosed browser tabs? I ran pong in mine.
Thinking will become a hobby
These lines are very difficult for me to write because I feel like digging my own grave. AI systems are improving by leaps and bounds. From the early 2022 fumbling release of ChatGPT, which couldn’t correctly count the number of a’s in my name (it claimed two), we reached OpenAI’s release of math papers where an…
You're Not Losing Fat Because You're Eating Too Damn Much (2016)
The environmental and cognitive factors at play that have people eating more without realising.
I'm a USB-C Maximalist
My wife and I recently went on a 7 week holiday around Europe. Although we each took a massive backpack, we wanted to travel fairly lightly. I took a single universal power brick. This little unit was all I needed to charge my various gadgets. It has a hefty USB-C PD (Power Delivery) port for rapid charging of my…
The unreasonable effectiveness of print debugging
Trying out this newsletter thing... It's sort of astonishing to think about how much value I've gotten from Twitter over the last few years. At its best, my...
Finding an Alternative to Mac OS X
This is the first in a series on finding a replacement for Mac OS X.
Keyboard differences between Windows and Macs
A blog about software craft and quality