Igniting the GPU: From Kernel Plumbing to 3D Rendering on RISC-V
How I enabled the PowerVR GPU on the TH1520 SoC by writing the missing kernel drivers.
The latest blog posts to take off on Hacker News. 543 posts.
How I enabled the PowerVR GPU on the TH1520 SoC by writing the missing kernel drivers.
Years ago, I maintained a big C++ codebase at my day job. This product was the bread winner for the company and offered a public HTTP API for online payments. We are talking billions of euros of processed payments a year.
Introducing kv, a statically allocated key/value server.
A problem I experienced when pursuing my PhD and submitting academic articles was that I had built solutions to problems that required dramatic scale to be effective and worthwhile. Responses to my publication submissions often claimed such problems did not exist; however, I had observed them during my time within…
If someone had told me 12 months ago what was going to happen this past year, I wouldn’t have believed them. Skipping swiftly past all the political, economic and social turmoil, I come to th…
> In banking, telecom, and payments, reliability is not a nice to have. It is table stakes. The most reliable systems I have worked on reduce entire classes of bugs before the code even runs. Function...
This is a follow-up to making the rav1d video decoder 1% faster, where we compared profiler snapshots of rav1d (the Rust implementation) and dav1d (the C …
Try the first release of the QNX Developer Desktop, a self‑hosted QNX development environment that eliminates cross‑compilation for faster workflows.
In preparation for a future project, I was thinking about at the unix find utility . It operates a file system hierarchies, with basic operations selected and filtered using a specialized expression language. Users compose operations using unary and binary operators, grouping with parentheses for precedence. find may…
The rationale and transition period to moving to the new “core:os”
I bought a MacBook Air M2. As of writing, it's very affordable with the 16 GB RAM, 256 GB SSD, 13.6" model available for $750. As of writing, also Asahi Linux doesn't support anything newer than M2.
Sometimes compilers can surprise and delight even a jaded old engineer like me
At Waymo, our mission is to be the world’s most trusted driver. We know trust is built through consistent behavior over time—earned through every mile we drive and every interaction we have with the community. This past Saturday, as a widespread PG&E outage cut power to nearly one-third of San Francisco, our service…
We analyzed if AWS’ N. Virginia region remains the least reliable in 2025. Overview of outages, affected services, and the massive October 20 AWS incident, with insights from StatusGator’s real-time monitoring.
Time seems simple. But we engineers lose sleep over something as basic as keeping clocks in sync. Here’s why…
Or: How JPEG Screenshots Defeated Our Beautiful H.264 WebCodecs Pipeline
Ever since I got AMD, Intel, and Nvidia graphics cards to run on a Raspberry Pi, I had a nagging question: What's the point? The Raspberry Pi only has 1 lane of PCIe Gen 3 bandwidth available for a connection to an eGPU. That's not much. Especially considering a modern desktop has at least one slot with 16 lanes of…
What does a relational database designed specifically for local SSDs look like? Postgres, MySQL, SQLite and many others were invented in the 90s and 00s, the era of spinning disks. A local NVMe SSD has ~1000x improvement in both throughput and latency. Design decisions like write-ahead logs, large page sizes, and…
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.
Don't you love misleading documentation?
The Linux kernel has a feature where you can tune the behavior of memory allocations: the vm.overcommit_memory sysctl. When overcommit is enabled (sadly, this is the default), the kernel will typically return a mapping when brk(2) or mmap(2) is called to increase a program’s heap size, regardless of whether or not…
Model minimalistically Start from a tiny core, and always keep a working model as you extend. Your default should be omission. Add a compone...
How I investigated and worked around a kernel bug that caused async-profiler to freeze my machine whenever I tried to use a profiler.
A programming blog written by Vaxry.
ICU gets Unicode right and pays for it. This post shows a different approach: fold-safe windows, SIMD probes, and verifiers for fast UTF‑8 search.
Because your $5 microcontroller needed to run UNIX
Pizlix is LFS (Linux From Scratch) 12.2 with some added components, where userland is compiled with Fil-C. This means you get the most memory safe Linux-like OS currently available.
Back in 2017 I wrote about a technique for creating closures in C using JIT-compiled wrapper. It’s neat, though rarely necessary in real programs, so I don’t think about it often. I applied it to qsort , which sadly accepts no context pointer. More practical would be working around insufficient custom allocator…
Memory safety and sandboxing are two different things. It's reasonable to think of them as orthogonal: you could have memory safety but not be sandboxed, or you could be sandboxed but not memory safe.
High-performance object storage exists, but the economics make it unusable at scale. FractalBits breaks out of the high-performance trap.