Graviton 3, Apple M2 and Qualcomm 8cx 3rd gen: a URL parsing benchmark
Whenever you enter a URL into a system, it must be parsed and validated. It is a surprisingly challenging task: it may require hundreds of nanoseconds and possibly over a thousand cycles to parse a typical URL. We can use URL parsing as a reasonable benchmark of a system performance. Of course, no single measure ……
QOA, the Quite OK Audio Format
Audio formats typically fall into one of three categories: “lossless” , “complicated” or “bad” . After developing a simple image format last year, I tried to come up with an audio format that fits neither of these categories.
The shell and its crappy handling of whitespace
From the highly eclectic blog of Mark Dominus
Boot to Vim, Vim as Pid 1 (2014)
Published: 18-09-2014 | Author: Remy van Elst | Text only version of this article
Curl 8 Is Faster
First: performance is tricky and bechmarking even more so. I will talk some numbers in this post but of course they are what I have measured for my specific tests on my machine. Your numbers for your test cases will be different. Over the last six months or so, curl has undergone a number of … Continue reading curl 8…
The Basics of Arm64 Assembly
Just one instruction at a time!
Linux is Making Apple Great Again
My personal website and blog
It's TCP vs. RPC All over Again
We’ve written previously about the fact that the Internet seems to be missing a standard protocol for the request/response paradigm, with repeated attempts to force-fit TCP leading to inevitable mismatches. Sometimes we feel that we are the only people who think this way, with our networking
Why you might want async in your project
There is a common sentiment I’ve seen over and over in the Rust community that I think is ignorant at best and harmful at worst.
Gallery of Processor Cache Effects
Most of my readers will understand that cache is a fast but small type of memory that stores recently accessed memory locations. This description is
A dive into the AMD driver workflow
I ended up getting a response from high level people at AMD. It was still very light on any real technical information, but it did include some great phrases like “I am able to replicate the issues you are facing” and some mockable phrases like “We are hoping that this will improve your perception of AMD products and…
Fun with Kermit and ZMODEM over SSH
Fun with Kermit and ZMODEM file transfers over SSH using Qodem
I built a special PCIe card to test GPUs on the Pi
I partnered up with Mirek (of Mirkotronics / @Mirko_DIY on Twitter) to build the Pi4GPU (or 'PiG' for short): This journey started almost three years ago: almost immediately after the Raspberry Pi Compute Module 4 was launched, I started testing graphics cards on it. First I tried some low-spec cards like the Zotac…
S32 Unix Clock
I've been thinking I should do more "short form" blogging. Something between microblogging and regular blogging. This is me doing that!
Parsing the .DS_Store File Format (2018)
About two years ago I came across a .DS_Store file and wanted to extract its information (e.g. file names). After researching the file format and its security implications, as well as writing a parser for it, I would like to share my (limited) knowledge and the parser in Go / Python with the world. You might want to…
How does Linux handle writes?
I examine the somewhat surprising way how Linux handles writes.
Unix Domain Sockets vs Loopback TCP Sockets (2014)
Two communicating processes on a single machine have a few options. They can use regular TCP sockets, UDP sockets, unix domain sockets, or shared memory. A recent project I was working on used Node…
Embrace Complexity; Tighten Your Feedback Loops
Talk transcript on various patterns that slowly influence how teams deal with reliability, and highlight some of the key interactions and behaviors I keep finding work well in the organizations I've been part of.
I didn’t learn Unix by reading all the manpages (2022)
Originally drafted as a thread on hackers.town , after Abbie Normal asked me to expand on a side comment in a discussion of documentation .
How Microsoft attempted to make the Xbox 360 dashboard load faster
The October 2012 Xbox 360 dashboard update moved the dashboard from the nand flash to the hard-drive. Does it make a difference?
The Architecture of Serverless Data Systems
I recently blogged about why I believe the future of cloud data services is large-scale and multi-tenant, citing, among others, S3. “ Top tier SaaS services like S3 are able to deliver amazing simplicity, reliability, durability, scalability, and low price because their technologies are s
Run a macOS VM on Apple Silicon from a double-click with Vimy
Making it quicker and simpler to run a macOS VM: with Vimy all you need do is double-click its bundle, and the VM runs using its previous settings.
How to make smaller C and C++ binaries
This blog post presents several techniques to make the binaries resulting from C or C++ compilation smaller with GCC (or Clang). Please note...
i386 in Ubuntu won't die
(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…
Fedora 38 LLVM vs. Team Fortress 2
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? ...
Emulating win32
How retrowin32 works, at a high level.