Tony Finch – link log
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 latest
-
2026‑02‑12:
How David Kindersley’s serifs lost the road war but won the streets.
-
2026‑02‑12:
Technical issues of separation in function cells and value cells: Lisp-1 vs Lisp-2.
-
2026‑02‑11:
Majutsu! An Emacs interface for Jujutsu / jj, like Magit.
-
2026‑02‑11:
cysqlite: a new SQLite driver for Python.
-
2026‑02‑10:
Hylo: a systems programming language all in on value semantics and generic programming.
-
2026‑02‑09:
All the views: the longest lines of sight on Earth.
-
2026‑02‑09:
Modern CI is too complex and misdirected.
-
2026‑02‑09:
Against fancy ligatures in programming fonts.
-
2026‑02‑09:
JSONata: a JSON query and transformation language.
-
2026‑02‑08:
AEQuery: Apple Events command line query tool without AppleScript.
-
2026‑02‑08:
pred_recdec: Predicated LL / recursive descent parser / grammar interpreter in Rust.
-
2026‑02‑07:
Arcan-A12: Weaving a different web.
-
2026‑02‑07:
Arcan Explained: A browser for different webs.
-
2026‑02‑07:
emacs-tramp-rpc: high-performance TRAMP backend using MsgPack-RPC.
-
2026‑02‑07:
System time, clocks, and their syncing in macOS.
-
2026‑02‑06:
Magnetic fields can change carbon diffusion in steel.
-
2026‑02‑04:
Mobile carriers can get your GPS location.
-
2026‑02‑03:
Taming a flat AST: ergonomics without allocations.
-
2026‑02‑03:
Writing an async runtime in Rust.
-
2026‑02‑03:
A landmark ruling that sets a new standard for algorithmic transparency in Spain.
-
2026‑02‑02:
A (nearly) perfect USB cable tester.
-
2026‑02‑02:
Removing macOS 26 Tahoe’s unwanted menu icons.
-
2026‑02‑02:
A fast zero-allocation webserver using OxCaml.
-
2026‑02‑01:
macmon: sudoless performance monitoring for Apple processors. CPU / GPU / RAM usage, power consumption and temperature.
-
2026‑02‑01:
Reliable 25 gigabit ethernet via Thunderbolt.
-
2026‑01‑31:
Don Bickler: the engineer who invented the Mars rover suspension in his garage.
-
2026‑01‑31:
Eagle Mode: a zoomable user interface.
-
2026‑01‑31:
Ode to the AA battery.
-
2026‑01‑30:
Stabilizing `if let` in match guards in Rust.
-
2026‑01‑30:
Disrupting the IPIDEA residential proxy network.
-
2026‑01‑30:
stressapptest / Stressful Application Test: a userspace memory and IO test.
-
2026‑01‑29:
Usable colours for command line utilities.
-
2026‑01‑28:
Parametric CAD in Rust.
-
2026‑01‑27:
How we made Python's packaging library 3x faster.
-
2026‑01‑27:
Units of measure in the KCL CAD language.
-
2026‑01‑27:
The C-shaped hole in package management.
-
2026‑01‑27:
For the love of troff.
-
2026‑01‑26:
Gonemaster: a Golang clone of the Zonemaster DNS checker.
-
2026‑01‑26:
Implementing the transcendental functions in Ivy.
-
2026‑01‑25:
Bitwise conversion of doubles using only floating-point multiplication and addition.
-
2026‑01‑25:
What the world can learn from Paris’s cycling revolution.
-
2026‑01‑24:
Doing gigabit ethernet over my British phone extension wires.
-
2026‑01‑23:
pywidevine: Python implementation of Google's Widevine DRM CDM (Content Decryption Module).
-
2026‑01‑23:
OpenWV: Open reimplementation of Google's Widevine Content Decryption Module for browsers.
-
2026‑01‑23:
Microsoft Outlook autodiscover mishandling example.com.
-
2026‑01‑23:
Remotely unlocking an encrypted hard disk.
-
2026‑01‑23:
Selectively disabling HTTP/1.0 and HTTP/1.1
-
2026‑01‑23:
Maintaining shadow branches for GitHub PRs.
-
2026‑01‑22:
SSH has no Host header: virtual hosting based on user public keys.
-
2026‑01‑22:
Giving university exams in the age of chatbots.
-
2026‑01‑20:
“Ptolemaic Code”: software that appears functional but is based on a fundamentally incorrect model.
-
2026‑01‑20:
Building your own efficient uint128 in C++.
-
2026‑01‑20:
Engineering and operations at the Internet Archive.
-
2026‑01‑20:
Floating-point printing and parsing can be simple and fast.
-
2026‑01‑19:
AVX-512: first impressions on performance and programmability.
-
2026‑01‑19:
Are arrays functions?
-
2026‑01‑16:
diesel-guard: check for expensive PostgreSQL migrations in Rust.
-
2026‑01‑16:
READ_ONCE(), WRITE_ONCE(), but not for Rust in the Linux kernel.
-
2026‑01‑16:
The state of Rust cryptography in 2026.
-
2026‑01‑16:
How London finally cracked mobile phone coverage on the Underground.
-
2026‑01‑16:
Reverse engineering a cloud-connected e-scooter and finding the master key to unlock all scooters.
-
2026‑01‑15:
The discoveries of continuations.
-
2026‑01‑15:
What does it take to ship Rust in safety-critical systems?
-
2026‑01‑15:
Gripes with Prolog.
-
2026‑01‑15:
The State of OpenSSL for pyca/cryptography.
-
2026‑01‑13:
The 9 incompatible versions of RSS. (2004)
-
2026‑01‑13:
Stoat: an open-source, user-first chat platform.
-
2026‑01‑12:
The J incunabulum.
-
2026‑01‑12:
A sign-off review checklist for PCB designs.
-
2026‑01‑11:
The Julian Period and Modified Julian Dates.
-
2026‑01‑11:
A unique performance optimization for a 3D geometry language.
-
2026‑01‑10:
Finding and fixing Ghostty's largest memory leak.
-
2026‑01‑10:
Pulling a new proof from Knuth’s fixed-point printer, with code in Ivy.
-
2026‑01‑10:
Testing ECC NMI in a cubesat boot loader: intentional flash corruption for STM32 microcontrollers.
-
2026‑01‑10:
How Markdown took over the world.
-
2026‑01‑09:
An adequate left-associated binary numeral system in the lambda calculus.
-
2026‑01‑08:
How to write like a person.
-
2026‑01‑08:
Lessons from merging hash tables.
-
2026‑01‑08:
Clang hardening cheat sheet, ten years later.
-
2026‑01‑08:
How did TVs get so cheap?
-
2026‑01‑08:
BLAKE2s hashing accelerator: a solo tapeout journey.
-
2026‑01‑07:
Why the trans flag emoji uses a sequence of 5 unicode codepoints.
-
2026‑01‑06:
Internet anagram server.
-
2026‑01‑06:
Several anti-phonetic alphabets.
-
2026‑01‑06:
I/O is no longer the bottleneck? (compared to AVX2 vectorized wc)
-
2026‑01‑06:
Marcin Wichary’s favourite tech museums.
-
2026‑01‑05:
Who owns the memory? Who calls free?
-
2026‑01‑05:
Who owns the memory? How big is your type?
-
2026‑01‑05:
Who owns the wemory? What is an Object?
-
2026‑01‑05:
Raspberry Pi Reliability: how to reduce writes to your SD card.
-
2026‑01‑05:
Using eBPF to load-balance traffic across UDP sockets with Golang.
-
2026‑01‑05:
Stop forwarding errors in Rust, start designing them.
-
2026‑01‑04:
What is a PC compatible?
-
2026‑01‑04:
Four ways to improve a perfect SQL join algorithm.
-
2026‑01‑04:
What we’re talking about, when we talk about data destruction.
-
2026‑01‑04:
USB-C to 3.5mm headphone audio dongles, a new (but also old) problem.
-
2026‑01‑04:
The late arrival of 16-bit CP/M.
-
2026‑01‑04:
Hash functions for GPU rendering.
-
2026‑01‑04:
Quick and easy GPU random numbers.
-
2026‑01‑04:
3D printed origami.
-
2026‑01‑03:
Partial evaluation and automatic program generation. (book, 1993)
-
2026‑01‑02:
A survey of dynamic array structures.
-
2026‑01‑02:
wpex: WireGuard packet relay for NAT traversal.
-
2026‑01‑02:
OpenAlex: The open catalog to the global research system.
-
2026‑01‑01:
Sorting with fibonacci numbers, and a Knuth reward check.
-
2026‑01‑01:
Eliminate branches by melding IR instructions.