Concurrent, atomic MSI hash tables
Readers will be familiar with Mask-Step-Index (MSI) hash tables, a technique for building fast, open-addressed hash tables in a dozen lines of code. If multiple threads or processes access an MSI tabl
Programmer writing about C, Emacs, cryptography, and software development practices.
https://nullprogram.comReaders will be familiar with Mask-Step-Index (MSI) hash tables, a technique for building fast, open-addressed hash tables in a dozen lines of code. If multiple threads or processes access an MSI tabl
This past Tuesday I typed C-x C-c in Emacs for the last time after 20 years of daily use. Though nearly half that time was gradually retiring it, switching to modal editing, then to Vim. Emacs is a pl
The new w64devkit release two weeks ago is the first to be code-signed with my identity, verified by Microsoft’s certificate chain. Currently only the release packaging is signed — the self-extracting
CMake has a --debugger mode since 3.27 (July 2023), allowing software to manipulate it interactively through the Debugger Adaptor Protocol (DAP), an HTTP-like protocol passing JSON messages. Debugger
In February I left my employer after nearly two decades of service. In the moment I was optimistic, yet unsure I made the right choice. Dust settled, I’m now absolutely sure I chose correctly. I’m hap
Wine processes can make Linux syscalls, enabling a single .exe to act as native Windows tool or Linux cross-toolchain tool depending on context.
WebAssembly enables extending Python with architecture-independent code, allowing developers to use their preferred languages and tools without native compilation.
Linked lists can be enhanced with new capabilities without disrupting the original structure, as demonstrated through building a key/value environment variable collection.
Author developed a bytecode compiler for Unix find expressions, which surprisingly performs better than the tree-walk interpreters used in real implementations.
JIT-compiled closures add a context parameter to Win32 window procedures, enabling cleaner callback handling with extra data.