I Love Ruby
I've done a lot in my career. From working on business support software to big backend systems and even robotics. If there's been a consistent through-line to my career, it's the Ruby programming language.
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,707 posts.
I've done a lot in my career. From working on business support software to big backend systems and even robotics. If there's been a consistent through-line to my career, it's the Ruby programming language.
A cheat sheet of real-world timing and memory numbers to guide performance-sensitive decisions.
I wrote a self-hosting C compiler which I named 8cc in 40 days. This is a log when I was writing it from scratch by myself in 2012. The code and its history are available at GitHub .
Oh, Steve, you do make me laugh, always. And it's so long between posts these days I hardly believed it when Safari hinted that there was some action over at Steve's. Thank you.
My honeymoon with the Go language is extremely over. This article is going to have a different tone from what I’ve been posting the past year - it’s a proper rant. And I always feel bad writing tho...
C++: The Documentary premiered today on YouTube, and it was great to be on the live chat with Bjarne and many other key folks who participated in C++’s history. I’m honored to have been…
I do not pretend to have more experience or understanding than the top level engineers I often see writing blogs here, but what I am is annoyed. I love rust. It's by far my favorite language, I enjoy the community and the language ergonomics. I've been able to incorporate it into projects in my day job where fit.
Apple announced last week that its Swift programming language — a currently fully proprietary software successor to Objective C — will probably be partially released under an OSI-approved license eventually. Apple explicitly stated though that such released software will not be copylefted. (Apple's pathological hatred…
Butterick’s Practical Typography
This month I invited to Q&A at PuPPy [https://youtu.be/2XviXtxWKO8?list=PL4S0lvhXvdhIV2C28Ia_DeIeloBrsQBOW] (the Puget Sound Python users group) that eventually led to me explaining why Python 3 came into existence and the whole string/bytes deal. I ended up receiving a compliment on the explanation which
The other day I read 20 most significant programming languages in history, a “preposterous table I just made up.” He certainly got preposterous right: he lists Go as “most significant” but not ALGOL, Smalltalk, or ML. He also leaves off Pascal because it’s “mostly dead”. Preposterous! That defeats the whole point of…
An ode to Lua
...though it's not the flagship borrow checking that's at fault. What I noticed, and would like to share with you today, is that the exhaustiveness checking performed by the Rust compiler on match patterns is a superset of the SAT problem.…
On October 23, 2026, the unthinkable happened. It was supposed to be a mere formality: C++26 was up for a vote by the ISO National Bodi...
For the past two years Charles Zhang and I have been working on getting my game engine, Trial, running on the Nintendo Switch. The primary challenge in doing this is porting the underlying Common Lisp runtime to work on this platform. We knew going into this that it was going to be hard, but it has proven to be quite…
In shell scripting you sometimes come across comparisons where each value is prefixed with "x". Here are some examples from GitHub:
Elixir is not Ruby. The familiar syntax has definitely helped the language win the hearts of the broader developer community. Yet, under the hood, Elixir is all about Erlang.
Algebraic data types in Java.
See my follow-up article: “A Fast, Growable Array With Stable Pointers in C” I write type safe generic data structures in C using a technique that I haven’t seen elsewhere1. It uses unions to associate type information with a generic data structure, but we’ll get to that. My approach works for any type of data…
Mercurial 5.2 was released on November 5, 2019. It is the first version of Mercurial that supports Python 3. This milestone comes nearly 11 years after Python 3.0 was first released on December 3, 2008.
How do you design good abstractions? By using abstractions that already exist.
Java has many features that make it well suited for large, long-lasting projects. But I find it surprisingly good for small tasks as well. Recent language features make it even better. The killer features are compile-time typing and great tool support.
For those who only read above the fold: I don’t say that all object-orientation is bad! OOP, especially classical polymorphic OOP, has a well-deserved place in real code. I’m going to talk about a very specific antipattern that I see with some frequency: the use of class for things that should be simple free functions.