New
The latest blog posts to take off on Hacker News. 21,826 posts.
Hinge and Its Implementation of the Gale–Shapley algorithm
https://thetab.com/uk/2020/05/20/this-is-how-the-nobel-prize-winning-hinge-algorithm-actually-works-157740
The hunt for a cluster-killer Erlang bug (2021)
A 20 minute Kafka outage brought down our entire Erlang cluster for hours. How could this happen? Follow this fascinating investigation!
Building a web application with Rust and WebAssembly
Whether it be with React, VueJS, Angular, or in Rust, modern web applications are composed of 3 kinds of pieces: Components Pages Service Components are reusable pieces and UI elements. An input field, or a button, for example. Pages are assemblies of components. They match routes (URLs). For example, the
Everything Is Broken: Shipping Rust-Minidump at Mozilla
We've been working on the development of rust-minidump. The first in this two-part series explains what minidumps are and how we made rust-minidump.
Write documentation first, then build
The best way to build a great product is to write the whole idea out first.
Making Code Faster
I’ve enjoyed writing software for 40+ years now. Lots of activities fall into that “writing software” basket, and here’s my favorite: When you have a body of code with a decent unit-test suite and you need to make it go faster. This part of the Quamina diary is a case study of making a piece of the library faster.
The Y Combinator in Go with generics
A few years ago I've written in some detail about the Y combinator, including implementations in Clojure and Python.
The Linux kernel can spawn processes on its own
While investigating the aftermath of a potential security breach, I came across a somewhat "odd" process looking like this:
Bringing Forward the End-of-Life Date for Node.js 16
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
SIMD accelerated sorting in Java – how it works and why it was 3x faster
In this post I explain a little about how to use Java’s Vector APIs, attempt to explain how they turn out fast, and then use them to implement a sorting algorithm 3x faster than Arrays.sort . I then explain some problems I found, and how I resolved them. Supporting code is published here .
Data Race Detector
Data races are among the most common and hardest to debug types of bugs in concurrent systems. A data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write. See the The Go Memory Model for details.
“Code” 2nd Edition
I am overjoyed to announce that the 2nd edition of my book Code: The Hidden Language of Computer Hardware and Software will be published by Pearson on August 19, 2022. As you can see, the covers of the two editions are nearly identical except that the 2nd edition uses the “dark mode” option:
Why software engineers like woodworking
The smell of fresh pine sawdust filled the air, with more floating up as I sanded the last rough corner of the stool. My toddler was happily sanding her own block off to the side.
Cranelift, Part 4: A New Register Allocator
This post is the fourth part of a three-part series 1 describing work that I have been doing to improve the Cranelift compiler. In this post, I'll describe the work that went into regalloc2 , a new register allocator I developed over the past year. The allocator started as an effort to port IonMonkey's register…
Techniques for Training Large Neural Networks
Large neural networks are at the core of many recent advances in AI, but training them is a difficult engineering and research challenge which requires orchestrating a cluster of GPUs to perform a single synchronized calculation.
The collapse of complex software
In 1988, the anthropologist Joseph Tainter published a book called The Collapse of Complex Societies. In it, he described the rise and fall of great…
Rust without the async (hard) part
A comparison between async Rust's and lunatic's approach to massive concurrency.
How to build undo/redo in a multiplayer environment by Liveblocks
Notoriously tough to build, undo/redo in a multiplayer environment is even more fraught with difficulty. In this article, we will take you on a behind-the-scenes exclusive, explaining one of the most complex developer issues for multiplayer apps.
Stop Interviewing with Leet Code
During interviews, technical skills in the industry are still largely vetted through LeetCode-style questions. These are small algorithmic riddles in the for...
50th Anniversary of the Mother of All Demos (2018)
I was asked to give a toast in celebration of the 50th Anniversary of [The Mother of All Demos](https://en.wikipedia.org/wiki/The_Mother_of_All_Demos) so I spent some time reflecting on Engelbart's w...
Pyston-lite: our Python JIT as an extension module
Today we’re very excited to announce Pyston-lite, a JIT for Python that is easily installable as an extension module. We’ve taken the core technology of Pyston and repackaged it so that…
The End of Localhost
All the Cloud's A Staging Env, and All the Laptops Merely Clients
Is there a maximum size for Windows clipboard data?
There is no pre-set maximum size, but that null might be coming from somewhere else.
What ID3v2 could have been
Speculations and specifications. If you were a Winamp user back in the day, or curate an MP3 collection currently, you might recognize the humble ID3 tag. It is what the metadata in the MP3 file is made up of. First it was pretty limited in the version later dubbed ID3v1. Like any good 2.0 they added a ton more…