Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 2,232 posts.
C++ in Coders at Work
One of the topics I asked most of my Coders at Work interviewees about was C++. I am not an expert, or even a competent C++ programmer and recognize that my own opinions about C++ are not well-info…
Deploying ES2015+ Code in Production Today
Most web developers I talk to these days love writing JavaScript with all the newest language features—async/await, classes, arrow functions, etc. However, despite the fact that all modern browsers can run ES2015+ code and natively support the features I just mentioned, most developers still transpile their code to…
The Prime That Wasn’t
Life, technology, and other good things
Catching use-after-move C++ bugs with Clang's consumed annotations
This post describes a compile-time technique for catching use-after-move bugs in modern C++. It’s currently used to prevent some mistakes in the Serenity Operating System.
To save C, we must save ABI
After that first Firebrand of an article on Application Binary Interface (ABI) Stability, I’m not sure anyone expected this to be the title of the next one, huh? It seems especially bad,
Java is still available at zero-cost
The Java ecosystem has always been built on a high quality $free (zero-cost) JDK available from Oracle, and previously Sun. This is as true...
WebAssembly Is Not A Stack Machine
This is the final part of a 4-part miniseries on issues with WebAssembly and proposals to fix them.
Idiomatic Monads in Rust
A pragmatic new design for high-level abstractions Monads (and, more generally, constructs known as “higher kinded types”) are a tool for high-level abstraction in programming languages1. Historically, there has been a lot of debate inside (and outside) the Rust community about whether monads would be a useful…
Backbone patterns
Here, I try to document the good practices that our team has learned along the way building Backbone applications. This document assumes that you already have some knowledge of Backbone.js , jQuery , and of course, JavaScript itself.
Do low-level optimizations matter? Faster quicksort with cmov (2020)
Collectively, we have been thinking about sorting for longer than we have had computers. There is still an active literature 1 , 2 , 3 . We are taught that how the counts of comparisons and swaps vary with problem size is what matters: as problems get bigger, order dominates, and anything else is buried in the noise…
Shenandoah GC in production: experience report
Update: I've made several edits to the post since Aleksey Shipilëv was kind enough to suggest many corrections and improvements.If you closely follow JVM development scene, you've probably noticed ...
Replacing Python
In the first post, I took a brief look at the programming languages ATS, C#, Go, Haskell, OCaml, Python and Rust to try to decide which would be the …
Such a Little Thing: The Semicolon in Rust
Look at a tiny syntax detail that shows up in current versions of rust that has profound implications on how the language deals with almost everything being an expression.
Reviewing the cryptography used by Signal
Last year, I urged furries to stop using Telegram because it doesn’t actually provide them with any of the privacy guarantees they think it gives them. Instead of improving Telegram’s c…
Problems with CSVs (2016)
Much of my professional work for the last 10+ years has revolved around handling, importing and exporting CSV files. CSV files are frustratingly misunderstood, abused, and most of all underspecified. While RFC4180 exists, it is far from definitive and goes largely ignored.
Clojure: Realtime collaborative web apps without ClojureScript
A blog mostly about Clojure programming
What If Linus Torvalds Gets Hit by a Bus? (2000)
The question on the lips of everyone in the Linux community is, "What if Linus Torvalds (affectionately known to the trade press as 'Linux Torvalds') gets hit by a bus?" Reams of virtual paper have been wasted on idle speculation about the results of what is a fairly simple experiment. We decided it was high time…
Chinchilla’s death
“With more careful calculations, one can win; with less, one cannot” — Sun Tzu, The Art of War .
Parsing JSON faster with Intel AVX-512
Many recent Intel processors benefit from a new family of instructions called AVX-512. These instructions operate over wide registers (up to 512 bits) and follow the Single instruction, multiple data (SIMD) paradigm. These new AVX-512 instructions allow you to break some speed records, such as decoding base64 data at…
Bringing the web up to speed with WebAssembly
Bringing the web up to speed with WebAssembly Haas et al., PLDI 2017 This is a joint paper from authors at Google, Mozilla, Microsoft and Apple describing the motivations for WebAssembly together w…
Lessons from Doom (2010)
A high-minded goal like “expand the boundaries of the medium” doesn’t always mean forging ahead in crazy new unknown directions. Sometimes it means examining lost evolutionary lines in game design – picking up ideas that were abandoned long ago and seeing if there’s any new life in them. The game I keep coming back to…
Rules for Writing Safety Critical Code (2006)
Ten rules for writing safety critical code, to facilitate analysis and increase software reliability
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…