Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,709 posts.
The Dynamic Def – abusing Ruby's def statement
Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!
Hard Mode Rust (2022)
This post is a case study of writing a Rust application using only minimal, artificially constrained API (eg, no dynamic memory allocation). It assumes a fair bit of familiarity with the language.
Wield Python's super() like a Jedi
If you aren’t wowed by Python’s super() builtin, chances are you don’t really know what it is capable of doing or how to use it effectively. Much has been written about super() and much of that wri…
I Wrote a Scheme in 2025
One year minus one week ago to the day I published an article announcing the new Scheme implementation I was writing, scheme-rs . Today I am excited to announce that scheme-rs has reached its first version, 0.1.0 . You can check it out at it’s website ( scheme-rs.org , which should be updated to scheme.rs at some…
Show HN: “Statements and State”, the next chapter of my book on interpreters
All my life, my heart has yearned for a thing I cannot name. André Breton, Mad Love
Let's write a compiler, part 3: A parser
Tokenizing the source code input is a great start for our compiler. Now let's turn our attention to parsing the PL/0 grammar. Once we have finished with the parser, the front end of our compiler will be finished and we will have a PL/0 validator. This is a program that can read in PL/0 source code and inform the user…
Let rand = main as usize (2022)
The other day I posted something silly, and learned some interesting things about raw pointers in Rust.
Interesting things about the Lua interpreter (2020)
The Lua programming language is unusual among its peers. It’s a dynamically typed, scripting language with a really small core (100-200kB), but runs efficiently, has far simpler semantics than other similar languages, and is just as old as the giants like JavaScript, Python, and Ruby – first made in a research lab…
Layered Design in Go
This post will describe how I design my programs in Go. I needed this for work, and while I searched for a link, nothing quite fits my coding practices out there. The word “Layered” can pull up some fairly close descriptions, but I want to lay out what I do.
A not-so-quick introduction to the C++ allocator model
My paper P1144R8 “std::is_trivially_relocatable” has, in the past few months, been joined by three(!) papers out of Bloomberg:
Writing a bare-metal RISC-V application in D
This post will show you how to use D to write a bare-metal “Hello world” program that targets the RISC-V QEMU simulator. In a future blog post ( now available ) we’ll build on this to target actual hardware: the VisionFive 2 SBC. See blog-code for the final code from this post. For a more complex example, see…
Finding Compiler Bugs by Removing Dead Code
What has caused you to slack off on the bug reporting? The cost of computer time or the human effort side? (I’m guessing the second.)
Higher-kinded bounded polymorphism in OCaml (2021)
How bounded higher-kinded polymorphism arises in practice, and how to express it in OCaml, in several different ways. Some ways are rather concise -- but less widely known.
Turnstyle – An esoteric, graphical functional language
An esoteric, graphical functional language
Amplifying C (2010)
On C++ Having programmed in C++ professionally for well over 10 years I have learned all of it. I have all the books, I know all the tricks...
How Class-based Programming Sucks (2011)
Classes encourage pervasive mutable state, provide only an indirect support for closures, and do not support algebraic data types. I'd like to fix that.
The forgotten meaning of "jerk"
Ben Lindbergh at the Ringer asks “When did jerk stop meaning ‘stupid’?” He starts with the Steve Martin movie The Jerk , saying of its protagonist:
Interview with Go’s Russ Cox and Sameer Ajmani
We interview Russ Cox and Sameer Ajmani, two CS PhDs behind Google's development of the Go programming language.
Pixie: A sweet Clojure-ish language
It's likely no secret that I really dig Clojure . It's the first unityped language I've used since Objective-C in the early 90s that I really like. Yes, I still love Scala , but I think Clojure is pretty much the best designed computer language I've ever used... and maybe that's because Clojure is mostly "less is…
Stop using utcnow and utcfromtimestamp
A public service announcement about the dangers of utcnow and utcfromtimestamp and the benefits of using their replacements.
What Is Rust's Unsafe? (2019)
I’ve seen a lot of misconceptions around what the unsafe keyword means for the utility and validity of Rust and its marketing as a “safe systems language”. The truth is a lot more complicated than a single pithy tweet can possibly sum up, unfortunately; here it is as I see it.
Rewriting Rust: A Response
Joseph Gentle wrote a post on how he wants Rust to change. I am already working on that.
PyPy.js: Now faster than CPython
OK OK, I couldn't resist that title but it probably goes a bit far. Let me try for a little more nuance: