Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,709 posts.
A few words on Ruby's type annotations state
...that were written in a military training camp and accidentally grew to 5k words
The Evolutions of Lambdas in C++14, C++17 and C++20
Expressive code in C++
Notes on the Crystal Language
You are seeing this because the administrator of this website has set up Anubis to protect the server against the scourge of AI companies aggressively scraping websites . This can and does cause downtime for the websites, which makes their resources inaccessible for everyone.
Using SBCL Common Lisp as a Dynamic Library
Have you ever wanted to call into your Lisp library from C? Have you ever written your nice scientific application in Lisp, only to be requ...
PureScript and Haskell
Two years ago, I starting learning PureScript. I had been intrigued by purely functional programming for some time but had failed to learn Haskell once or twice. PureScript seemed to be a kinder, gentler introduction to this world while retaining the fundamental properties of pureness that made Haskell intriguing to…
I hate the Pumping Lemma
I hate the Pumping Lemma for regular languages. It’s a complicated way to express an idea that is fundamentally very simple, and it isn’t even a very good way to prove that a language is not regula…
Clojure Core
Earlier today Rich Hickey let the cat out of the bag that I’m joining the Clojure Core development team.
Python's Innards: Introduction (2010)
A friend once said to me: You know, to some people, C is just a bunch of macros that expand to assembly . It’s been years ago (smartasses: it was also before llvm , ok?), but the sentence stuck with me. Do Kernighan and Ritchie really look at a C program and see assembly code? Does Tim Berners-Lee surf the Web any…
Four Years of Jai (2024)
I’ve been programming for long enough to be righteously cantankerous about a lot of things. The list of languages, frameworks and libraries I’ve worked with professionally or on personal projects is too long to list – but it includes everything from C and assembly languages through C++, Pascal and Delphi, through Java…
Scala projects are difficult to maintain
Scala is a powerful programming language that can make certain small teams hyper-productive.
Why I’m Frustrated with Go
A brief example demonstrating my current frustrations with the Go programming language.
How does Ada's memory safety compare against Rust?
A comparison of how well Rust and Ada prevent the most common memory-related software errors.
A look at the J language: the fine line between genius and insanity (2012)
I’ve been looking for a decent TSDB for years now. Took a shot at writing one in Lush using HDF5 (as others have done), but the experiments I did raised more questions than I got answers. I&#…
What the Hell Is a Deno?
This weeks hottest new JS runtime.
Lisp, Smalltalk, and the power of symmetry (2014)
Like many hackers, my first real programming language love was Lisp. Paul Graham, who inspired my own explorations of the language, is a particular advocate and has written quite a bit about Lisp a…
Initialization in C++ is Seriously Bonkers
I was recently reminded of why I think it’s a bad idea to teach beginners C++. It’s a bad idea because it is an objective mess—albeit a beautiful, twisted, tragic, wondrous mess. Despite the current state of the community, this post is not a polemic against modern C++. This post is partly a follow-up on Simon Brand’s…
Own Constant Folder in C/C++
I was talking with someone today that really really wanted the sqrtps to be used in some code they were writing. And because of a quirk with clang (still there as of clang 18.1.0), if you happened to use -ffast-math clang would butcher the use of the intrinsic. So for the code: __m128 test(const __m128 vec) { return…
Swift Tooling: Windows Edition
Productivity on every platform - a deep dive on the ways we're writing Swift code on Windows, and improving the developer experience along the way.
Python's sad, unimaginative Enum
Welcome to my blog, which was once a mailing list of the same name and is still generated by mail. Please reply via the "comment" links.
When zero cost abstractions aren't zero cost
Rust is built around the concept of “zero cost abstraction”. The idea is that you can write human-friendly high level code and the compiler will give you for free performance at least as good as any optimized low level code you could have written yourself. With zero cost abstraction, you no longer have to trade off…
Carbon is not a programming language (sort of)
Within C++, there is a much smaller and cleaner language struggling to get out.
Multiple assignment and tuple unpacking improve Python code readability (2018)
Whether I’m teaching new Pythonistas or long-time Python programmers, I frequently find that Python programmers underutilize multiple assignment....
A deep dive into Multicore OCaml garbage collector
I recently gave a talk on the internals of multicore OCaml GC at Jane Street offices in NYC. The slides from the talk are available online . But I felt that the slides alone aren’t particularly edifying. This post is basically the slides from the talk annotated with notes.
The Isolation Trap: Erlang
Erlang's mailbox design is more disciplined than Go's channels: only the owning process can read from a mailbox, and sends are asynchronous. Yet the four failure modes of shared mutable state still show up, just in different shapes.