Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 2,232 posts.
Golden Rules of Interface Design (2013)
I have often been asked to distill the vast corpus of user interface design into a few key principles. While I was reluctant to do this, it turned out to be a good exercise to write “Golden Rules,” that are applicable in most interactive systems. These principles, derived from experience and refined over three…
How I Made a Heap Overflow in Curl
In association with the release of curl 8.4.0, we publish a security advisory and all the details for CVE-2023-38545. This problem is the worst security problem found in curl in a long time. We set it to severity HIGH. While the advisory contains all the necessary details. I figured I would use a few additional ……
Neon: Node plus Rust
If you’re a JavaScript programmer who’s been intrigued by Rust’s hack without fear theme—making systems programming safe and fun—but you’ve been waiting for inspiration, I may have something for you! I’ve been working on Neon, a set of APIs and tools for making it super easy to write native Node modules in Rust.
Double Blind Passwords a.k.a. Horcruxing
Before we get into Horcruxing, here's a quick prologue on online security hygiene. You can skip to the Horcruxing section if it seems redundant. 1. Longer…
Go += Package Versioning
More precisely, we need to add the concept of package versions to the working vocabulary of both Go developers and our tools, so that they can all be precise when talking to each other about exactly which program should be built, run, or analyzed. The go command needs to be able to tell developers exactly which…
Win32 is the stable Linux userland ABI (and the consequences)
This post was inspired by some controversy with Valve and their support for Linux, but the bulk of it comes from long-term observation. One of the biggest impacts with the viability of Linux on the desktop was Valve’s Proton, a… Continue reading →
Be Careful with Python's New-Style String Format
Some general warnings about the use of str.format in Python.
Programming With Nothing: FizzBuzz in the lambda calculus in Ruby
I love Ruby! I’ve used it every day for years and I’m not sick of it yet. It’s an easy language to love: it’s expressive, flexible and syntactically beautiful ; it has a unique combination of useful features like mixins , metaclasses and blocks ; it comes with a useful core library and comprehensive standard library …
Measuring mutexes, spinlocks and how bad the Linux scheduler is
This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successf…
Abandon your DVCS and return to sanity
I’ve pretty much always been a DVCS apologist. I know quite a few people who’ve been using DVCSes since Mercurial and Git, and a few who go back to BitKeeper , but I can totally out-hipster you. I was there for Monotone . I actually remember struggling to grok tla , and being happy that someone took the time to write…
I use C when I believe in memory safety
I am using C for a professional project. I believe in memory safety. Yes, I'm a hypocrite, but please, let me explain.
Let's compile like it's 1992 (2014)
I have been tinkering with the vanilla source code of Wolfenstein 3D from 1992. Even though it is more than 20 years old and has rotten for modern systems, you can still compile it if you recreate the environment. All you need is :
The Python I Would Like To See
What I would imagine an better Python would look like.
How I learned to program
Tavish Armstrong has a great document where he describes how and when he learned the programming skills he has . I like this idea because I've found that the paths that people take to get into programming are much more varied than stereotypes give credit for, and I think it's useful to see that there are many possible…
Use GNU Emacs
This work by Keith Waclena is copyright 2026 and is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 (CC BY-NC-ND 3.0) license.
Why are QR Codes with capital letters smaller than QR codes with lower case?
Take a look at these two QR codes. Scan them if you like, I promise there's nothing dodgy in them. Left is upper-case HTTPS://EDENT.TEL/ and right is lower-case https://edent.tel/ You can clearly see that the one on the left is a "smaller" QR as it has fewer bits of data in it. Both go to the same URl, the only…
LLVM Intermediate Representation is better than assembly
The crucial part is IR. It's a common language that sits between the high-level program and the low-level backend . IR is used to express high level concepts and is specific enough that any backend can produce a fast machine code.
A beginner's guide to Big O notation (2009)
Thoughts on software engineering from Rob Bell
What even is an OS now?
Computers now work the way I thought they did when I was 8. What does computing look like when most applications have an audience of 1-2 people? I'm leaving Fly.io to build a phone for that world.
Classes vs. Data Structures
Or rather, an object is a set of functions that operate on implied data elements.
Towards a JavaScript Binary AST
In this blog post, I would like to introduce the JavaScript Binary AST, an ongoing project that we hope will help make webpages load faster, along with a number of other benefits. A little background Over the years, JavaScript has grown from one of the slowest scripting languages available to a high-performance…
Two dozen mathematicians wrote a 600 page book in 6 months on GitHub
Since spring, and even before that, I have participated in a great collaborative effort on writing a book on Homotopy Type Theory. It is finally finished and ready for public consumption. You can get the book freely at http://homotopytypetheory.org/book/ . Mike Shulman has written about the contents of the book , so I…
Arguing against using protobuffers
I’ve spent a good deal of my professional life arguing against using protobuffers. They’re clearly written by amateurs, unbelievably ad-hoc, mired in gotchas, tricky to compile, and solve a problem that nobody but Google really has. If these problems of protobuffers remained quarantined in serialization abstractions…
Micro Frontends
How to split up your large, complex, frontend codebases into simple, composable, independently deliverable apps.