Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 2,232 posts.
Pattern: Back ends for front ends
With the advent and success of the web, the de facto way of delivering user interfaces has shifted from thick-client applications to interfaces delivered via the web, a trend that has also enabled the growth of SAAS-based solutions in general. The benefits of delivering a user interface over the web were huge …
ha ha only serious
[from SF fandom, orig. as mutation of HHOK, ‘Ha Ha Only Kidding’] A phrase (often seen abbreviated as HHOS) that aptly captures the flavor of much hacker discourse. Applied especially to parodies, absurdities, and ironic jokes that are both intended and perceived to contain a possibly disquieting amount of truth, or…
the Lemacs/FSFmacs schism
In 1991, I was working at Lucid Inc., and our newest product, Energize, was an integrated development environment for C and C++ on Unix. The design of this development environment involved very tight integration between the various tools: compilers, linkers, debuggers, graphers, and editors. So of course we needed a…
bliki: Frequency Reduces Difficulty
"If it hurts - do it more often". Good advice if the amount of pain raises exponentially with the time between actions, such as for integrating software.
Basics of the Unix Philosophy
The ‘Unix philosophy’ originated with Ken Thompson's early meditations on how to design a small but capable operating system with a clean service interface. It grew as the Unix culture learned things about how to get maximum leverage out of Thompson's design. It absorbed lessons from many sources along the way.
Units of measure
Type safety for numerics
Prototypal Inheritance
Five years ago I wrote Classical Inheritance in JavaScript ( Chinese Italian Japanese ) . It showed that JavaScript is a class-free, prototypal language, and that it has sufficient expressive power to simulate a classical system. My programming style has evolved since then, as any good programmer's should. I have…
A Guide to Branching in Mercurial / Steve Losh
I've been hanging out in the #mercurial and #bitbucket channels on freenode a lot lately, and I've noticed a topic that comes up a lot is "how does Mercurial 's branching differ from git 's branching?"
Waiting for PostgreSQL 12 – Allow user control of CTE materialization, and change the default behavior.
This is pretty important change, as it has the chance to cause performance issues in some cases.
The Three Projections of Doctor Futamura
Introduction The Three Projections of Futamura are a sequence of applications of a programming technique called 'partial evaluation' or 'sp...
The PHP Singularity
Look at this incredible thing Ian Baker created. Look at it! What you’re seeing is not Photoshopped. This is an actual photo of a real world, honest to God double-clawed hammer. Such a thing exists. Isn’t that amazing? And also, perhaps, a little disturbing? That wondrous hammer
Tabs versus Spaces
The last time the tabs-versus-spaces argument flared up in my presence, I wrote this. Gasoline for the fire? Maybe.
Build Your Own React
We are going to rewrite React from scratch. Step by step. Following the architecture from the real React code but without all the…
CRDTs are the future
I saw Martin Kleppmann’s talk a few weeks ago about his approach to realtime editing with CRDTs, and I felt a deep sense of despair. Maybe all the work I’ve been doing for the past decade won’t be part of the future after all, because Martin’s
Let’s Build a Simple Database (2017)
Writing a sqlite clone from scratch in C
Crafting “Crafting Interpreters”
It took three years and 200,000 words more than I expected, but my second book, Crafting Interpreters , is complete. I finished the third draft of the last chapter today, marking the last of around 1,400 days of continuous writing.
Awk in 20 Minutes (2015)
Awk is a tiny programming language and a command line tool. It's particularly appropriate for log parsing on servers, mostly because Awk will operate on files, usually structured in lines of human-readable text.
1/0 = 0
Disclaimer 2024-12-02 Since this rant is going viral again (again (again)), some disclaimers: I wrote this six years ago to “”“win”“” an ugly Twitter fight. I’m glad I anonymized the inciting tweet and hope I’m the only person still getting grief over this. The core interesting bit— why it’s mathematically valid to…
Parsing Protobuf at 2+GB/S: How I Learned to Love Tail Calls in C
[Note: there have been several developments in this space since thisarticle was published. See A Tail Calling Interpreter For Python (And Other Updates) for...
Statically Recompiling NES Games into Native Executables with LLVM and Go
I have always wanted to write an emulator. I made a half-hearted attempt in college but it never made it to a demo-able state. I also didn't want to write Yet Another Emulator. It should at least bring something new to the table. When I discovered LLVM , I felt like I finally had worthwhile idea for a project.
Serverless Architectures
Serverless architectures replace a managed server with a collection of third party services and FaaS
There is no memory safety without thread safety
Memory safety is all the rage these days. But what does the term even mean? That turns out to be harder to nail down than you may think. Typically, people use this term to refer to language...
If PHP Were British (2011)
PHP, as the result of a spectacular error of judgement, appears to be written in US English. How do we developers ensure the traditions of the British Empire continue to be upheld, even in the digital age?
An Interactive Introduction to Fourier Transforms
Fourier transforms are a tool used in a whole bunch of different things. This is a explanation of what a Fourier transform does, and some different ways it can be useful.
Why are the Microsoft Office file formats so complicated? (2008)
Last week, Microsoft published the binary file formats for Office. These formats appear to be almost completely insane. The Excel 97-2003 file format is a 349 page PDF file. But wait, that’s not al…
Text editing hates you too (2019)
Alexis Beingessner's Text Rendering Hates You , published exactly a month ago today, hits very close to my heart.
Catalina is checking notarization of unsigned executables
This is a follow-up to Allan Odgaard's excellent article macOS 10.15: Slow by Design . I want to talk specifically about the first section "Spawning a new Process", because there has been widespread misunderstanding of this. Odgaard provides a simple test to show that the first run of an executable is delayed while…
Farewell Node.js
Leaving node.js land