Atomics and Concurrency
This is going to be a long post, but I hope you get value out of it. This wasn’t an easy topic to tackle but it was definitely worthwhile!
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 4,389 posts.
This is going to be a long post, but I hope you get value out of it. This wasn’t an easy topic to tackle but it was definitely worthwhile!
LDM—or load multiple —is my favorite assembly instruction of the ARM instruction set. Here’s why.
(yet) tl;dr In a recent thread on Mastodon, it was revealed that Ubuntu 23.04 users can’t install the Steam deb package from the Ubuntu archive without jumping through some technical hoops. It turns out this was a mistake, a bug was filed, and future builds shouldn’t have this problem. It’s not immediately apparent…
F38 just released and seeing a bunch of people complain that TF2 dies on AMD or other platforms when lavapipe is installed. Who's at fault? ...
React is very popular at the moment, and I can see why: its developer ergonomics are very attractive. JSX and vDOM are really nice to work with, and it certainly enables composability. But, being the performance-minded person that I am, I wanted to test the claims that it's default-fast.
I’ve been getting solidly flamed recently, as have my former coworkers at Digg, my friends at Twitter, etc. about our adoption and promotion of various NoSQL storage systems. It seems that some DBAs are very, very upset that us internet kids are considering abandoning SQL’s ship. I’m not here to throw out a bunch of…
Unix Wars
Instructions for compiling and running MIT/GNU Scheme.
A tour on how DOS was able to use most of the 1 MB address space of the 8086
How retrowin32 works, at a high level.
The size of binaries in the Nim programming language seems to be a popular topic recently . Nim’s slogan is expressive, efficient, elegant , so let’s examine the efficient part in this post by exploring a few ways to reduce the size of a simple Nim Hello World binary on Linux. Along the way we will:
Ars Technica mentioned that in macOS Tahoe the venerable old hard disk icons will be replaced with new, more generic, relatively less inte...
Edit(2013/1/29): http-kit is a event driven HTTP server & client for Clojure. It’s open source, https://github.com/http-kit
Our web app allows users can change the length of a song or find loops present in it for infinite listening, remixing, or for their next next video edit or performance. After uploading a song, there is an initial server-side analysis step after which...
fresh OI install, clean slate, let's see how well the updated OI Sun Ray support works
In this article I want to explore what happens when a statically linked program gets executed on Linux. By statically linked I mean a program that does not require any shared objects to run, even the ubiquitous libc . In reality, most programs one encounters on Linux aren't statically linked, and do require one or…
Terminals 1 are quite weird. Most modern users assume that they can just have straightfoward keybindings. Right? To bind Ctrl+i to something, they listen for Ctrl+i in their application. If they want to bind Ctrl+Shift+i to something different, they certainly can, they just listen for Ctrl+Shift+i as well. Naturally…
Building a high performance supercomputer for under £100 (£550 including twelve Fire3s). Parts list, benchmarks and downloadable plans for laser-cutting the acrylic case.
I like the Power ISA very much, but there's nothing architecturally obvious to say that the next natural step from the Motorola 68000 family...
New year, new RISC-V Yocto blog post \o/ When I wrote my last post, I did really not expect my brand new VisionFive-2 board to find its way to me so soon… But well, a week ago it was suddenly…
The groundbreaking Intel 386 processor (1985) was the first 32-bit processor in the x86 line. It has numerous internal registers: general-pu...
FreeBSD had a security fluctuation in their implementation of ping(8) the other day. As someone who has done a lot of work on ping(8) in OpenBSD this tickled my interests.
Day 45: I now have Rust code for executing executables!
2024 Update: Part 2 is out! Let’s make a gzipped file and see what’s in it. We’ll keep it simple: just write 8 ‘a’s to a file. $ echo "aaaaaaaa" > test.out $ xxd test.out 00000000: 6161 6161 6161 6161 0a aaaaaaaa. As we can see, our file is 9 bytes long. We have 8 ‘a’ bytes written, plus a Line Feed (LF) character…
The roadmap for latency profiling in Go