← Back to all articles

Chris Wellons (null program)

Programmer writing about C, Emacs, cryptography, and software development practices.

https://nullprogram.com

Articles

tugz: a new deflate library with three applications

I spent a week creating a new deflate implementation from scratch in C named tugz to provide an Info-ZIP-compatible zip program for w64devkit 2.10.1 (released today). I also replaced busybox-w32’s def

What's been going on in w64devkit the past year

The past year has been exciting for w64devkit, which like any software distribution is never complete. Peter0x44 joined as co-maintainer, and has pushed the project in good, new directions, with ideas

A custom virtual machine for the Stars! 4X game

Stars! is a 1995 4X game (explore, expand, exploit, exterminate) for 16-bit Windows 3.1 that I first played ~28 years ago. While Windows is famously backwards compatible, it’s notoriously difficult to

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

I have officially retired from Emacs

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

My brave new code-signing world

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

dcmake: a new CMake debugger UI

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

WebAssembly as a Python extension platform

WebAssembly enables extending Python with architecture-independent code, allowing developers to use their preferred languages and tools without native compilation.

Freestyle linked lists tricks

Linked lists can be enhanced with new capabilities without disrupting the original structure, as demonstrated through building a key/value environment variable collection.