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
- 2021‑12‑31:
Some sanity for C and C++ development on Windows.
- 2021‑12‑28:
Why Pascal is Not My Favorite Programming Language. (troff source)
- 2021‑12‑28:
Software Tools in C++.
- 2021‑12‑27:
What if the Flu isn’t “just the Flu?”
- 2021‑12‑26:
State of Valhalla, part 1: value types for the JVM.
- 2021‑12‑23:
fq: jq for binary formats.
- 2021‑12‑23:
Spotting fake face masks. (FFP2/N95/KN95)
- 2021‑12‑18:
age-plugin-yubikey: YubiKey plugin for age encryption.
- 2021‑12‑18:
untwister: a PRNG seed recovery tool.
- 2021‑12‑18:
PostgreSQL is a great pub/sub and job server.
- 2021‑12‑17:
A brutally effective hash function in Rust.
- 2021‑12‑17:
How not to learn Rust.
- 2021‑12‑16:
gRPC best practices.
- 2021‑12‑16:
Cranelift progress report: a look back at 2021.
- 2021‑12‑15:
The Muppet Christmas Carol is the best adaptation of A Christmas Carol.
- 2021‑12‑15:
IPv4 address markets.
- 2021‑12‑11:
Rapidly rendering fractals on stupidly unsuitable machines.
- 2021‑12‑05:
Tips on adding JSON output to your command line utility.
- 2021‑12‑05:
Async cancellation in Rust.
- 2021‑12‑05:
Securing updates for GNU Guix.
- 2021‑12‑05:
Rclone syncs your files to cloud storage.
- 2021‑12‑05:
restic: backups done right!
- 2021‑12‑03:
Don't make my mistakes: common infrastructure errors i've made.
- 2021‑12‑02:
Why movie dialogue has become more difficult to understand.
- 2021‑12‑02:
Ideal monitor rotation for programmers .
- 2021‑12‑02:
Tvix: we are rewriting Nix.
- 2021‑12‑01:
libtree: ldd as a tree saying why a library is found or not.
- 2021‑12‑01:
This shouldn't have happened: A vulnerability postmortem.
- 2021‑12‑01:
An illustrated guide to elliptic curve cryptography validation.
- 2021‑11‑29:
Improving over-constrained Rust APIs.
- 2021‑11‑29:
Stack safety for free?
- 2021‑11‑29:
What SRE is not.
- 2021‑11‑28:
Amethyst: an automatic tiling window manager for macOS.
- 2021‑11‑28:
kmonad: an advanced keyboard manager.
- 2021‑11‑26:
The return of JavaScript for Mac OS automation, instead of AppleScript.
- 2021‑11‑24:
IDEs and macros and Rust.
- 2021‑11‑21:
DwarFS: A fast high compression read-only file system.
- 2021‑11‑21:
elfshaker stores binary objects efficiently; designed for manyclangs.
- 2021‑11‑21:
Dell XPS13 RAM upgrade.
- 2021‑11‑18:
Support for IPv6 link local addresses in browsers.
- 2021‑11‑18:
Getting started with Rust on a Raspberry Pi Pico.
- 2021‑11‑18:
Understanding HKDF.
- 2021‑11‑18:
Vulnerabilities show why STARTTLS should be avoided if possible.
- 2021‑11‑18:
Mononym: type-level named values in Rust.
- 2021‑11‑14:
Debugging memory corruption on Windows: who the hell writes “2” into my stack?!
- 2021‑11‑14:
Tests aren’t enough: adding type hints to Python urllib3.
- 2021‑11‑13:
The weirdest QNX bug I've ever encountered.
- 2021‑11‑13:
It's now possible to sign arbitrary data with your SSH keys.
- 2021‑11‑12:
Overview of the Rust compiler.
- 2021‑11‑11:
Benchmarking symmetric encryption (AEAD) in Rust.
- 2021‑11‑11:
Speed of Rust vs C.
- 2021‑11‑04:
An oral history of Bank Python.
- 2021‑11‑01:
C++ coroutines do not spark joy.
- 2021‑10‑26:
Comparing open source BGP stacks.
- 2021‑10‑26:
austral: a systems language with linear types.
- 2021‑10‑26:
bitbottle: an archive file format (in Rust).
- 2021‑10‑25:
blamer.el: A git blame plugin for emacs inspired by VS Code's GitLens plugin.
- 2021‑10‑24:
Measuring C++ std::unordered_map badness.
- 2021‑10‑23:
Raspberry Pi 3 fastboot in less than 2 seconds.
- 2021‑10‑23:
Can we trust Microsoft with Open Source?
- 2021‑10‑23:
A cool Rust optimization story.
- 2021‑10‑23:
Coding for non-programmers: we need better web GUI automation tools.
- 2021‑10‑22:
A floating point parser bug in MySQL left AWS WAF clients vulnerable to SQL injection.
- 2021‑10‑21:
Stupid tricks with io_uring: a server that does zero syscalls per request.
- 2021‑10‑21:
Context-preserving error handling in Rust.
- 2021‑10‑21:
Function pipelines: Building functional programming into PostgreSQL using custom operators.
- 2021‑10‑21:
Did the Big Bang begin from a singularity? Not anymore.
- 2021‑10‑21:
Making slow Rust code fast.
- 2021‑10‑21:
Social media doesn't turn people into assholes, and everyone's wrong about echo chambers.
- 2021‑10‑21:
PostgreSQL text search: balancing query time and relevancy.
- 2021‑10‑20:
I couldn’t debug the code because of my name: unicode pathname bugs in JetBrains IDEs.
- 2021‑10‑18:
Serialization-based undo with zstd compression.
- 2021‑10‑18:
What every software engineer should know about search.
- 2021‑10‑18:
The undocumented Microsoft "Rich" PECOFF header.
- 2021‑10‑16:
Pink Floyd’s Young Lust telephone signalling explained.
- 2021‑10‑13:
Kathleen Stock, TERF.
- 2021‑10‑13:
A plug-compatible 100 MHz FPGA 6502.
- 2021‑10‑13:
The problem with function namespaces and Lisp macros.
- 2021‑10‑11:
MMP at 25: how proportional representation changed New Zealand forever.
- 2021‑10‑11:
Better operator precedence.
- 2021‑10‑11:
Benchmarking oksh (OpenBSD Korn shell) with lots of C compilers.
- 2021‑10‑09:
Finding bugs in database systems via query partitioning.
- 2021‑10‑06:
How ISO C became unusable for operating system development.
- 2021‑10‑05:
Is this the simplest (and most surprising) sorting algorithm ever?
- 2021‑10‑04:
CBMC: C bounded model checker.
- 2021‑10‑03:
OpenHaystack: tracking your Bluetooth devices with Apple's "Find My" network
- 2021‑10‑03:
R, OpenMP, MKL, disaster.
- 2021‑10‑02:
Clarifying the structure and nature of left-wing authoritarianism.
- 2021‑09‑30:
squawk: a linter for PostgreSQL, focused on migrations.
- 2021‑09‑30:
JSON in PostgreSQL: how to use it right.
- 2021‑09‑30:
Lessons learned building an Oracle to PostgreSQL migrator.
- 2021‑09‑30:
Second software release for CHERI-RISC-V and Arm Morello capability architectures.
- 2021‑09‑30:
Rust for the polyglot programmer.
- 2021‑09‑30:
The Biggest Churches in the World: Anglo-Norman eleventh-century cathedrals.
- 2021‑09‑27:
Dealing with the Roman Calendar.
- 2021‑09‑26:
A history of library hand.
- 2021‑09‑22:
Enumerating and analyzing 40+ non-V8 JavaScript implementations.
- 2021‑09‑21:
Full-stack sum types with TypeScript, Rust, and PostgreSQL.
- 2021‑09‑21:
HIBA: Host Identity Based Authorization for SSH.
- 2021‑09‑21:
Index, a history of the.
- 2021‑09‑21:
Google Docs in a clean-room browser.
- 2021‑09‑21:
There was no formal methods winter.
- 2021‑09‑21:
A giant space rock demolished an ancient Middle Eastern city and everyone in it, possibly inspiring the Biblical story of Sodom.
- 2021‑09‑19:
How does Ouroboros relate to RINA, the Recursive InterNetwork Architecture?
- 2021‑09‑19:
Can you see the Republic of Ireland from England?
- 2021‑09‑18:
The Negro Subversive on Critical Race Theory.
- 2021‑09‑17:
Hacking CloudKit: How I accidentally deleted your Apple Shortcuts.
- 2021‑09‑17:
TRIPOS historical sources.
- 2021‑09‑16:
Exploring 120 years of timezones.
- 2021‑09‑16:
Go to sleep little iPhone: lost broadcasts on WiFi.
- 2021‑09‑15:
DART: the Disability Attitude Re-adjustment Tool.
- 2021‑09‑15:
Freedom of Information as a tool for making cycle routes more accessible.
- 2021‑09‑15:
Taking legal action on inaccessible cycleway barriers.
- 2021‑09‑15:
Single-pass online statistics algorithms.
- 2021‑09‑14:
An existential crisis resolved: type inference for first-class existential types.
- 2021‑09‑14:
logos: create ridiculously fast lexers in Rust.
- 2021‑09‑14:
HTTP Cache-Control recommendations.
- 2021‑09‑14:
Type-checked keypaths in Rust.
- 2021‑09‑14:
A tale of making a company-wide psqlrc to use with pgbouncer.
- 2021‑09‑14:
OLAP != OLAP Cube.
- 2021‑09‑14:
Ora2PG now supports oracle_fdw to increase data migration speed.
- 2021‑09‑14:
Emulating AMD approximate arithmetic instructions on Intel.
- 2021‑09‑12:
Okhsv and Okhsl: two new color spaces for color picking.
- 2021‑09‑09:
Server traffic shaping on Linux with CAKE.
- 2021‑09‑09:
Kill It With Fire: dealing with legacy systems. (book review)
- 2021‑09‑06:
Computational hierarchy of elementary cellular automata.
- 2021‑09‑05:
Fast Rust builds.
- 2021‑09‑05:
Why are a billion years of rock missing from the geological record?
- 2021‑09‑05:
Notes from a 1984 trip to Xerox PARC.
- 2021‑09‑04:
Linux tmpfs inode corruption: introducing inode64.
- 2021‑09‑04:
A nasty bit of implicit timezone behavior in Golang.
- 2021‑09‑03:
The scandalous history of the last rotor cipher machine.
- 2021‑09‑02:
Netflix audio description style guide.
- 2021‑09‑01:
Moiré no more: using FFT to remove halftone patterns.
- 2021‑09‑01:
Moiré no more: using FFT to remove halftone patterns.
- 2021‑09‑01:
In defense of blub studies.
- 2021‑08‑31:
APOLLO 68080: high performance 68k processor on FPGA.
- 2021‑08‑31:
The demise of the once mighty Cambridge and District Co-operative Society.
- 2021‑08‑30:
Most information about disinformation is misinformation.
- 2021‑08‑29:
Why is the S combinator an S?
- 2021‑08‑29:
Four months with Ada.
- 2021‑08‑28:
jsc: JavaScript on the macOS command line.
- 2021‑08‑26:
Inko: Friendship ended with the garbage collector.
- 2021‑08‑26:
Flexible microprocessor could enable an 'internet of everything'.
- 2021‑08‑26:
PragmatIC Semiconductor made a flexible 6502 in two weeks.
- 2021‑08‑25:
Hiding images in plain sight: an acrylic magic window that can project a picture.
- 2021‑08‑24:
Life before Unicode in Russia.
- 2021‑08‑23:
One does not simply calculate the absolute value.
- 2021‑08‑21:
Index 1,600,000,000 keys with finite state automata and Rust.
- 2021‑08‑21:
Tesla Dojo: a custom chip for very high capacity AI training.
- 2021‑08‑20:
Encoding of immediate values on AArch64.
- 2021‑08‑20:
Monks Wood Wilderness: 60 years ago, scientists let a farm field rewild; here's what happened.
- 2021‑08‑20:
Mutable statics in Rust have scary superpowers! Do not use them!
- 2021‑08‑20:
Patterns in confusing explanations.
- 2021‑08‑19:
The quest to recreate a lost and ‘terrifying’ medieval mead.
- 2021‑08‑19:
malloc() vs mmap(MAP_SHARED) in multithreaded programs.
- 2021‑08‑18:
Exploring Clang/LLVM optimization on a programming horror.
- 2021‑08‑17:
The Wendelstein 7-X fusion stellarator proves its efficiency.
- 2021‑08‑17:
Behind the scenes at South Kensington tube station’s escalator replacement project.
- 2021‑08‑17:
Speeding up `atan2f` by 50x.
- 2021‑08‑16:
Namespaced De Bruijn indices.
- 2021‑08‑15:
Classical data structures that can outperform learned indexes.
- 2021‑08‑14:
Emacs development charts, 10×10%.
- 2021‑08‑14:
Preprint déjà vu: a FAQ about the arXiv.
- 2021‑08‑14:
A probabilistic solution to the three-body problem.
- 2021‑08‑11:
Why is tech illustration stuck on repeat?
- 2021‑08‑11:
A little bit about PRNG stuff in Rust.
- 2021‑08‑09:
How BCPL evolved from CPL.
- 2021‑08‑09:
The rise of Meson.
- 2021‑08‑08:
Edward Luper’s 36 Views of the BT Tower.
- 2021‑08‑07:
A USB adapter for a Depraz mouse.
- 2021‑08‑07:
The tao of Unicode sparklines.
- 2021‑08‑06:
HTTP/2 desync attacks.
- 2021‑08‑03:
Unix for TOPS-20 users. (1987)
- 2021‑08‑03:
Choosing properties for property-based testing.
- 2021‑08‑03:
Making reasonable use of computer resources.
- 2021‑07‑31:
strcpy: a niche function you don't need.
- 2021‑07‑30:
B-tree path hints.
- 2021‑07‑30:
One tenth of a second.
- 2021‑07‑29:
Monkey Island PC speaker music player.
- 2021‑07‑29:
One lost methyl group = huge amounts of food production.
- 2021‑07‑28:
Cryptanalysis of Meow Hash.
- 2021‑07‑28:
The fall of the SKI civilization.
- 2021‑07‑27:
Why neoliberalism needs neofascists.
- 2021‑07‑21:
Keyboard rollover and lockout.
- 2021‑07‑18:
Do low-level optimizations matter?
- 2021‑07‑18:
Inserting one billion rows into SQLite in under a minute.
- 2021‑07‑16:
The development of Chez Scheme.
- 2021‑07‑13:
CMake: the dark arts.
- 2021‑07‑13:
Updating the Golang memory model.
- 2021‑07‑11:
Ribbon filter: Practically smaller than Bloom and Xor.
- 2021‑07‑11:
It’s not always iCache.
- 2021‑07‑11:
Inline in Rust.
- 2021‑07‑10:
Against SQL.
- 2021‑07‑09:
How Intel financialized and lost leadership in semiconductor fabrication.
- 2021‑07‑09:
A survey of approaches to securing BGP and inter-domain routing.
- 2021‑07‑09:
mull: Practical mutation testing for C and C++.
- 2021‑07‑08:
The state of Python packaging in 2021.
- 2021‑07‑08:
Compiling Rust is NP-hard: the pattern match exhaustiveness checker as a SAT solver.
- 2021‑07‑08:
Dumping and extracting the SpaceX Starlink user terminal firmware.
- 2021‑07‑07:
Programming language memory models.
- 2021‑07‑07:
Extensions are moving away from the macOS kernel.
- 2021‑07‑07:
Hacker News folk wisdom on visual programming.
- 2021‑07‑07:
rustviz: interactive visualization of ownership and borrowing.
- 2021‑07‑06:
How Black handles comments when Python's grammar ignores them.
- 2021‑07‑05:
GitHub Copilot is not infringing your copyright.
- 2021‑07‑05:
TCP Fast Open? Not so fast!
- 2021‑07‑04:
Electron tube new automatic computer: a homemade valve computer.
- 2021‑07‑04:
The dawn of formalized mathematics.
- 2021‑07‑04:
Ode to a world-saving idea: attribution error and cognitive empathy.
- 2021‑07‑03:
wasm2ps: compile a small subset of WebAssembly to PostScript. (using wasm2wat)
- 2021‑07‑03:
Phase-in codes.
- 2021‑07‑01:
Hardware memory models.
- 2021‑06‑30:
Where there’s a grille: the hidden portals to London’s underworld.
- 2021‑06‑29:
British flag protocol: flying the union jack.
- 2021‑06‑29:
Reinventing the automobile: the first skateboard platform for electric vehicles.
- 2021‑06‑29:
Temporal: getting started with JavaScript’s new date time API.
- 2021‑06‑28:
How to evaluate Emacs Lisp in regex search and replace.
- 2021‑06‑27:
systemd, 10 years later: a historical and technical retrospective.
- 2021‑06‑27:
Why did we ever think the first programming language didn't matter?
- 2021‑06‑26:
pydantic: data validation and settings management using Python type annotations.
- 2021‑06‑23:
Going beyond Ada 2022.
- 2021‑06‑22:
Async Rust: futures, tasks, wakers; oh my!
- 2021‑06‑22:
What is CapTP, and what does it enable?
- 2021‑06‑21:
Accidentally exponential behavior in Apache Spark.
- 2021‑06‑21:
git undo: We can do better.
- 2021‑06‑21:
Expanding TeX's \newif.
- 2021‑06‑20:
What do you call a Rust pointer we stole the high bits off? An ointer.
- 2021‑06‑19:
A tour of safe tracing GC designs in Rust.
- 2021‑06‑18:
Eliminating data races in Firefox with Thread Sanitizer.
- 2021‑06‑17:
Speeding up message parsing by 3x to 10x by switching from serde to nom in Rust.
- 2021‑06‑16:
Introducing cap-std, a capability-based version of the Rust standard library.
- 2021‑06‑15:
When graphs are a matter of life and death.
- 2021‑06‑15:
Celebrating 30 years of Europe’s first root name server.
- 2021‑06‑14:
Let’s port Doom to an IKEA TRÅDFRI lamp!
- 2021‑06‑13:
A few thoughts on Fuchsia security.
- 2021‑06‑13:
Using black magic to make a fast circular buffer.
- 2021‑06‑13:
How to handle secrets on the command line.
- 2021‑06‑12:
Do you really need Redis? PostgreSQL does queuing, locking, and pub/sub.
- 2021‑06‑11:
Can memcpy be implemented in LLVM IR?
- 2021‑06‑11:
How to make simple derive macros in Rust.
- 2021‑06‑11:
cap: an allocator that can track and limit memory usage in Rust.
- 2021‑06‑11:
schemars: generate JSON schema from Rust code.
- 2021‑06‑11:
Time and date syntax used by systemd.
- 2021‑06‑11:
Don’t feed the thought leaders.
- 2021‑06‑11:
Behavior inheritance in Rust.
- 2021‑06‑08:
Kerckhoffs’s law for security engineers.
- 2021‑06‑07:
Using a SmartCard HSM for DNSSEC with BIND, Knot DNS, and LDNS/NSD.
- 2021‑06‑06:
Ordnance Survey height benchmark locations.
- 2021‑06‑05:
From Julia to Rust.
- 2021‑06‑05:
Integer log10: make your lookup table do more.
- 2021‑06‑04:
Anatomy of a Linux DNS lookup.
- 2021‑06‑04:
Firefox Proton UI userChrome.css fixes.
- 2021‑06‑04:
Firefox 89 tab appearance fixes with userchrome.css.
- 2021‑06‑04:
Handling global associative arrays in PostgreSQL.
- 2021‑06‑03:
A new Protocol Buffers generator for Golang.
- 2021‑06‑03:
Design issues in LLVM IR.
- 2021‑06‑03:
How malloc broke Serenity's JPGLoader, or: how to win the lottery.
- 2021‑06‑02:
Leading through writing in software engineering.
- 2021‑06‑02:
Practical Reed-Solomon for programmers.
- 2021‑06‑01:
How to test your code.
- 2021‑05‑31:
PostGIS at 20: the beginning.
- 2021‑05‑29:
Joseph Weizenbaum's original ELIZA.
- 2021‑05‑28:
A year in the Nakagin tower’s metabolist future of 1972.
- 2021‑05‑27:
An introduction to Jorvik, Ada’s new tasking profile.
- 2021‑05‑27:
Of donkeys, mules, and horses: data structures for network prefixes in Rust.
- 2021‑05‑27:
Reciprocals in Rust: baseline implementations should be predictable.
- 2021‑05‑25:
Jerikan: a configuration management system for network teams.
- 2021‑05‑25:
RefinedC: automating the foundational verification of C code with refined ownership types.
- 2021‑05‑24:
Counterexamples in type systems.
- 2021‑05‑23:
rustc_codegen_gcc can now run libcore’s tests and pass most of them!
- 2021‑05‑23:
GhostCell: separating permissions from data in Rust.
- 2021‑05‑20:
Language compilation speed comparison.
- 2021‑05‑14:
Benchmarking division and libdivide on Apple M1 and Intel AVX512.
- 2021‑05‑12:
Getting random rows very much faster with tablesample in PostgreSQL.
- 2021‑05‑10:
Better performance for dynamic linking with -fno-semantic-interposition.
- 2021‑05‑08:
The byte order fiasco.
- 2021‑05‑06:
EverParse: Hardening critical attack surfaces with formally proven message parsers.
- 2021‑05‑05:
Linear Clock: Solar.
- 2021‑05‑04:
Fully automated bootstrapping from source.
- 2021‑05‑03:
Dissecting the Apple M1 GPU, part IV.
- 2021‑05‑02:
Hosting SQLite databases on Github Pages (or any static file hoster).
- 2021‑05‑02:
The honest troubleshooting code of conduct.
- 2021‑05‑02:
Handling time when programming.
- 2021‑05‑02:
Query engines: push vs. pull.
- 2021‑04‑29:
An interview with Linus Torvalds on Linux and Git.
- 2021‑04‑29:
The case of the curiously slow shader.
- 2021‑04‑28:
Internal consistency in streaming systems.
- 2021‑04‑26:
Plan 9 history in git, from 1992-09-21 to 2015-01-10.
- 2021‑04‑26:
Let’s build a new service manager for Alpine Linux!
- 2021‑04‑25:
Parsing protobuf at 2+GB/s: how I learned to love tail calls in C.
- 2021‑04‑24:
The mystery of AS8003 and legacy US DoD IPv4 address space.
- 2021‑04‑22:
Earth Restored: newly retouched photographs from the Apollo lunar missions.
- 2021‑04‑22:
Starlink's high-speed satellite Internet: What's the catch?
- 2021‑04‑21:
Exploiting vulnerabilities in Cellebrite UFED and Physical Analyzer from Signal's perspective.
- 2021‑04‑19:
Dissecting the Apple M1 GPU, part III.
- 2021‑04‑17:
Lars Wirzenius would like to review your README.
- 2021‑04‑16:
Actually, you are rolling your own crypto.
- 2021‑04‑15:
Rust shenanigans: return type polymorphism.
- 2021‑04‑15:
The design of tokio-uring: Linux io_uring support for Rust.
- 2021‑04‑14:
fuzzcheck-rs: Structure-aware, in-process, coverage-guided fuzzing engine for Rust.
- 2021‑04‑12:
Use console.log() like a pro.
- 2021‑04‑12:
What exactly was the point of [ “x$var” = “xval” ]?
- 2021‑04‑11:
Using PyTorch and NumPy? You're making a mistake.
- 2021‑04‑09:
Asahi Linux for Apple M1: progress report, January / February 2021.
- 2021‑04‑07:
Protecting PostgreSQL from FreeBSD's OOM killer.
- 2021‑04‑07:
Several ways is which software can be surprisingly slow.
- 2021‑04‑07:
Fast and extensible equality saturation with egg and Rust.
- 2021‑04‑06:
Debugging random slow writes with GIN indexes in PostgreSQL.
- 2021‑04‑06:
Foreign Data Wrappers for migrating from Oracle to PostgreSQL.
- 2021‑04‑06:
Eliminating data races in Firefox with thread sanitizer: a technical report.
- 2021‑04‑06:
Wuffs has the fastest, safest PNG decoder in the world.
- 2021‑04‑06:
Ghosts of OSI: the spectre haunting the Internet.
- 2021‑04‑05:
TextEdit TXT/HTML type sniffing vulnerability on macOS (CVE-2019-8761).
- 2021‑04‑04:
paged.js: beautiful PDFs from HTML.
- 2021‑04‑04:
A history of IRC (Internet Relay Chat).
- 2021‑04‑04:
Why Julia is turning heads in 2021.
- 2021‑04‑04:
Judah Levine on everyday time and atomic time.
- 2021‑04‑04:
Why daylight saving time has not stopped yet in Europe.
- 2021‑04‑04:
The new standard that killed the loudness war.
- 2021‑04‑03:
Where is HTTP/3 right now?
- 2021‑04‑03:
Ink traps and light traps in font design.
- 2021‑04‑02:
DNS at IETF 110.
- 2021‑04‑02:
Ionica: how the British weather killed a billion pound tech company.
- 2021‑04‑01:
Speeding up crash recovery and VACUUM in PostgreSQL 14.
- 2021‑04‑01:
Using Rust to corrode insane Python run-times.
- 2021‑04‑01:
How does Golang know time.Now?
- 2021‑04‑01:
avo: Generate x86 assembly with Golang.
- 2021‑03‑30:
Terrible choices: MySQL.
- 2021‑03‑30:
MySQL: do not pass this way again.
- 2021‑03‑30:
In MySQL, never use “utf8”. Use “utf8mb4”.
- 2021‑03‑30:
The sixtyforgan: a Commodore 64 with a spring reverb; chiptunes like a church organ.
- 2021‑03‑30:
Hello, HPy.
- 2021‑03‑29:
Flicker-free Elite on the BBC Micro (like the BBC Master).
- 2021‑03‑29:
Notes on the Internet Congestion Control Research Group meeting at IETF 110.
- 2021‑03‑29:
The actual OSI model.
- 2021‑03‑28:
Implicit In-order Forests: Zooming a billion trace events at 60fps.
- 2021‑03‑28:
Developer tools can be magic. Instead, they collect dust.
- 2021‑03‑28:
Pin and suffering in async Rust.
- 2021‑03‑27:
Sundial: fault-tolerant clock synchronization for datacenters.
- 2021‑03‑26:
A look back at asynchronous Rust.
- 2021‑03‑26:
Parallel Programming: Second Edition.
- 2021‑03‑26:
Speculating the entire x86-64 instruction set in seconds with this one weird trick.
- 2021‑03‑26:
Dynamic memory allocation in constexpr in C++20.
- 2021‑03‑26:
JET.jl: static type checker with type inference for Julia.
- 2021‑03‑25:
Julia 1.6 highlights.
- 2021‑03‑25:
Counting cycles and instructions on the Apple M1 processor.
- 2021‑03‑23:
Automatic video editing for presentations.
- 2021‑03‑20:
Regexploit: a tool for finding DoS-able regular expressions.
- 2021‑03‑19:
Fontemon: the world’s first video game in a font!
- 2021‑03‑19:
Consistent overhead byte stuffing for binary logs.
- 2021‑03‑19:
MOnSter 6502
- 2021‑03‑18:
How GitHub found and fixed a rare race condition in session handling.
- 2021‑03‑18:
Country centered map projections.
- 2021‑03‑18:
Stealing arbitrary GitHub Actions secrets.
- 2021‑03‑18:
Writing a PostgreSQL formatter / pretty printer in Rust.
- 2021‑03‑18:
Memory saturated MySQL.
- 2021‑03‑18:
Algebraic graphs with class in Haskell.
- 2021‑03‑18:
17 weird facts about the Hunspell dictionary format.
- 2021‑03‑17:
frawk: an efficient awk-like programming language.
- 2021‑03‑17:
Why COBOL isn't the problem.
- 2021‑03‑16:
The origins and motivations of univalent foundations: computer proof verification to avoid mathematical mistakes.
- 2021‑03‑16:
Improving large monorepo performance on GitHub.
- 2021‑03‑16:
Correct register allocation in Cranelift by fuzzing with a symbolic checker.
- 2021‑03‑16:
The prevalence, persistence, and perils of lame delegations.
- 2021‑03‑16:
It’s time to stop using SMS for anything.
- 2021‑03‑15:
Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust.
- 2021‑03‑14:
Fitting cubic Bézier curves.
- 2021‑03‑12:
Measuring frecency (a combination of frequency and recency) with exponential decay.
- 2021‑03‑12:
Finding Mona Lisa in the Game of Life.
- 2021‑03‑12:
A brief history of network router architecture.
- 2021‑03‑12:
Faster inverse BWT.
- 2021‑03‑11:
Returning iterators in Rust.
- 2021‑03‑11:
Generalizing over generics aka higher kinded types in Rust.
- 2021‑03‑11:
How many PostgreSQL developers does it take to make jsonb subscripting work?
- 2021‑03‑11:
Estimating connection pool size with PostgreSQL 14 statistics.
- 2021‑03‑11:
Notes from the DNS privacy workshop at NDSS 2021.
- 2021‑03‑11:
Safe flexible aliasing with deferred borrows in Rust.
- 2021‑03‑11:
Retrofitting effect handlers onto OCaml.
- 2021‑03‑11:
String matching based on compile time perfect hashing in Zig.
- 2021‑03‑11:
A history of CLU.
- 2021‑03‑11:
inet.af/netaddr.IP: a new IP address type for Golang.
- 2021‑03‑10:
HTML5 genetic algorithm 2D car thingy.
- 2021‑03‑09:
Debian running on Rust coreutils.
- 2021‑03‑08:
yacv (Yet Another Compiler Visualizer): LL and LR parser animations.
- 2021‑03‑07:
Fast file copy with io_uring.
- 2021‑03‑07:
Memory-mapped IO registers in Zig.
- 2021‑03‑07:
Don’t use 7-segment displays.
- 2021‑03‑07:
Why I rewrote my Rust keyboard firmware in Zig: consistency, mastery, and fun.
- 2021‑03‑06:
An introduction to lockless algorithms in Linux.
- 2021‑03‑06:
Cleaning up your PostgreSQL database.
- 2021‑03‑06:
No one is prepared for hagfish slime.
- 2021‑03‑06:
Generating ePub from LaTeX.
- 2021‑03‑06:
Modern text features in R.
- 2021‑03‑06:
Web browser architecture and the history of window systems.
- 2021‑03‑05:
Clojure from a Schemer's perspective.
- 2021‑03‑05:
Waiting for PostgreSQL 14: SEARCH and CYCLE clauses.
- 2021‑03‑05:
New Ansible data validation module(s).
- 2021‑03‑05:
Project Champollion: reverse-engineering Rosetta 2.
- 2021‑03‑04:
Solving the structured control flow problem when compiling to WebAssembly.
- 2021‑03‑04:
Delete your Rust Cargo integration tests!
- 2021‑03‑04:
HTTPWTF?!
- 2021‑03‑04:
Don't blindly prefer `emplace_back` to `push_back` in C++.
- 2021‑03‑04:
Do low-level optimizations matter? Faster quicksort with cmov.
- 2021‑03‑02:
typescript-is: generate run-time type-checks.
- 2021‑03‑02:
LastPass Android app has seven trackers.
- 2021‑03‑02:
A rational design process: how and why to fake it.
- 2021‑03‑02:
Taking this serially.
- 2021‑03‑01:
The hijacking of Perl.com.
- 2021‑03‑01:
Eight million pixels and counting: improving texture atlas allocation in Firefox WebRender.
- 2021‑02‑28:
How I cut GTA Online loading times by 70%.
- 2021‑02‑28:
Validating JSON input in Rust web services.
- 2021‑02‑28:
Where everything went wrong: error handling in Rust.
- 2021‑02‑28:
TLD graveyard.
- 2021‑02‑25:
An exploration of JSON interoperability vulnerabilities.
- 2021‑02‑25:
The ternary computing manifesto.
- 2021‑02‑25:
Putting DNSSEC signers to the test: Knot vs Bind.
- 2021‑02‑25:
Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel offset.
- 2021‑02‑25:
rpi-open-firmware: Open source VPU side bootloader for Raspberry Pi.
- 2021‑02‑25:
Common Nginx misconfigurations that leave your web server open to attack.
- 2021‑02‑24:
Fuzzy string matching in PostgreSQL.
- 2021‑02‑24:
Git as a tamperproof file archive using chained RFC3161 timestamps.
- 2021‑02‑24:
Adventures in stereograms.
- 2021‑02‑23:
SEN and oj: pretty JSON.
- 2021‑02‑23:
mold: a modern linker, faster than cat.
- 2021‑02‑22:
Stop your (business rules) engines!
- 2021‑02‑21:
AHash: a fast non-cryptographic keyed hash for in-memory hashmaps.
- 2021‑02‑20:
The modern packager’s security nightmare.
- 2021‑02‑20:
Shaman: evaluate the numerical accuracy of a C++ application and locate sources of error.
- 2021‑02‑19:
Cleaner parallel curves with Euler spirals.
- 2021‑02‑19:
Reliability, constant work, and a good cup of coffee.
- 2021‑02‑18:
Route 53 DNS: Amazon’s premier AWS database.
- 2021‑02‑18:
Power-of-2-choices in practice.
- 2021‑02‑18:
Cybersecurity is like food safety: digital HACCP.
- 2021‑02‑18:
Reconnecting your application after a Postgres failover.
- 2021‑02‑16:
"Naming things" is a poor name for naming things.
- 2021‑02‑16:
Earley parser.
- 2021‑02‑14:
Holotypic Occlupanid Research Group.
- 2021‑02‑14:
Guidelines for names in programming.
- 2021‑02‑13:
SVG: the good, the bad, and the ugly.
- 2021‑02‑12:
Uncovering a 24-year-old bug in Linux TCP.
- 2021‑02‑12:
Islands architecture for web pages.
- 2021‑02‑11:
A reverse-engineered description of Adobe Type 1 fonts. (1989)
- 2021‑02‑11:
50 years of text games - 1976: Adventure.
- 2021‑02‑10:
ANSI X3.64-1979: Additional control characters for use with ASCII.
- 2021‑02‑10:
FreeBee: an AT&T 3B1 emulator.
- 2021‑02‑10:
Let's Encrypt prepared to issue 200 million certificates in 24 hours.
- 2021‑02‑10:
Dependency confusion: a novel supply chain attack against Apple, Microsoft, and dozens of other companies.
- 2021‑02‑10:
Configuring PostgreSQL to avoid the Linux OOM killer.
- 2021‑02‑09:
A practical look at 2G GSM security after three decades.
- 2021‑02‑09:
Turning an old Amazon Kindle into a eink development platform.
- 2021‑02‑09:
Configuring Emacs for Rust development.
- 2021‑02‑08:
The real novelty of the ARPANET.
- 2021‑02‑06:
We have known the earth is round for about 2500 years.
- 2021‑02‑05:
How to read and write Scheme code.
- 2021‑02‑05:
8 bits are enough for a version number...?
- 2021‑02‑05:
In the future, even your RAM will have firmware; and the subject of POWER10 blobs.
- 2021‑02‑04:
The Dunning-Kruger effect probably is real.
- 2021‑02‑04:
You don't really need a virtualenv: try PDM instead?
- 2021‑02‑03:
Bluetooth trackball Mark II.
- 2021‑02‑02:
10 bad TypeScript habits to break this year.
- 2021‑02‑02:
Polymorphisation: Improving Rust compilation times through intelligent monomorphisation.
- 2021‑02‑02:
Recovering a bricked SSD with JTAG and a Raspberry Pi.
- 2021‑02‑01:
An HAProxy back-end server port change gotcha.
- 2021‑02‑01:
PostgreSQL partial indexes: the unexpected find that freed 20GB of unused space.
- 2021‑02‑01:
Gadgetbahn: Is Cambridgeshire's new metro all it's cracked up to be?
- 2021‑02‑01:
67 years of Lego sets.
- 2021‑01‑31:
A look at iMessage in iOS 14.
- 2021‑01‑31:
Bringing stack clash protection to Clang / x86 with help from Firefox and Rust.
- 2021‑01‑31:
Manless climbing: Dorothy Pilley Richards 1894-1986.
- 2021‑01‑31:
CrayZee Eighty: a Z80 RC2014 backplane shaped like a Cray 1.
- 2021‑01‑31:
Testing Proebsting's law: How does clang 2.7 hold up in 2021?
- 2021‑01‑31:
Deluge and disaster: the politics of flooding risk.
- 2021‑01‑30:
Log-structured merge for solid-state drives.
- 2021‑01‑30:
Are the Persian Gulf city-states slave societies?
- 2021‑01‑29:
Achieving 11M IOPS and 66 GB/s IO on a single AMD ThreadRipper workstation.
- 2021‑01‑29:
Discussing the future of RPKI.
- 2021‑01‑29:
How we made Typerighter, the Guardian's style guide checker.
- 2021‑01‑29:
Uniwidth typefaces for interface design.
- 2021‑01‑28:
Automatic flamegraphs for benchmarks in Rust.
- 2021‑01‑28:
Performance improvement on front-end generated by rustdoc.
- 2021‑01‑27:
What's the deal with Chromium on Linux? Google at odds with package maintainers.
- 2021‑01‑27:
What color was "Apple Beige"?
- 2021‑01‑27:
12 requests per second in Python.
- 2021‑01‑26:
Badger Seal mask fitter.
- 2021‑01‑26:
Netflix and Spotify on a Raspberry Pi 4 with Chromium and Widevine.
- 2021‑01‑26:
Strengths, weaknesses, opportunities, and threats facing the GNU Autotools.
- 2021‑01‑26:
Postgres scaling advice for 2021.
- 2021‑01‑26:
Window System Design: If James Gosling had it to do over again in 2002.
- 2021‑01‑26:
System separation in the Continental Europe Synchronous Area on 8 January 2021.
- 2021‑01‑26:
Firefox 85 cracks down on supercookies.
- 2021‑01‑26:
LAMBDA: The ultimate Microsoft Excel worksheet function.
- 2021‑01‑25:
The night two atomic bombs fell on North Carolina.
- 2021‑01‑25:
Zig makes Golang (cgo) cross compilation Just Work.
- 2021‑01‑25:
The PGM-index: a learned piecewise geometric model for small lookup indexes.
- 2021‑01‑24:
DrScheme in space.
- 2021‑01‑24:
Racket compiler and runtime status, January 2021.
- 2021‑01‑24:
An incomplete list of mistakes in the design of CSS.
- 2021‑01‑24:
Tim Hayward and COVID: 10 days on life support.
- 2021‑01‑24:
Libvirt: adoption of GLib library to replace GNULIB and home grown code.
- 2021‑01‑24:
Dissecting the Apple M1 GPU, part II.
- 2021‑01‑24:
Use mmap() with care.
- 2021‑01‑22:
Rust in production in 1Password.
- 2021‑01‑22:
On the complexity of JSON serialization.
- 2021‑01‑22:
What engineers can teach (and learn from) programmers.
- 2021‑01‑21:
XTerm does graphics in Tektronix mode.
- 2021‑01‑21:
The new database servers powering Let's Encrypt.
- 2021‑01‑21:
How Corellium ported Linux to the Apple M1.
- 2021‑01‑21:
Container networking is simple.
- 2021‑01‑21:
picodvi: Bitbanged DVI on the RP2040 microcontroller.
- 2021‑01‑21:
Datalegreya: interweave text and data.
- 2021‑01‑21:
Parsing ASN.1: A troublesome problem?
- 2021‑01‑20:
The year a "railway" ran inside Westminster Abbey.
- 2021‑01‑20:
Software engineering is not special.
- 2021‑01‑20:
Porting Firefox to Apple Silicon.
- 2021‑01‑20:
Java on Truffle: going fully metacircular.
- 2021‑01‑20:
An interactive review of the Oklab colour space.
- 2021‑01‑19:
Cache poisoning vulnerabilities affect popular DNSmasq software.
- 2021‑01‑19:
A high-speed computer vision pipeline for the universal LEGO sorting machine.
- 2021‑01‑19:
Unicode superscript numeral rendering bugs.
- 2021‑01‑19:
Down Underground: London Underground depth diagrams.
- 2021‑01‑18:
Are programmers really engineers?
- 2021‑01‑18:
BBC Micro Bot user guide.
- 2021‑01‑16:
The problem with Gradle.
- 2021‑01‑16:
Reverse engineering Prodigy.
- 2021‑01‑15:
Fast commits for ext4.
- 2021‑01‑15:
This was WhatsApp's plan all along.
- 2021‑01‑15:
donut.c without a math library.
- 2021‑01‑15:
Simplifying endian-specific file parsers in Rust with Omnom and type inference.
- 2021‑01‑15:
Maybe you don't need Rust and WASM to speed up your JavaScript.
- 2021‑01‑14:
A week with Plan 9.
- 2021‑01‑14:
The most thoroughly commented linker script (probably).
- 2021‑01‑13:
Use an iPhone as a webcam.
- 2021‑01‑13:
OBS Studio: free and open source software for video recording and live streaming.
- 2021‑01‑13:
Cross-language interfaces between C and C++.
- 2021‑01‑12:
The ABCD family tree.
- 2021‑01‑12:
Who invented the alphabet?
- 2021‑01‑12:
Futhark design decisions I do not regret.
- 2021‑01‑12:
Developing new metrics for tracking DNS root server traffic.
- 2021‑01‑12:
SUNSPOT: an implant in the SolarWinds Orion build process.
- 2021‑01‑11:
XTerm: it's better than you thought.
- 2021‑01‑11:
The Earth has been spinning faster lately.
- 2021‑01‑10:
The design of the Roland Juno synth oscillators.
- 2021‑01‑10:
Surprising ctags behaviour.
- 2021‑01‑10:
The truth about cast iron pans.
- 2021‑01‑09:
Radamsa: a general-purpose black-box fuzzer.
- 2021‑01‑09:
kAFL: hardware-assisted feedback fuzzing for OS kernels.
- 2021‑01‑09:
Redqueen: fuzzing with input-to-state correspondence.
- 2021‑01‑09:
Grimoire: synthesizing structure while fuzzing.
- 2021‑01‑09:
Earth is turning faster than it has in a half-century, which could mean a negative leap second.
- 2021‑01‑09:
Ray tracing in pure CMake.
- 2021‑01‑08:
nonymous + bore: DNS toys for Rust.
- 2021‑01‑08:
Exploring RustFFT's SIMD architecture.
- 2021‑01‑08:
Dark side of POSIX APIs: handling siginfo_t in Rust.
- 2021‑01‑08:
Generic associated types encode higher-order functions on types in Rust.
- 2021‑01‑08:
Rust's SemVer snares: sizedness and size.
- 2021‑01‑08:
An introduction to property-based testing in Rust with quickcheck.
- 2021‑01‑08:
A guide to rendering metaballs (aka blobs).
- 2021‑01‑08:
Smooth voxel terrain: isosurface extraction with marching cubes and surface nets.
- 2021‑01‑08:
Metaballs and marching squares.
- 2021‑01‑08:
Doing symbolic math with SymPy.
- 2021‑01‑08:
Greybox automatic exploit generation for heap overflows in language interpreters.
- 2021‑01‑08:
Quorum availability.
- 2021‑01‑07:
Google Chrome reduces its root DNS traffic.
- 2021‑01‑07:
Dissecting the Apple M1 GPU.
- 2021‑01‑07:
Italian court rules that Deliveroo used a discriminatory algorithm.
- 2021‑01‑07:
Xbox 20 year anniversary: an oral history.
- 2021‑01‑06:
Simulating the PIN cracking scene in Terminator 2.
- 2021‑01‑06:
An uncommon cold.
- 2021‑01‑05:
Cryptographic key length recommendations.
- 2021‑01‑05:
Tutorial on precompilation for Julia.
- 2021‑01‑04:
Ditherpunk: the article I wish I had about monochrome image dithering.
- 2021‑01‑04:
Dream Minecraft speedrun investigation results.
- 2021‑01‑04:
FuzixOS: a Unix-like system for 8-bit micros.
- 2021‑01‑03:
kgames: reviving very old X code.
- 2021‑01‑03:
Rust design patterns.
- 2021‑01‑03:
Zig in 30 minutes.
- 2021‑01‑03:
A new release for GNU Octave.
- 2021‑01‑03:
Medley Interlisp Common Lisp.
- 2021‑01‑03:
On repl-driven programming.
- 2021‑01‑03:
cargo-supply-chain: Gather author, contributor and publisher data on crates in your dependency graph.
- 2021‑01‑02:
Game of Life on Penrose tiles.
- 2021‑01‑01:
The hyperbezier pen tool
- 2021‑01‑01:
Floating Point Leviathan: a game based on floating point precision errors.
- 2021‑01‑01:
Seamless file descriptor transfer between Linux processes with pidfd and pidfd_getfd.
- 2021‑01‑01:
Counting the days: the origin of Julian day numbers.
- 2021‑01‑01:
Multiscale Turing patterns in WebGL.
- 2021‑01‑01:
How I improve my C code quality.
- 2021‑01‑01:
Tectonic: a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
- 2021‑01‑01:
A look at Rust tokio 1.0 API changes.