A toy RTOS inside Super Mario Bros. using emulator save states
They're Mario Bros. for the NES, apparently.
Topics /
The most popular blog posts about systems & performance on Hacker News. 380 posts.
They're Mario Bros. for the NES, apparently.
The Rust language ecosystem is growing each day, its popularity increasing, and with good reason. It’s the only mainstream language that provides memory and concurrency safety at compile time…
A deep dive into how Linux manages process memory, page tables, and virtual address spaces
Stopping a Linux thread is a surprisingly annoying affair. In this post I present common pitfalls and some solutions -- although no truly satisfactory method exists.
Sometimes compilers can surprise and delight even a jaded old engineer like me
Yesterday I read this toot (German) over on mastodon which starts with “IPv6 is hard.” No it’s not. It’s different. I ran across this multiple times: There is an A and an AAAA-record for a FQDN, but the web server is only reachable via IPv4. You can easily test this with curl $ curl -4 https://github.com -o /dev/null…
Some memory corruption bugs are much harder to exploit than others. They can involve race conditions, crash the system, and impose limitations that make a researcher's life difficult. Working with such fragile vulnerabilities demands significant time and effort. CVE-2024-50264 in the Linux kernel is one such hard bug…
I posted about adding pthread_cancel use in curl about three weeks ago, we released this in curl 8.16.0 and it blew up right in our faces. Now, with #18540 we are ripping it out again. What happened? short recap pthreads define “Cancelation points”, a list of POSIX functions where a pthread may be cancelled. In…
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.
If you’re already familiar with SIMD, the table is all you need. And if you’re not, you will understand the table by the end of the…
UPDATED: 2025-02-15: Fixed some bugs in the examples and pointed out that you don't usually just want to panic on memory allocation failure.
What started off as casual scrolling through the KernelCTF submissions quickly spiraled into a weeks-long deep dive into a deceptively simple patch - and my first root shell from a Linux kernel exploit!
Programming languages have rapidly evolved in recent years. But in software development, the new often meets the old, and the scaffolding that OS gives for running new processes hasn’t changed much since Unix.
a bunch of weird and random technical stuff
Apparently shlx is a “medium latency” (3 cycles) instruction on Alder Lake. My disappointment is immeasurable, and my day is ruined.
The GPU in your computer is about 10 to 100 times more powerful than the CPU, depending on workload. For real-time graphics rendering and machine learning, you are enjoying that power, and doing those workloads on a CPU is not viable. Why aren’t we exploiting that power for other workloads? What prevents a GPU from…
Learn how Linux/FFmpeg C partial codebase is organized to be extensible and act as if it were meant to have “polymorphism”. Specifically, we’re going to briefly explore how Linux …
The bizarre story of how taking flash photos could instantly crash the Raspberry Pi 2, the community detective work that solved it, and why this strange bug revealed fundamental flaws in modern chip design.
Time seems simple. But we engineers lose sleep over something as basic as keeping clocks in sync. Here’s why…
Disclaimers before we start For those who don’t want to read/don’t care that much, here are the results. I hope after seeing them you are compelled to read. TL;DR: I wrote a super fast phrase search algorithm using AVX-512 and achieved wins up to 1600x the performance of Meilisearch. The source code can be found here…
How Postgres’ v7 UUIDs are made monotonic, and why that’s a great feature.
Guide to implementing a C standard library for bare metal hardware using Newlib, enabling powerful functions like printf and malloc without relying on an operating system. This step-by-step guide demonstrates how to configure and integrate Newlib on RISC-V architecture, showing you how to redirect standard I/O through…
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…
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale. But how true is this in general?
Underjord is an artisanal consultancy doing consulting in Elixir, Nerves with an accidental speciality in marketing and outreach. If you like the writing you should really try the pro version .
My attempt to create fast and cheap bulk storage by caching HDDs with SSDs on Linux, using standard lvmcache. Contains an introduction to LVM, RAID, and partitioning.
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…
I've been studying the standard cell circuitry in the Intel 386 processor recently. The 386, introduced in 1985, was Intel's most complex pr...
Musings on the representation, propagation and handling of errors in existing programming languages, as well as thoughts on future systems. (15K+ words)