Faster substring search with SIMD in Zig
I've been learning a lot about low level programming languages lately, and for a long time there has been one thing that has interested me: SIMD (or 'single ins…
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 4,389 posts.
I've been learning a lot about low level programming languages lately, and for a long time there has been one thing that has interested me: SIMD (or 'single ins…
A short and self contained explanation that will guide you through an implementation of user threads.
I recently did a corporate TLA+ workshop and some people asked what TLA+ specs look like in practice. If you looked at the most common public examples, you’d probably come away thinking that people only used it for critical consensus algorithms. This is a problem for two reasons: first, it makes it harder to learn…
USENIX made the decision this week to discontinue its flagship Annual Technical Conference . When USENIX was started in 1975 — before the Internet, really — conferences were the fastest vector for practitioners to formally share their ideas, and USENIX ATC flourished. Speaking for myself, I came up lionizing ATC: I…
A little walkthrough on an image decoder algorithm's high-level optimization, in order to make more digestable for a 6502 processor.
I've been involved in the Rust project in some form or another since 2016, and it's a language I'm very comfortable using. Many Rust programmers could say the same . But, if we take a step back and are honest with ourselves, we'd admit that the road to getting to that level of comfort was difficult.
For some of us, the backend vs frontend discussion just doesn’t cut it. What do do, then?
Almost all our computers are made of several processing cores. Thus it can be efficient to "parallelize" expensive processing in a multicore manner. That is, instead of using a single core to do all of the work, you divide the work among multiple cores. A standard way to approach this problem is to create threads. ……
Learn how CPUs work, and discover Apple’s underrated competitive advantage.
This is one of several papers I’ll be reading from 2023’s Symposium on Operating Systems Principles (SOSP). If you’d like to receive regular updates as soon as they’re published, check out my newsletter or follow me on the site formerly known as Twitter . Enjoy!
Anthropic and OpenAI both recently announced “fast mode”: a way to interact with their best coding model at significantly higher speeds. These two versions of…
Notes on installing and netbooting Windows 11 over iSCSI
SPI Flash reader built from a Teensy or Arduino
It’s not often I am able to write a patch that not only reduces memory usage, but increases speed as well. Usually I find myself trading memory for speed, so it’s a real treat when I can improve both in one patch. Today I want to talk about the patch I submitted to Ruby in this ticket. It decreases “after boot” memory…
You're reading the original article in English. You can as well read the translation in Russian .
In Search of 2.11BSD, as released Almost all of the BSD releases have been well preserved. If you want to find 1BSD, or 2BSD or 4.3-TAHOE BS...
Imagine you close your laptop lid to put it to sleep, but instead of pausing, it reboots. Not every time, just often enough to be infuriating. You try to save your work, but the machine decides to start over.
Today I put online two diagrams depicting the architecture of the Unix operating system , one for the 1972 First Research Edition and one for FreeBSD, one of its direct descendants. Here are the details on how I created these diagrams.
Reasons why you should consider breaking your hardware up into MiniPCs.
Note 05/01/2025: Hello there, you can find an update version of this article here, with the latest findings, improvements and new tools. This is how a Docker container feels inside a macOS environment: lost at sea, far from the coast. With this article I will try to bring this poor container safely to the coast. TL;DR…
When benchmarking software, we often start by measuring the time elapsed. If you are benchmarking data bandwidth or latency, it is the right measure. However, if you are benchmarking computational tasks where you avoid disk and network accesses and where you only access a few pages of memory, then the time elapsed is…
False sharing, AoS vs SoA, random access, branch prediction: re-measured with go test -bench on two machines. Some claims held, some didn't.
The challenges around porting Linux to an old videogame console by Atari
Building your own UNIX shell in parts. This post focuses on the semantics of the fork system call.
Personal blog of Julien (jvoisin) Voisin