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‑03‑05:
wgsl-rs: Rust as a shader language.
-
2026‑03‑04:
The one science reform we can all agree on, but we're too cowardly to do.
-
2026‑03‑04:
Faster C software with dynamic CPU feature detection and IFUNC.
-
2026‑03‑04:
Never snooze a future in async Rust.
-
2026‑03‑04:
“Personal Data”: more than a definition, a quasi-constitutional stake in EU law in the era of the Digital Omnibus.
-
2026‑03‑04:
Linux signalfd is useless.
-
2026‑03‑04:
pg_jitter: lighter-weight multi-backend JIT for PostgreSQL.
-
2026‑03‑04:
RTL.WTF: read the web like Right-to-Left readers do.
-
2026‑03‑03:
Lilaq: advanced data visualization in Typst.
-
2026‑03‑03:
Simple screw and nut dispensers.
-
2026‑03‑03:
Arm's Cortex X925: reaching desktop performance.
-
2026‑03‑03:
British Rail settlement plan barcode specs.
-
2026‑03‑03:
Debugging reproducible build issues in Rust.
-
2026‑03‑02:
What 127.5 million forms can tell you about the state of front-end regex input validation on the Web.
-
2026‑03‑02:
The real cost of random I/O in PostgreSQL.
-
2026‑02‑28:
UKI: unified kernel images for booting Linux from UEFI.
-
2026‑02‑28:
Io: possibly the simplest practical programming notation. (1989)
-
2026‑02‑27:
Surface-stable fractal dithering.
-
2026‑02‑27:
Ordered dithering with arbitrary or irregular colour palettes.
-
2026‑02‑27:
maiao: Gerrit-style stacked PR management for GitHub from the command line.
-
2026‑02‑26:
snakes.run: rendering 100M pixels a second over ssh.
-
2026‑02‑26:
Making wasm a first-class language on the web.
-
2026‑02‑26:
How a side project got banned from the internet: Google safe browsing hates 302 redirects.
-
2026‑02‑26:
soft-serve: a self-hostable git ssh server for the command line.
-
2026‑02‑25:
Takata airbag scandal: the most expensive design flaw in history.
-
2026‑02‑25:
Turing completeness of GNU find: from mkdir-assisted loops to standalone computation.
-
2026‑02‑25:
yabai: A tiling window manager for macOS based on binary space partitioning.
-
2026‑02‑25:
pdfpc: A presenter console with multi-monitor support for PDF files.
-
2026‑02‑25:
PCB rework and repair guide.
-
2026‑02‑24:
Reduced the size of Golang binaries by up to 77%.
-
2026‑02‑23:
The mushroom making people hallucinate dozens of tiny humans.
-
2026‑02‑23:
Cursed engineering: jumping randomly through CSV files without hurting yourself.
-
2026‑02‑23:
HTTP headers that tell syndication feed fetchers how soon to come back.
-
2026‑02‑23:
Using the new bridges of FreeBSD 15.
-
2026‑02‑23:
Using nsnotifyd with a PowerDNS secondary.
-
2026‑02‑23:
FLOE (Fast Lightweight Online Encryption): random-access authenticated encryption with key commitment.
-
2026‑02‑23:
Matt Gray hacked car charging to work with his e-bike. (YouTube)
-
2026‑02‑22:
A history of the four-colour theorem, 1852–1976, for its 50th anniversary.
-
2026‑02‑22:
HTTP/3 on FreeBSD: Getting QUIC Working with nginx in a Bastille Jail.
-
2026‑02‑21:
DUMPLING: fine-grained differential JavaScript engine fuzzing.
-
2026‑02‑21:
Control shopping trolley wheel locks with your Phone!
-
2026‑02‑21:
IPv6 address assignment.
-
2026‑02‑20:
Compendium: an strace-like x86 Linux syscall tracer in Rust.
-
2026‑02‑20:
Banish: a declarative DSL embedded in Rust, for defining rule-based state machines.
-
2026‑02‑20:
Read the undocumented mems accelerometer on Apple Silicon MacBooks via IOkit HID.
-
2026‑02‑19:
The perils of ISBN.
-
2026‑02‑19:
Linux CVE assignment process.
-
2026‑02‑19:
An update on upki: TLS certificate revocation checking with CRLite in Rust.
-
2026‑02‑19:
CHERIoT Rust status update #0.
-
2026‑02‑17:
Oral history of Robert P. Colwell, Intel Pentium / IA32 lead architect.
-
2026‑02‑17:
How a single character typo led to RCE in Firefox.
-
2026‑02‑17:
Fast sorting networks, branchless by design.
-
2026‑02‑16:
ACME, a brief history of a protocol which has changed Internet security.
-
2026‑02‑15:
Towards fearless macros.
-
2026‑02‑15:
Rendering the visible spectrum.
-
2026‑02‑14:
Floppy Disks: the best TV remote for kids.
-
2026‑02‑14:
Writing C with indent-based syntax similar to CoffeeScript or Python, via Guile.
-
2026‑02‑13:
Evolving Git for the next decade.
-
2026‑02‑13:
The many flavours of ignore files.
-
2026‑02‑13:
The missing call-assign operator.
-
2026‑02‑12:
A history of copper mining and refinement.
-
2026‑02‑12:
A brief history of barbed wire fence telephone networks.
-
2026‑02‑12:
How David Kindersley’s serifs lost the road war but won the streets.
-
2026‑02‑12:
That British mid-century signage font is called “Festive”.
-
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.