Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,549 posts.
mikeash.com: NSBlog
accessors (2) advertisement (11) advice (4) apple (7) apress arc (6) arduino assembly (11) assert (2) atomic (3) audio (4) autorelease (3) blocks (14) bolo (3) book (4) books (2) braaaiiiinnnssss (2) bridging bug (3) c (19) c++ (4) c99 casestudy chemicalburn (4) clang (5) classic (2) cocoa (42) code (4) codeinjection…
V is for Vaporware
Xe Iaso's personal website.
The Story of Mel
This was posted to USENET by its author, Ed Nather (utastro!nather), on May 21, 1983.
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...
Boolean Blindness
I hate Booleans! But isn’t everything “just bits”? Aren’t computers built from gates? And aren’t gates just the logical connectives? How can a Computer Scientist p…
Five Questions about Language Design
(These are some notes I made for a panel discussion on programming language design at MIT on May 10, 2001.) 1. Programming Languages Are for People. Programming languages are how people talk to computers. The computer would be just as happy speaking any language that was unambiguous. The reason we have high level…
How To Become A Hacker
As editor of the Jargon File and author of a few other well-known documents of similar nature, I often get email requests from enthusiastic network newbies asking (in effect) "how can I learn to be a wizardly hacker?". Back in 1996 I noticed that there didn't seem to be any other FAQs or web documents that addressed…
Where modules go to die
Another great post
Revisiting a 'smaller Rust'
A bit over a year ago, I wrote some notes on a “smaller Rust” - a higher level language that would take inspiration from some of Rust’s type system innovations, but would be simpler by virtue of targeting a domain with less stringent requirements for user control and performance. During my time of unemployment this…
Ideology
Some people claim that unit tests make type systems unnecessary: "types are just simple unit tests written for you, and simple unit tests aren't the important ones". Other people claim that type systems make unit tests unnecessary: "dynamic languages only need unit tests because they don't have type systems." What's…
JSLinux - Technical Notes
In 2011 I wrote the initial version of JSLinux, the first PC/x86 emulator in Javascript running Linux. I reused parts of another of my emulators ( QEMU ) for the x86 helpers and the devices.
Not all AI-assisted programming is vibe coding (but vibe coding rocks)
Vibe coding is having a moment. The term was coined by Andrej Karpathy just a few weeks ago (on February 6th) and has since been featured in the New York …
Urbit: functional programming from scratch
Urbit is a static functional namespace : a programming environment specified as a single stateless, frozen function. The Urbit function is ...
You Could Have Invented Monads! (And Maybe You Already Have.)
A more permanent version of this article is stored at GitHub . Please link to that rather than to here. If you hadn't guessed, this is about...
A Plan for Spam
August 2002 (This article describes the spam-filtering techniques used in the spamproof web-based mail reader we built to exercise Arc . An improved algorithm is described in Better Bayesian Filtering .) I think it's possible to stop spam, and that content-based filters are the way to do it. The Achilles heel of the…
What science can tell us about C and C++'s security
There are not a lot of very strong empirical results in the field of programming languages . This is probably because there’s a huge amount of variables to control for, and most of the subjects available to researchers are CS undergraduates. However, I have recently found a result replicated across numerous codebases…
Performance is a Feature
We’ve always put a heavy emphasis on performance at Stack Overflow and Stack Exchange. Not just because we’re performance wonks (guilty!), but because we think speed is a competitive advantage. There’s plenty of experimental data proving that the slower your website loads and displays, the less people
You Might Not Need Redux
People often choose Redux before they need it. “What if our app doesn’t scale without it?” Later, developers frown at the indirection Redux…
Tail Call Optimisation in Common Lisp Implementations
While the Common Lisp standard does not require implementations to eliminate tail calls, some do—thereby allowing a more functional programming style. Especially in the prototyping phase, it can be useful to know where this functional style can be employed and where it's likely to cause stack overflow. Since I…
A Whole New World
This talk announces the most ambitious software project I've ever undertaken, then considers why its existence is so surprising (and in some cases frustrating) to people.
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?"
The protocol-relative URL
Update 2014.12.17: Now that SSL is encouraged for everyone and doesn’t have performance concerns , this technique is now an anti-pattern . If the asset you need is available on SSL, then always use the https:// asset.
Modern garbage collection
A look at the Go GC strategy
The Ten Commandments of Egoless Programming
The Ten Commandments of Egoless Programming, as originally established in Jerry Weinberg’s book The Psychology of Computer Programming: 1. Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket
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.
Chapter 5. Hacker Writing Style
We've already seen that hackers often coin jargon by overgeneralizing grammatical rules. This is one aspect of a more general fondness for form-versus-content language jokes that shows up particularly in hackish writing. One correspondent reports that he consistently misspells ‘wrong’ as ‘worng’. Others have been…