New
The latest blog posts to take off on Hacker News. 4,387 posts.
When root meets immutable: OpenBSD chflags vs. log tampering
Rafael Sadowski
Strategies for Fast Lexers
Making compilation pipelines fast, starting with the tokenizer
Let's Learn x86-64 Assembly (2020)
The way I was taught x86 assembly at the university had been completely outdated for many years by the time I had my first class. It was around 2008 or 2009, and 64-bit processors had already started becoming a thing even in my neck of the woods. Meanwhile, we were doing DOS, real-mode, memory segmentation and all the…
Zig's New Async I/O
Asynchrony is not concurrency.
Running a million-board chess MMO in a single process
How one million chessboards works
Systemd has been a complete, utter, unmitigated success
Eleven init systems enter, one init system leaves.
Leveraging Elixir's hot code loading capabilities to modularize a monolithic app
How hot code loading solves client-specific engineering problems in my startup Alzo
Serving a half billion requests per day with Rust and CGI
In my previous post Serving 200 million requests per day with a cgi-bin, I did some quick performance testing of CGI using a program written in Go. Go works excellently for CGI programs, for many of the same reasons it works so well for CLI programs and system daemons. But, out of curiosity, I decided to do a bit more…
Serving 200M requests per day with a CGI-bin
Jake Gold tests how well 90s-era CGI works today, using a Go + SQLite CGI program running on a 16-thread AMD 3700X. Using CGI on modest hardware, it’s possible to …
The messy reality of SIMD (vector) functions
We’ve discussed SIMD and vectorization extensively on this blog, and it was only a matter of time before SIMD (or vector) functions came up. In this post, we explore what SIMD functions are, when they are useful, and how to declare and use them effectively. A SIMD function is a function that processes more than… Read
What Microchip doesn't (officially) tell you about the VSC8512
This is part 3 of my ongoing series about LATENTRED, my project to create an open source 1U managed Ethernet switch from scratch.
Serving 200M requests per day with a CGI-bin
In the early 2000s, we used to write a lot of CGI programs. This was the primary way to make websites dynamic at the time. These CGI programs were usually written in Perl, but sometimes in C to increase performance. The CGI mechanism is conceptually simple but powerful. When the web server receives an incoming request…
Using Sun Ray thin clients in 2025
setting up 20 year old hardware is bound to work first try, right? ... right?
Caching is an abstraction, not an optimization
I've always been told that caching is a tool to make software faster. That, given some careful considerations to consistency, caching makes it so that when...
Bought myself an Ampere Altra system
There are tools and there are toys. I bought myself a tool.
The Evolution of Caching Libraries in Go
For the last few years, I've been developing caching library, and today I'd like to talk about the evolution of caches in Go and where we stand today. Especially since Go 1.24 was officially supposed to focus on caching improvements, but I haven't heard much news about them - time to fix that .
I made my VM think it has a CPU fan
...so the malware would finally shut up and run
Using the Internet without IPv4 connectivity
A technical blog about Rust, Linux and other topics.
Why is the Rust compiler so slow?
I spent a month repeatedly building my website in Docker, and now have horrors to share.
Basic Facts about GPUs
Making sure I don’t forget what I read.
How much slower is random access, really?
You may know that, because your computer has different caches (L1, L2, L3...), and memory operations operate on cache lines of about 64 bytes each, you should write programs that exhibit locality to get maximum performance.
Making TRAMP faster
I recently changed jobs and found myself in a position where I would need to do a lot of work on remote machines. Since I am Emacs user, the most common way to do this is using TRAMP (Transparent Remote access, Multiple Protcol). TRAMP is an Emacs package that let’s you treat a remote host like a local system, similar…
Writing a basic Linux device driver when you know nothing about Linux drivers
How difficult could it really be?
Compiling LLMs into a MegaKernel: A path to low-latency inference
TL;DR: We developed a compiler that automatically transforms LLM inference into a single megakernel — a fused GPU kernel that performs…
The unreasonable effectiveness of fuzzing for porting programs
A simple strategy of having LLMs write fuzz tests and build up a port in topological order seems effective at automating porting from C to Rust.
Resurrecting a dead torrent tracker and finding 3M peers
So I was uh, downloading some linux isos, like usual. It was going slowly, so I opened up the Trackers tab in qBittorrent and saw the following:
Meta-analysis of three different notions of software complexity
Discussion on notions of software complexity as defined by Rich Hickey, John Ousterhout and Zach Tellman.
SIMD-friendly algorithms for substring searching (2016)
Popular programming languages provide methods or functions which locate a substring in a given string. In C it is the function strstr , the C++ class std::string has the method find , Python's string has methods pos and index , and so on, so forth. All these APIs were designed for one-shot searches . During past…