Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 2,232 posts.
The /bin/true Command and Copyright
Lest you think that this is a fluke that was quickly corrected, here is the /bin/true program from AT&T's Sys/V libraries as of 1990:
Occurences of swearing in the Linux kernel source code over time
How many times are words, names or functions found in the Linux kernel source code? Browse an example or write your own comma-separated list to find out! You can use * for wildcards, foo|bar for sums, and a word is defined as \<[[:alnum:]_]+\> (ignoring case, considering accents).
Emacs standing alone on a Linux Kernel (2004)
Nano How-To explaining how to setup a root file system with only emacs.
A Tour of the Acme Editor
People I work with recognize my computer easily: it's the one with nothing but yellow windows and blue bars on the screen. That's the text editor acme, written by Rob Pike for Plan 9 in the early 1990s. Acme focuses entirely on the idea of text as user interface. It's difficult to explain acme without seeing it…
In Defense of Not-Invented-Here Syndrome (2001)
Time for a pop quiz. 1. Code Reuse is: a) Goodb) Bad 2. Reinventing the Wheel is: a) Goodb) Bad 3. The Not-Invented-Here Syndrome is: a) Goodb) Bad Of course, everybody knows that you should always…
Architecture astronauts take over
It was seven years ago today when everybody was getting excited about Microsoft’s bombastic announcement of Hailstorm, promising that “Hailstorm makes the technology in your life work t…
Real Programmers Don't Use Pascal - Letter to the editor, Datamation July 1983
Back in the good old days-- the "Golden Era" of computers-- it was easy to separate the men from the boys (sometimes called "Real Men" and "Quiche Eaters" in the literature). During this period, the Real Men were the ones who understood computer programming, and the Quiche Eaters were the ones who didn't. A real…
Regular Expression Matching: the Virtual Machine Approach
Name the most widely used bytecode interpreter or virtual machine. Sun's JVM? Adobe's Flash? .NET and Mono? Perl? Python? PHP? These are all certainly popular, but there's one more widely used than all those combined. That bytecode interpreter is Henry Spencer's regular expression library and its many descendants.
Staff archetypes
Most career ladders define a single, uniform set of expectations for Staff engineers operating within the company. Everyone benefits from clear role expectations, but career ladders are a tool that applies better against populations than people. This is particularly true for Staff-plus engineers, whose career ladders…
The Typestate Pattern in Rust
The typestate pattern is an API design pattern that encodes information about an object’s run-time state in its compile-time type . In particular, an API using the typestate pattern will have:
File over app
If you want to create digital artifacts that last, they must be files you can control, in formats that are easy to retrieve and read. Use tools that give you...
We need tool support for keyset pagination
Pagination without OFFSET has many benefits but one problem: there is no tool support. Please help changing this.
The Day AppGet Died
The story of how Microsoft embraced and then killed AppGet.
The unreasonable effectiveness of simple HTML
I've told this story at conferences - but due to the general situation I thought I'd retell it here. A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic…
The Hardest Program I've Ever Written – How a code formatter works (2015)
The hardest program I’ve ever written, once you strip out the whitespace, is 3,835 lines long. That handful of code took me almost a year to write. Granted, that doesn’t take into account the code that didn’t make it. The commit history shows that I deleted 20,704 lines of code over that time. Every surviving line has…
"Another World" (game) Code Review
I spent two weeks reading and reverse engineering further the source code of Another World ("Out Of This World" in North America). I based my work on Gregory Montoir's "binary to C++" initial reverse engineering from the DOS executable. I was amazed to discover an elegant system based on a virtual machine interpreting…
Finite state machines as data structure for representing ordered sets and maps
It turns out that finite state machines are useful for things other than expressing computation. Finite state machines can also be used to compactly represent ordered sets or maps of strings that can be searched very quickly.
My RustConf 2018 Closing Keynote
I promised two things when I did the closing keynote at RustConf 2018:
The Animated Guide to Emacs Paredit
Dan's blog
A full TCP/IP stack in under 200 LoC (and the power of DSLs)
(Note: This is the third and final part of a series. Part one appeared Monday and part two appeared yesterday.)
Comic Code: Monospaced interpretation of the most over-hated typeface
Name: Comic Code, Comic Code Ligatures Type: Retail typeface Publisher: Tabular Type Foundry Release year: 2019 Purchase links: I Love Typography (both)
The Ruby community has a DHH problem
The Ruby community can no longer afford to stand silent in the face of DHH and his toxic ideas.
Elastic Tab Stops: A Better Way to Indent and Align Code
Elastic tabstops - a better way to indent and align code
Bell Labs and CSP Threads
This page is a slice of the history of concurrent programming, focusing on one particular lineage of Hoare's language of communicating sequential processes (CSP) [1] [1a] . Concurrent programming in this style is interesting for reasons not of efficiency but of clarity. That is, it is a widespread mistake to think…
LOOP for Black Belts
In Chapter 7 I briefly discussed the extended LOOP macro. As I mentioned then, LOOP provides what is essentially a special-purpose language just for writing iteration constructs.
nasal demons
Recognized shorthand on the Usenet group comp.std.c for any unexpected behavior of a C compiler on encountering an undefined construct. During a discussion on that group in early 1992, a regular remarked “ When the compiler encounters [a given undefined construct] it is legal for it to make demons fly out of your nose…