Five Kinds of Nondeterminism
Or four kinds, or six kinds, I'm not picky about how you count them
Topics /
The most popular blog posts about software engineering on Hacker News. 1,747 posts.
Or four kinds, or six kinds, I'm not picky about how you count them
Writing a Hypervisor in 1,000 Lines
As we saw in the opening post, SQLite stores metadata about tables in a special "schema table" starting on page 1. We've been reading records from this…
Transform Your Time Management Forever! Discover how switching to UTC eliminated time zone confusion, boosted productivity, and simplified global scheduling for remote work.
How building edge-case first led to bloated, overly-granular libraries and what we can do about it
A friend called me last week. Someone who’d built web applications back for a long time before moving exclusively to backend and infra work. He’d just opened a modern React codebase for the first time in over a decade.
At one level, this question is not very fair, because an answer to it as stated would be that one simply does not use doubly linked lists. They have been popular in introductory computer science lectures because they are a neat way to explain pointers in a data structure that's easy to draw on a whiteboard, but they…
The gophers nested too greedily and too deep.
Timeline & Responsible Disclosure
Recently a colleague mentioned building NixOS images that run unchanged on multiple architectures. Given the past adventures on this blog with systemd-repart and cross-compiling NixOS, I decide to give this a go.
Asynchrony, fast approximate exponents, and 10x more efficient softmax.
I have a spicy git alias that allows me to "archive" old git branches by converting them to tags, making them less visible across git tooling. # ~/.gitconfig…
To start off, we can leverage the STL for this calculation. std::count_if() more precisely:
Pydantic’s JSON loading uses a huge amount of memory; here’s how to reduce it.
Jeffrey Yasskin recently pointed out an interesting security bug: The idea is, if you had registered googlelogoligature.net then Chrome on Android (and possibly other Google products) would have displayed it as Google.net, potentially tricking users into thinking they were really interacting with Google. To see how…
In a service with capacity $\mu$ requests per second and background load $\lambda_0$, the usable headroom is $H = \mu - \lambda_0 > 0$. When $M$ clients align, e.g., after a cache expiry, at a cron boundary, or as a service returns from an outage, the bucketed arrival rate can
This post illustrates a key lemma that is used in proving the fundamental theorem of Galois theory (FTGT). Note that FTGT is not covered in this post. The focus of this post is on understanding and proving this lemma only. Here is the lemma from the book Galois Theory , 5th ed. by Stewart (2023):
“Compiler Engineering in Practice” is a blog series intended to pass on wisdom that seemingly every seasoned compiler developer knows, but is not systematically written down in any textbook or online resource. Some (but not much) prior experience with compilers is needed.
I recently went on a nice long SCUBA diving trip with my wife and daughters. Lots of diving implies lots of showers, and lots of showers means lots of shower-thoughts! [1] An especially interesting one I had turned into a nice way to visualize some aspects of the Collatz Conjecture.
Understanding how search engines transform text into tokens through character filtering, tokenization, stemming, and stopword removal.
A browser with Wasm GC and tail call support is required for this demo. We recommend using either Mozilla Firefox or Google Chrome.
Electron is the most popular framework for building desktop apps using web technologies. In this article, we'll discuss a newer alternative, Tauri, and weigh some of the pros and cons between the two frameworks.
A joyride through the dangers of lock-free programming.
Types in coding projects are good. Don’t be afraid to create them when you need to.
Sovereign code infrastructure.
I think I figured out what’s stressing me out about programming in dynamically typed languages: It’s about always being unsure if using a library in a particular way is going to work and if minor version upgrades aren’t going to break your code.
Exponential backoff with jitter is de rigeur for making service calls. This code, or something like it, probably looks really familiar: func do(ctx context.Context) error { const ( maxAttempts = 10 baseDelay = 1 * time.Second maxDelay = 60 * time.Second ) delay := baseDelay for attempt := range maxAttempts { err :=…
We’re sharing details about Glean, Meta’s open source system for collecting, deriving, and working with facts about source code. In this blog post we’ll talk about why a system like Glean is import…