New
The latest blog posts to take off on Hacker News. 6,945 posts.
Garbage Collectors Are Scary
Garbage collectors are expected to be invisible: if programmers (or even users) notice them, something is wrong. Usually, such problems are are performance problems, but there could be correctness issues as well. This makes implementing them a bit scary.
Virtualizing the 6502 on a 6502 with 6o6
Okay, promises, promises. Here's the first of my bucket list projects I'm completing which I've intermittently worked on for literally two d...
Flatcar: OS Innovation with Systemd-Sysext
The current state of systemd-sysext in Flatcar and the next steps
OpenBSD Desktop
I am a minimalist, and I tend to always keep it as small as I can, so I try to use all I have in base (if it fits), plus of course some other tools needed.
Making Sense of Acquire-Release Semantics
Multiprocessor Synchronization was one of my favorite classes during my undergrad — it had a clear progression from theory to practice, starting at the theory of consensus numbers and moving onto atomic operations and then synchronization primitives and lock-free data structures, all from first principles. With…
Unix and Multics (2019)
Story from the development of the Multics operating system. Unix, our famous child.
So We've Got a Memory Leak
A story of finding, understanding, and fixing a memory leak in our Rails app. With graphs and code!
It's always TCP_NODELAY
The first thing I check when debugging latency issues in distributed systems is whether TCP_NODELAY is enabled. And it’s not just me. Every distributed system builder I know has lost hours to latency issues quickly fixed by enabling this simple socket option, suggesting that the default behavior is wrong, and perhaps…
UTC, Tai, and Unix Time (2001)
TAI times are identified by year, month, day, hour, minute, and second. There are exactly 86400 TAI seconds in every TAI day. TAI days are labelled by the Gregorian calendar.
Opening Windows in Linux with sockets, bare hands and 200 lines of C
In this post I want to create a single file C file program to open a windows inside Linux without using xlib or any similar libraries. The idea is to explore X11 protocol and see how it is used to interact with X server to create windows.
The search for easier safe systems programming
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.
Temporal Python – A durable, distributed asyncio event loop (2023)
Introduction to the Temporal Python SDK and how Temporal is a durable, distributed asyncio event loop
Linux When?
From the Zed Blog: In this episode of Zed Decoded, Thorsten talks to Mikayla, who's been leading the effort to Zed working on Linux, about the Zed's Linux version and how it's taking shape
Arena-based parsers
The code is a bit "experimental" but it's available in the arena-fixes branch (make sure to enable --features=development if you run it from a Git repo).
Clojure: Managing throughput with virtual threads
A blog mostly about Clojure programming
Decompiling Hyper-V Manager to rebuild it from source
This post guides through decompiling Hyper-V Manager to rebuild it from source, aiming to assess its value for potential open-sourcing. It explores manual and automated decompilation processes, including troubleshooting and enhancing the tool, advocating for community-led improvements to this widely-used but neglected…
X.org on NetBSD – The State of Things
A few years ago, I wrote a "state of things" blog post about Wayland on NetBSD . It's only natural that I should do one about X11, which is used by far more people to get a graphical environment on NetBSD.
Decoding UTF8 with parallel extract
As a side-quest I recently decided to write a branchless utf8 decoder utilizing the pext or "parallel extract" instruction. It's compliant with rfc-3629 , meaning that it doesn't just naively decode the code-point but also checks for overlong encoding, surrogate pairs and such. Compiled with gcc -O3 -march=x86-64-v3…
A 100x speedup with unsafe Python
We're going to speed up some numpy code by 100x using "unsafe Python." Which is not quite the same as unsafe Rust, but it's a bit similar, and I'm not sure what else to call it... you'll see. It's not something you'd use in most Python code, but it's handy on occasion, and I think it shows "the nature of Python” from…
Swift's native Clocks are inefficient
In absolute terms they don’t have much overhead – think sub-microsecond for most uses. Which makes them perfectly acceptable when they’re used sporadically (e.g. only a few times per second).
SEQUOIA: Exact Llama2-70B on an RTX4090 with half-second per-token latency
Serving Llama2-70B on an RTX4090 with Sequoia
The File Filesystem (2021)
mount semi-structured data (like JSON) as a Unix filesystem
A few facts about POSIX
MEGA888 merupakan link alternatif slot gacor tutorial terbaru cara bermain game slot88 server indonesia penuh kesempatan menang maksimal teori konspirasi nyata pasti maxwin.
Talking to memory: Inside the Intel 8088 processor's bus interface state machine
In 1979, Intel introduced the 8088 microprocessor, a variant of the 16-bit 8086 processor. IBM's decision to use the 8088 processor in the I...
Zed Decoded: Rope and SumTree
From the Zed Blog: In this episode of Zed Decoded, Thorsten asks the founders — Nathan, Max, Antonio — about the data structures at the heart of Zed: Rope and SumTree.
Let's Embed a Go Program into the Linux Kernel (2023)
Today, we would like to present a lesser-known feature of the Linux kernel. Instead of launching a program from a file system, regardless of whether it's virtual or not, it is also possible to embed a user-space program directly into the kernel image itself and start it from there.
The server chose violence
Hubris's oddest syscall