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 latest
-
2024‑12‑31:
Optimizing static search trees in Rust.
-
2024‑12‑30:
Revealing peanut butter overheads with flame graphs.
-
2024‑12‑30:
Concurrent cycle collection for Scheme in Rust.
-
2024‑12‑28:
Ferris-on-Air: An experimental Wi-Fi stack for the ESP32 in Rust.
-
2024‑12‑28:
An open-source Wi-Fi MAC layer for the ESP32.
-
2024‑12‑28:
Von Neumann ordinals look like leaves.
-
2024‑12‑28:
On Ada's dependent types, and its types as a whole.
-
2024‑12‑25:
When Unisys tried to cash in on GIF by charging royalties.
-
2024‑12‑24:
Safety vs performance in C, C++, and Rust sort implementations.
-
2024‑12‑23:
diman: A Rust library for checking units of measure at compile time.
-
2024‑12‑22:
Blender USD scene import is accidentally quadratic.
-
2024‑12‑21:
Stacked error handling for large Rust projects.
-
2024‑12‑21:
Rules to avoid common extended inline assembly mistakes.
-
2024‑12‑21:
A phantom memory leak that wasn't there.
-
2024‑12‑19:
Fetching RSS/Atom feeds respectfully with curl.
-
2024‑12‑19:
Please stop citing TIOBE.
-
2024‑12‑17:
Murder mystery: GCC builds failing after sbuild refactoring.
-
2024‑12‑17:
Why did Silicon Valley turn right?
-
2024‑12‑16:
Revisiting Hubris appconfigs.
-
2024‑12‑16:
Crash recovery in Exhubris.
-
2024‑12‑16:
OpenERV energy recovery ventilator.
-
2024‑12‑16:
Parse me, baby, one more time: bypassing HTML sanitizers via parsing differentials.
-
2024‑12‑15:
Mutation XSS explained, with a CVE and a challenge.
-
2024‑12‑13:
vale: A markup-aware linter for prose.
-
2024‑12‑13:
Things you never wanted to know about Golang interfaces.
-
2024‑12‑13:
UNIX Review magazine interviews Larry Tesler.
-
2024‑12‑11:
Making memcpy(NULL, NULL, 0) well-defined.
-
2024‑12‑11:
No NAT November: a month without IPv4.
-
2024‑12‑10:
Gyroscopic Gyros.
-
2024‑12‑10:
Common misconceptions about compilers.
-
2024‑12‑05:
Faster SQL pagination with keysets, continued.
-
2024‑12‑05:
Implementing async APIs for microcontroller peripherals in Rust.
-
2024‑12‑04:
Inheritance was invented as a performance hack in Simula.
-
2024‑12‑04:
The Hoare cube.
-
2024‑12‑04:
OKLCH colour picker and converter.
-
2024‑12‑04:
Egoless engineering.
-
2024‑12‑04:
Francis Crick’s central dogma of genetics is not a "dogma," and it has never been broken.
-
2024‑12‑01:
Typst as a programming language.
-
2024‑12‑01:
DELETEs are difficult.
-
2024‑11‑30:
Compilation on the GPU? A feasibility study.
-
2024‑11‑30:
Everything you never wanted to know about linker script.
-
2024‑11‑30:
Combining git repos with josh-filter.
-
2024‑11‑29:
Slow networking between cloud VMs on the same host.
-
2024‑11‑29:
Using Pandoc and Typst to produce PDFs.
-
2024‑11‑29:
Coded character sets history and development.
-
2024‑11‑28:
Wislist for Linux from the mold linker's POV.
-
2024‑11‑28:
MIT aluminium bicycle project 1974.
-
2024‑11‑27:
if constexpr requires requires { requires } in C++.
-
2024‑11‑27:
A collective of nouns.
-
2024‑11‑27:
Emacs arbitrary code execution and how to avoid it.
-
2024‑11‑27:
Structured editing and incremental parsing.
-
2024‑11‑27:
The capacitor that Apple soldered incorrectly at the factory in the Macintosh LC III.
-
2024‑11‑27:
Offpunk: an offline-first command-line web browser.
-
2024‑11‑27:
Chawan: a web browser for your terminal.
-
2024‑11‑26:
A solution to the onion problem of J. Kenji López-Alt.
-
2024‑11‑25:
Theory-building and why employee churn is lethal to software companies.
-
2024‑11‑24:
Petnames: A humane approach to secure decentralized naming.
-
2024‑11‑23:
Why am I writing a JavaScript toolchain in Zig?
-
2024‑11‑23:
copycat: intercept system calls using seccomp.
-
2024‑11‑22:
Syntax error recovery in parsing expression grammars (PEG parsers).
-
2024‑11‑21:
Handling cookies is a minefield.
-
2024‑11‑21:
The stereographic projection of the Stern–Brocot tree.
-
2024‑11‑21:
SQL, homomorphisms, and constraint satisfaction problems.
-
2024‑11‑21:
Modern hardware for future databases.
-
2024‑11‑21:
Analytical anti-aliasing.
-
2024‑11‑20:
Map keys and lifetimes in Rust.
-
2024‑11‑20:
How did software get so reliable without proof?
-
2024‑11‑20:
Ghosts of departed proofs. (functional pearl)
-
2024‑11‑20:
Type safety back and forth.
-
2024‑11‑20:
Nominal types for storing, structural types for manipulating.
-
2024‑11‑20:
Understanding the BM25 full text search algorithm.
-
2024‑11‑19:
In loving memory of the square checkbox.
-
2024‑11‑19:
How many values does a boolean have?
-
2024‑11‑17:
Styling Graphviz with CSS.
-
2024‑11‑16:
Nixie tubes.
-
2024‑11‑14:
BetterBufRead: faster reads in Rust.
-
2024‑11‑11:
The CVM cardinality estimation algorithm.
-
2024‑11‑11:
Row major vs. column major arrays, row vectors vs. column vectors.
-
2024‑11‑11:
Precise inference of expressive units of measurement types.
-
2024‑11‑11:
Type inference for units of measure.
-
2024‑11‑11:
Far too many ways to wait on a child process with a timeout.
-
2024‑11‑10:
Formalising graphs with coinduction in Agda.
-
2024‑11‑10:
The design of a self-compiling C transpiler targeting POSIX shell.
-
2024‑11‑10:
The principles of Mr. Harrison's longitude clock / maritime chronometer.
-
2024‑11‑09:
Texture-less GPU text rendering.
-
2024‑11‑09:
Known attacks and a primer on elliptic curve cryptography.
-
2024‑11‑09:
Algol 68: a retrospective.
-
2024‑11‑08:
The main features of CPL. (1963)
-
2024‑11‑08:
The mechanical evaluation of expressions: Landin on the lambda calculus. (1964)
-
2024‑11‑08:
CPL: failed venture or noble ancestor?
-
2024‑11‑08:
Some proposals for improving the efficiency of ALGOL 60 — Strachey & Wilkes.
-
2024‑11‑07:
Bringing faster stack unwinding exceptions to Rust.
-
2024‑11‑07:
Rust's sneaky deadlock with `if let` blocks.
-
2024‑11‑06:
Mimic: a fast System/370 simulator for the IBM RT PC. (1987)
-
2024‑11‑05:
Resurrection: the journal of the Computer Conservation Society.
-
2024‑11‑05:
The Autocode programs developed for the Manchester University computers. (1958)
-
2024‑11‑05:
The official Aztec C online museum.
-
2024‑11‑05:
In search of types.
-
2024‑11‑04:
Macros, safety, and SOA (struct-of-arrays) in Rust.
-
2024‑11‑04:
A Hamiltonian circuit for Rubik's Cube.
-
2024‑11‑04:
C++, complexity, and compiler bugs.
-
2024‑11‑03:
qcp: QUIC remote file copy.
-
2024‑11‑03:
RRB vector: a practical general purpose immutable sequence.
-
2024‑11‑02:
Why PostgreSQL pg_dump is amazing.
-
2024‑11‑02:
The Lounge: a modern, responsive, cross-platform, self-hosted web IRC client in TypeScript.
-
2024‑11‑02:
Scuttlebutt protocol guide.
-
2024‑11‑01:
Emacs org mode syntax cheat sheet.
-
2024‑11‑01:
Unicode codepoints that expand or contract when case is changed in UTF-8.
-
2024‑11‑01:
ActivityBot: a simple ActivityPub bot server in PHP.
-
2024‑11‑01:
CIL: C intermediate language, a front end for linters.
-
2024‑11‑01:
ASCII control characters in the terminal.
-
2024‑10‑31:
C++ ABI compatibility: the day the standard library died.
-
2024‑10‑30:
malloc(0) & realloc(…,0) ≠ 0
-
2024‑10‑29:
TCP SYN spoofing attack directs abuse complaints at Tor relays.
-
2024‑10‑28:
The widely cited studies on mouse vs. keyboard efficiency are completely bogus.
-
2024‑10‑28:
OpenZFS deduplication is good now and you shouldn't use it.
-
2024‑10‑28:
Old MacDonald had a barcode, E-I-EICAR.
-
2024‑10‑28:
What’s new in POSIX 2024 XCU commands and utilities.
-
2024‑10‑27:
A new git-repack algorithm shrunk Microsoft’s Javascript monorepo git size by 94%.
-
2024‑10‑26:
Before you buy a domain name, first check to see if it's haunted.
-
2024‑10‑24:
A line map for Milano's trams in TeX.
-
2024‑10‑24:
Why write a new RTOS for CHERIoT?
-
2024‑10‑24:
Zero or sign extend.
-
2024‑10‑23:
Adding row polymorphism to Damas-Hindley-Milner.
-
2024‑10‑23:
Breaking Bad: how compilers break constant-time cryptography implementations.
-
2024‑10‑23:
Our optimizers need a rethink.
-
2024‑10‑22:
Rustls outperforms OpenSSL and BoringSSL.
-
2024‑10‑22:
A Mathematica interpreter in Typescript.
-
2024‑10‑22:
Mathics: a free, open-source alternative to Mathematica.
-
2024‑10‑22:
On the problem of naming things.
-
2024‑10‑21:
A multithread concurrency cost hierarchy.
-
2024‑10‑21:
The network is reliable? An informal survey of real-world communications failures.
-
2024‑10‑21:
Jujutsu (jj) in practice.
-
2024‑10‑21:
Learn Rust the dangerous way.
-
2024‑10‑20:
Better defunctionalization through lambda set specialization.
-
2024‑10‑20:
Responsive TOC leader lines with CSS.
-
2024‑10‑20:
QUIC is not quick enough over fast internet.
-
2024‑10‑20:
The origins of the term “daemon” in computing.
-
2024‑10‑20:
Using Euro coins as standard weights.
-
2024‑10‑19:
Clapping Music for two flip-disc displays.
-
2024‑10‑18:
superlinker: a tool for reinterpreting ELF executables and shared libraries.
-
2024‑10‑18:
French supreme court decides about museums’ secret 3D scans of their sculptures.
-
2024‑10‑18:
The strange cases of consumer-grade routers on puny power supplies.
-
2024‑10‑17:
Discovering features using HTTP OPTIONS.
-
2024‑10‑17:
C89 draft standard in HTML.
-
2024‑10‑15:
The origin and pronunciation of "GHIBLI".
-
2024‑10‑14:
The beginnings of FM radio broadcasting.
-
2024‑10‑13:
Silent CT: a quiet certificate transparency monitor.
-
2024‑10‑12:
The road to OCIv2 images: what's wrong with tar?
-
2024‑10‑12:
The ultimate conditional pattern matching syntax.
-
2024‑10‑11:
Safety goggles for alchemists: the path towards safer transmute in Rust.
-
2024‑10‑11:
Quantifying the Kevin Bacon game: a statistical exploration of Hollywood’s most connected actors.
-
2024‑10‑10:
Why we’re helping more wikis move away from Fandom.
-
2024‑10‑10:
Designing a fast concurrent hash table in Rust.
-
2024‑10‑09:
SQLite's use of Tcl.
-
2024‑10‑08:
Five times ICANN deleted a ccTLD, and what it means for .io
-
2024‑10‑08:
The origins of PostScript.
-
2024‑10‑08:
Tartufo searches through git repositories for high entropy strings and secrets.
-
2024‑10‑08:
Z.200 CHILL: the ITU-T programming language.
-
2024‑10‑07:
A general model for the origin of allometric scaling laws in biology.
-
2024‑10‑07:
Big ball of mud: the de facto standard software architecture.
-
2024‑10‑07:
AVX bitwise ternary logic and the Amiga blitter.
-
2024‑10‑07:
Octothorpes: hashtags for the open Internet.
-
2024‑10‑06:
The Gleam programming language is pragmatic.
-
2024‑10‑06:
London Transport 25: ride 25 different forms of transport in one day.
-
2024‑10‑06:
A fast revese linear scan register allocator for Cranelift.
-
2024‑10‑06:
Playing with PostgreSQL and the BOLT linker layout optimizer.
-
2024‑10‑05:
Towards standards for handwritten zero and oh: much ado about nothing (and a letter). (1967)
-
2024‑10‑05:
The solid-state register allocator.
-
2024‑10‑04:
Persi Diaconis: Why did Markov invent Markov Chains? (video)
-
2024‑10‑04:
Blessed.rs: an unofficial guide to the Rust crates ecosystem.
-
2024‑10‑04:
"A=B", a book about computer methods of discovery and proof of hypergeometric identities.
-
2024‑10‑03:
Terminal colours are tricky.
-
2024‑10‑02:
Height hunt: a quest to find and visit every possible road vehicle height restriction sign in the UK.
-
2024‑10‑02:
TigerBeetle code style.
-
2024‑10‑02:
An introduction to the Filament hardware design language.
-
2024‑10‑01:
Implementing virtual system calls with vDSO.
-
2024‑10‑01:
The case of the missing increment: Golden Cove twice as fast as expected?!
-
2024‑10‑01:
Kurt Vonnegut’s chess-like game GHQ.
-
2024‑09‑30:
Beyond multi-core parallelism in Rust: faster Mandelbrot with SIMD.
-
2024‑09‑29:
A p-adic representation of the rational numbers for fast easy arithmetic. (1979)
-
2024‑09‑28:
The perils of transition to 64-bit time_t in Gentoo.
-
2024‑09‑27:
Malicious SHA-1.
-
2024‑09‑26:
Attacking UNIX systems via CUPS.
-
2024‑09‑26:
Major leap for nuclear clock paves way for ultraprecise timekeeping.
-
2024‑09‑26:
Rewriting Rust.
-
2024‑09‑25:
A brief history of microprogramming.
-
2024‑09‑24:
A few secure random bytes in PostgreSQL without pgcrypto.
-
2024‑09‑24:
A busy beaver Collatz coincidence.
-
2024‑09‑24:
Fully documented source code for Lander on the Acorn Archimedes.
-
2024‑09‑23:
An overview of cross-architecture portability problems.
-
2024‑09‑23:
IO-Lite: a unified I/O buffering and caching system. (1999)
-
2024‑09‑23:
“Truly hygienic” let statements in Rust.
-
2024‑09‑22:
The roots of Work-as-Done and Work-as-Imagined.
-
2024‑09‑21:
Questioning the criteria for evaluating non-cryptographic hash functions.
-
2024‑09‑21:
The working archivist's guide to enthusiast CD-ROM archiving tools.
-
2024‑09‑21:
The lost language extensions of MetaWare's High C compiler.
-
2024‑09‑19:
Digital signatures and how to avoid them.
-
2024‑09‑19:
20 years later, real-time Linux makes it to the mainline kernel.
-
2024‑09‑18:
Use IDENTITY columns instead of SERIAL in PostgreSQL.
-
2024‑09‑18:
Database replication design spectrum.
-
2024‑09‑18:
Handling 8kHz raw mouse input on Windows.
-
2024‑09‑18:
Bézier curve arc length parametrizations.
-
2024‑09‑18:
Emptying the dishwasher With systems theory.
-
2024‑09‑17:
Watching letters: a history of Latvian orthography.
-
2024‑09‑17:
Ratchets in software development.
-
2024‑09‑17:
The centrality of stupidity in mathematics.
-
2024‑09‑16:
Ante: A low-level functional language with algebraic effects and safe shared mutability.
-
2024‑09‑15:
Turning disposable vapes into a fast charge power bank.
-
2024‑09‑15:
AT&T’s CRISP Hobbits.
-
2024‑09‑15:
A time consuming vDSO pitfall for 32-bit code on arm64 Linux.
-
2024‑09‑14:
Speeding up Valkey to over 1M requests per second with memory prefetching.
-
2024‑09‑14:
Porting SBCL to the Nintendo Switch.
-
2024‑09‑13:
Energy after fire.
-
2024‑09‑12:
smolweb HTML specification
-
2024‑09‑10:
Invisible salamanders are not what you think: AEAD’s lack of key commitment.
-
2024‑09‑10:
Signatures are like backups.
-
2024‑09‑09:
Debunking CISC vs RISC code density.
-
2024‑09‑09:
A low-level look at A-normal form.
-
2024‑09‑09:
What is the best pointer tagging method?
-
2024‑09‑08:
Cracking an old ZIP file to help open source the ANC's "Operation Vula" secret crypto code.
-
2024‑09‑07:
PERQ
-
2024‑09‑06:
Massachusetts Bodged Transistor Authority: How we turned MBTA Red Line equipment into a car speedometer.
-
2024‑09‑04:
LSP: the good, the bad, and the ugly.
-
2024‑09‑04:
OptView2: inspect missed optimizations by LLVM clang.
-
2024‑09‑03:
Is this Rust trait sealed or not?
-
2024‑09‑03:
Unmaking the Makefiles: exorcising the Rust compiler test suite one file at a time.
-
2024‑09‑02:
Parsing awk is tricky.
-
2024‑09‑01:
A simple generic parallelism idiom and C++17 specifics.
-
2024‑09‑01:
CHERIoT: a study in CHERI for RISC-V microcontrollers.
-
2024‑08‑31:
CHERI myth: I don’t need CHERI if I have safe languages?
-
2024‑08‑31:
Knepp rewilded.
-
2024‑08‑31:
Fortran dot/comma bug urban legend.
-
2024‑08‑29:
Your immune system is not a muscle.
-
2024‑08‑29:
Compiling JavaScript to Wasm: partial evaluation, weval, and the first Futamura projection.
-
2024‑08‑29:
Air Con: pay $1697 for an on/off switch, or fix the Android controller tablet?
-
2024‑08‑29:
Two Turkish i dots too many.
-
2024‑08‑29:
Rate limiting, ATM cells, and GCRA.
-
2024‑08‑29:
Time-series compression algorithms, explained.
-
2024‑08‑29:
What every computer scientist should know about floating-point arithmetic.
-
2024‑08‑27:
5000x faster CRDTs: an adventure in optimization.
-
2024‑08‑27:
MiniJinja: learnings from building a template engine in Rust.
-
2024‑08‑27:
Don’t make fun of renowned author Dan Brown.
-
2024‑08‑27:
Should scientific fraud and research misconduct be illegal?
-
2024‑08‑27:
Using dtrace on MacOS with SIP enabled.
-
2024‑08‑27:
Emulating x86 / amd64 on RISC-V.
-
2024‑08‑26:
Poor foundations in geometric algebra.
-
2024‑08‑26:
Writing a Rust compiler in C?!
-
2024‑08‑25:
Linux pipes are slow.
-
2024‑08‑25:
Old buildings in Cambridge.
-
2024‑08‑24:
Printing the web: HTML and CSS for paper books.
-
2024‑08‑24:
CORS is stupid: a guide to cookies and cross-origin request security.
-
2024‑08‑24:
Geometric search trees.
-
2024‑08‑23:
We need visual programming. No, not like that.
-
2024‑08‑23:
Ted Dunning on histograms vs quantile sketches.
-
2024‑08‑23:
Speeding up serde_json strings by 20%
-
2024‑08‑18:
How OCaml type checker works, or, what polymorphism and garbage collection have in common.
-
2024‑08‑18:
The door problem: what does a game designer do?
-
2024‑08‑18:
Techniques for safe garbage collection in Rust.
-
2024‑08‑17:
MVCC: The part of PostgreSQL we hate the most.
-
2024‑08‑15:
A LaTeX-typeset reproduction of Reynolds' "Types, Abstraction and Parametric Polymorphism".
-
2024‑08‑15:
A history of orthogonal frequency division multiplexing (OFDM).
-
2024‑08‑14:
Incremental TT munchers: perhaps the most powerful macro parsing technique in Rust macro_rules.
-
2024‑08‑14:
The medieval 'New England': a forgotten Anglo-Saxon colony on the north-eastern Black Sea coast.
-
2024‑08‑14:
Round in circles and back again: Max Roberts updated London Underground concentric circles and spokes map.
-
2024‑08‑14:
spice: Fine-grained parallelism with sub-nanosecond overhead in Zig.
-
2024‑08‑13:
Good retry, bad retry: an incident story.
-
2024‑08‑13:
Division, modulus, and remainder for computer scientists.
-
2024‑08‑12:
Hard drive disassembly: an IBM Deathstar from Nov. 2000.
-
2024‑08‑11:
Rosie pattern language: modern text pattern matching to replace regex.
-
2024‑08‑11:
The tic-tac-toe mysteries of Xerloc O'Xolmes.
-
2024‑08‑10:
Rust on the RP2350.
-
2024‑08‑10:
Confusion attacks: exploiting hidden semantic ambiguity in Apache httpd.
-
2024‑08‑08:
Kyua graduates: The story behind the FreeBSD and NetBSD testing frameworks.
-
2024‑08‑08:
A better light source for scanning color negative film.
-
2024‑08‑07:
A trilingual inscription at Behistun near Persepolis led to the decipherment of cuneiform.
-
2024‑08‑07:
Situated software.
-
2024‑08‑06:
Building rqlite 9.0: cutting disk usage by half.
-
2024‑08‑04:
Helmut Schmidt Future Prize acceptance speech by Meredith Whittaker.
-
2024‑08‑04:
Git credential: password store integration for git-over-https
-
2024‑08‑03:
There is (still) only one statistical test!
-
2024‑08‑03:
Where do debuggers find shared library paths in core dumps?
-
2024‑08‑03:
Primitive recursive functions for the working programmer.
-
2024‑08‑02:
Another variable-length integer encoding.
-
2024‑08‑01:
What your web framework never told you about SQL injection protection.
-
2024‑07‑31:
Where does the name "algebraic data type" come from?
-
2024‑07‑30:
Quint: An executable specification language with delightful tooling based on the temporal logic of actions (TLA).
-
2024‑07‑30:
A skeptic's first contact with Kubernetes.
-
2024‑07‑30:
Calculating the cost of a Google Deepmind paper, or, how to burn $10,000,000 on an arXiv preprint.
-
2024‑07‑29:
How to build highly-debuggable C++ binaries.
-
2024‑07‑27:
Unsafe read beyond of death: optimized short string SIMD load.
-
2024‑07‑27:
Counting bytes faster with SIMD, interleaving, and prefetching.
-
2024‑07‑27:
Driving compilers.
-
2024‑07‑26:
CompilerFax: phone a compiler, fax it some code, it faxes back the results.
-
2024‑07‑26:
Meta-Thunderbolt-Inception
-
2024‑07‑26:
Rosemary Grant on the Galapagos finches: “Evolution happens much quicker than Darwin thought”.
-
2024‑07‑26:
Color spaces: CIELAB, OKLAB, OKLCH.
-
2024‑07‑25:
An extensive benchmark of C and C++ hash tables.
-
2024‑07‑22:
Using algebra to refactor data types.
-
2024‑07‑22:
From recursive descent to LR via Pratt parsing.
-
2024‑07‑21:
How not to use box shadows.
-
2024‑07‑19:
Concerns about passkeys.
-
2024‑07‑19:
NSCopyObject, the griefer that keeps on griefing.
-
2024‑07‑19:
The GNU make jobserver Implementation.
-
2024‑07‑18:
Hash-based bisect debugging in compilers and runtimes.
-
2024‑07‑18:
Why Polars rewrote its Arrow string data type.
-
2024‑07‑17:
XSS injection using undeclared charset encoding and ISO-2022-JP sniffing.
-
2024‑07‑16:
How the Stream Deck rose from the ashes of the legendary Optimus Maximus keyboard.
-
2024‑07‑15:
Pull requests via `git push`.
-
2024‑07‑15:
Objective tests for aphantasia.
-
2024‑07‑13:
git-pr: A new git collaboration service.
-
2024‑07‑12:
Nine rules for successful power meetings.
-
2024‑07‑12:
Beating the cache with value speculation.
-
2024‑07‑12:
That afternoon headache is a sign of stale air.
-
2024‑07‑12:
Are you sure you want to use mmap() in your database management system?
-
2024‑07‑11:
Hash maps that don’t hate you.
-
2024‑07‑11:
First contact with SQLite.
-
2024‑07‑10:
Towards reproducible rebuilds of Debian packages.
-
2024‑07‑09:
Is prefix of string in table? A journey into SIMD string processing.
-
2024‑07‑08:
On understanding data abstraction, revisited.
-
2024‑07‑06:
Properly property testing concurrent data structures.
-
2024‑07‑04:
The X window system at 40.
-
2024‑07‑04:
xsum: exactly-rounded summation of floating point values.
-
2024‑07‑04:
nq: a command line job queue utility.
-
2024‑07‑03:
The sad state of property-based testing libraries.
-
2024‑07‑02:
BusyBeaver(5) is now proved to be 47,176,870.
-
2024‑07‑02:
Losing the world record in HATETRIS.
-
2024‑06‑29:
POSIX 2024 changes.
-
2024‑06‑29:
Bytecode breakdown: unraveling Factorio's Lua security flaws.
-
2024‑06‑29:
A eulogy for DevOps.
-
2024‑06‑29:
Devops: the funeral.
-
2024‑06‑28:
gRPC: the bad parts.
-
2024‑06‑27:
Valve.Computer: A modern 8 bit design, built using 1950s thermionic valves.
-
2024‑06‑27:
OpenSSL CVE-2024-5535: `SSL_select_next_proto` buffer overread.
-
2024‑06‑26:
Why I attack.
-
2024‑06‑26:
Rigorous numerical integration in Arb.
-
2024‑06‑26:
Profiling with ctrl-C.
-
2024‑06‑26:
The many faces of undefined in JavaScript.
-
2024‑06‑25:
Re-creating early generative art: Schotter, by Georg Nees.
-
2024‑06‑25:
Sans I/O when the rubber meets the road.
-
2024‑06‑25:
Network protocols, sans I/O.
-
2024‑06‑24:
ChocoPy: a subset of Python 3 for teaching compiler construction.
-
2024‑06‑24:
Rust’s new sort algorithms.
-
2024‑06‑24:
Resolving metastability issues during bootstrapping CLOS.
-
2024‑06‑23:
How to design a CPU ISA (instruction set architecture).
-
2024‑06‑23:
Why is AVX 512 useful for the RPCS3 PlayStation 3 emulator?
-
2024‑06‑23:
A history of Psion and Symbian.
-
2024‑06‑22:
Optimizing SQLite for servers.
-
2024‑06‑22:
The simple essence of algebraic subtyping: principal type inference with subtyping made easy.
-
2024‑06‑21:
1/25-scale Cray C90 wristwatch.
-
2024‑06‑21:
Reflections on software performance.
-
2024‑06‑20:
How to use the new counted_by attribute in C and Linux.
-
2024‑06‑20:
Avoiding the top 10 NGINX configuration mistakes.
-
2024‑06‑20:
Public JavaScript CDNs are useless and dangerous.
-
2024‑06‑20:
The full-source bootstrap: building from source all the way down.
-
2024‑06‑19:
Demystifying Rust's ? operator and Try trait.
-
2024‑06‑18:
Peak population projections.
-
2024‑06‑18:
I’ve stopped using box plots. Should you?
-
2024‑06‑18:
Avoiding Emacs bankruptcy.
-
2024‑06‑18:
Equality has more than one meaning in mathematics.
-
2024‑06‑17:
Zig-style generics are not well-suited for most languages.
-
2024‑06‑17:
Making robots plan faster with SIMD and Rust.
-
2024‑06‑17:
The ineffable types of Rust: how to make self-borrows safe.
-
2024‑06‑16:
MicroMac, a 128k Macintosh emulated on an RP2040.
-
2024‑06‑16:
There are only three frequencies: never, sometimes, always.
-
2024‑06‑16:
Generators vs list comprehensions with join() in Python.
-
2024‑06‑16:
Stupid TLS facts: session resumption.
-
2024‑06‑16:
Reconstructing public keys from cryptographic signatures.
-
2024‑06‑16:
The story of reformatting 100k source files at Google in 2011.
-
2024‑06‑15:
Exponentially better rotations.
-
2024‑06‑15:
Pitfalls of PostgreSQL logical decoding.
-
2024‑06‑13:
Whose CIDR is it anyway? Scanning all of whois and rdap.
-
2024‑06‑13:
Chaos in the medium: watercolour plotting.
-
2024‑06‑13:
Crafting an interpreter with Rust.
-
2024‑06‑13:
Understanding DNS in Kubernetes.
-
2024‑06‑12:
Bamboo can be as invasive as Japanese knotweed.
-
2024‑06‑12:
Breaking AES-GCM on nonce reuse.
-
2024‑06‑12:
Inside Mexico’s anti-avocado militias.
-
2024‑06‑11:
Characterizing the Raspberry Pi Pico RP2040 ADC.
-
2024‑06‑11:
Forsp: a Forth+Lisp hybrid CBPV language.
-
2024‑06‑10:
Dangers of newlines in inline assembly.
-
2024‑06‑09:
Using HDMI EMI for fast wireless data transfer.
-
2024‑06‑09:
Ultrasonic investigations in shopping centres.
-
2024‑06‑09:
A (draft) taxonomy of SIMD usage.
-
2024‑06‑09:
How many High Streets are there in London?
-
2024‑06‑08:
Towards federated key transparency.
-
2024‑06‑08:
A fast alternative to the modulo reduction.
-
2024‑06‑08:
Fibonacci hashing: the optimization that the world forgot (or: a better alternative to integer modulo).
-
2024‑06‑08:
Compilers are (too) smart: a failed popcount optimization.
-
2024‑06‑07:
What is PID 0?
-
2024‑06‑07:
Leveraging Zig's allocators.
-
2024‑06‑07:
Tom7’s BoVeX typesetter with AI-assisted justified text.
-
2024‑06‑07:
Speeding up rustc by being lazy.
-
2024‑06‑06:
lelwel: a resilient LL(1) parser generator for Rust.
-
2024‑06‑06:
let rand = main as usize;
-
2024‑06‑06:
Shortcat: Manipulate macOS masterfully, minus the mouse.
-
2024‑06‑06:
First steps with DHCPv6-PD on OpenBSD.
-
2024‑06‑06:
Propagating bounds through bitwise operations in abstract interpretation.
-
2024‑06‑04:
Simple proofs with Z3Py.
-
2024‑06‑04:
Why do electronic components have such odd values? Renard numbers and ISO 3.
-
2024‑06‑04:
Codd almighty! 50 years of SQL.
-
2024‑06‑04:
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams in bddbddb.
-
2024‑06‑04:
bddbddb: using Datalog with binary decision diagrams for program analysis.
-
2024‑06‑04:
Sound, precise, and fast abstract interpretation with tristate numbers.
-
2024‑06‑04:
Bit-twiddling abstract addition with unknown bits.
-
2024‑06‑04:
LL and LR in context: why parsing tools are hard.
-
2024‑06‑04:
automemcpy: a framework for automatic generation of fundamental memory operations.
-
2024‑06‑02:
Tiny Tapeout: an educational project to get your designs manufactured on a real chip.
-
2024‑06‑02:
For want of a relative path to ld.so
-
2024‑06‑02:
Tock: an embedded operating system in Rust.
-
2024‑06‑02:
The borrow checker within Rust.
-
2024‑06‑02:
Rust and dynamically-sized thin pointers.
-
2024‑06‑01:
Rust regex engine internals as a library.
-
2024‑06‑01:
Performance culture.
-
2024‑06‑01:
X is justifiably slow?
-
2024‑06‑01:
Electromagnetic linear clock.
-
2024‑05‑31:
The greatest clock (and map) ever made.
-
2024‑05‑30:
Ultrasonic cold brew coffee.
-
2024‑05‑30:
Why, after 6 years, I’m over GraphQL.
-
2024‑05‑29:
Recycling steel with cement in an arc furnace could produce zero-emissions concrete.
-
2024‑05‑29:
Why rejecting invalid XML in the browser is a bad idea.
-
2024‑05‑28:
A study of MAC address randomization in mobile devices and when it fails.
-
2024‑05‑28:
Surveilling the masses with Wi-Fi-based positioning systems.
-
2024‑05‑28:
I’ve womansplained him to death.
-
2024‑05‑28:
The Cephes mathematical library.
-
2024‑05‑28:
TerminalTextEffects: a visual effects engine for xterm-compatible terminal emulators.
-
2024‑05‑28:
IPv6 link-local stunts: ping ff02::1 etc.
-
2024‑05‑28:
Programming pearls: Bumper sticker computer science.
-
2024‑05‑28:
Why software projects take longer than you think: a statistical model.
-
2024‑05‑28:
Doing is normally distributed, learning is log-normal.
-
2024‑05‑28:
Wasmi WebAssembly interpreter’s new execution engine.
-
2024‑05‑27:
Reclaiming IPv4 Class E 240.0.0.0/4.
-
2024‑05‑26:
Statically typed functional programming with Python 3.12.
-
2024‑05‑26:
RuSSH: a Rust SSH client and server library.
-
2024‑05‑26:
Extend your battery life with the scx_rustland Linux scheduler.
-
2024‑05‑26:
Taming floating-point sums with Rust.
-
2024‑05‑21:
vu128: Efficient variable-length integers
-
2024‑05‑21:
Rust's iterators optimize nicely—and contain a footgun.
-
2024‑05‑19:
I am too old to create a popular programming language.
-
2024‑05‑19:
How often is the wife taller than the husband?
-
2024‑05‑19:
AOT JS compilation by wevaling the wasms.
-
2024‑05‑19:
Compilers for free with weval, a wasm partial evaluator.
-
2024‑05‑19:
VirusTotal YARA has been rewritten in Rust as YARA-X.
-
2024‑05‑18:
Why writing correct software is hard.
-
2024‑05‑18:
Fix your video game’s timestep!
-
2024‑05‑18:
Fixing iterative damping interpolation in video games.
-
2024‑05‑18:
TCP performance and the Mathis equation.
-
2024‑05‑18:
Practical third-party library sandboxing with RLBox.
-
2024‑05‑17:
The rainbow hats puzzle.
-
2024‑05‑17:
Golang disables Nagle’s algorithm, making it evil on shitty networks.
-
2024‑05‑17:
A transport protocol's view of Starlink.
-
2024‑05‑17:
What even is a pidfd anyway?
-
2024‑05‑16:
History of the Italian electrical system.
-
2024‑05‑16:
A look at the Mojo language for bioinformatics.
-
2024‑05‑16:
Strings in Julia vs Rust: you probably don't need to validate UTF-8.
-
2024‑05‑16:
D3 in depth.
-
2024‑05‑16:
Understanding misunderstandings in C source code using IOCCC winners.
-
2024‑05‑16:
Ebury is alive but unseen: 400k Linux servers compromised by the Windigo group.
-
2024‑05‑16:
Some notes on Rust, mutable aliasing, and formal verification.
-
2024‑05‑15:
Sir, there's a cat in your mirror dimension.
-
2024‑05‑15:
A tale of two sieves.
-
2024‑05‑15:
The creator of Magic: The Gathering knows exactly where it all went wrong.
-
2024‑05‑14:
Optimizing the Roc parser/compiler with data-oriented design.
-
2024‑05‑14:
A triad of factors that explain the nature of software.
-
2024‑05‑13:
How to include Git version information in a Golang binary.
-
2024‑05‑13:
Submitting a Linux kernel patch with b4.
-
2024‑05‑13:
Exploring GNU C extensions in the Linux kernel.
-
2024‑05‑13:
Parsing JSON is a minefield.
-
2024‑05‑12:
The alternative programming language implementation problem.
-
2024‑05‑12:
GPUs go brrr: how to keep the nVIDIA H100 tensor cores fed.
-
2024‑05‑12:
Functional semantics in imperative clothing in the Roc programming language.
-
2024‑05‑12:
Can we make bicycle manufacturing sustainable again?
-
2024‑05‑12:
Emoji history: the missing years.
-
2024‑05‑12:
Garbage collectors are scary.
-
2024‑05‑12:
Breaking DKIM and BIMI in 2024 using the Debian OpenSSL bug CVE-2008-0166.
-
2024‑05‑11:
In Rust, methods should be object safe.
-
2024‑05‑11:
Why the CORDIC algorithm lives rent-free in my head.
-
2024‑05‑11:
Thread: the wireless tech we can't use or teach.
-
2024‑05‑09:
ppstep: an interactive C/C++ preprocessor macro debugger.
-
2024‑05‑09:
It's always TCP_NODELAY. Every damn time.
-
2024‑05‑09:
Rust through the ages.
-
2024‑05‑09:
Scanners work fine over iSCSI.
-
2024‑05‑09:
Needle: a DFA regex library that compiles to JVM bytecode.
-
2024‑05‑09:
The await event horizon in JavaScript.
-
2024‑05‑08:
B612: the Airbus cockpit display font.
-
2024‑05‑08:
The C preprocessor iceberg.
-
2024‑05‑07:
A 100x speedup with unsafe Python.
-
2024‑05‑07:
Secure Randomness in Golang 1.22.
-
2024‑05‑07:
Search has been put in the vibe space.
-
2024‑05‑06:
JTAG hacking with a Raspberry Pi: introducing the PiFex.
-
2024‑05‑06:
How to successfully rewrite a C++ codebase in Rust.
-
2024‑05‑06:
Decoding UTF8 with the pext parallel extract instruction.
-
2024‑05‑06:
The C++ iceberg.
-
2024‑05‑05:
An extended subtweet on power-over, vs power-with or power-to.
-
2024‑05‑05:
The Italian streets that don't exist on any map.
-
2024‑05‑05:
Thinking is bad: implications of human error research for spreadsheet research and practice.
-
2024‑05‑05:
How to build a $20 billion semiconductor fab.
-
2024‑05‑05:
Byte magazine August 1983: The C Language.
-
2024‑05‑05:
Bit-stealing made legal: compilation for custom memory representations of algebraic data types.
-
2024‑05‑05:
TypeID: type-safe, K-sortable, globally unique identifiers.
-
2024‑05‑05:
Understanding Stein's paradox in higher-dimensional statistics.
-
2024‑05‑04:
Interview with Donald Knuth, with his opinions on multicore CPUs.
-
2024‑05‑03:
ECDH-OMR: elliptic curve Diffie-Hellman oblivious message retrieval.
-
2024‑05‑02:
Hobby’s algorithm for aesthetic Bézier splines.
-
2024‑05‑02:
Piccolo: a stackless Lua interpreter in Rust.
-
2024‑05‑02:
TestResult: a Rust error type that panics early.
-
2024‑05‑02:
Designing an efficient memory layout in Rust with unsafe and unions, or, an overlong guide in avoiding dynamic dispatch.
-
2024‑05‑02:
Unwind considered harmful?
-
2024‑05‑02:
The world's loudest Lisp program, for tunnel evacuation.
-
2024‑05‑02:
PaperWM.spoon: tiled scrollable window manager for Hammerspoon on MacOS.
-
2024‑05‑01:
It's time to stop recommending Clean Code.
-
2024‑04‑30:
Rink: an open source unit-aware calculator.
-
2024‑04‑30:
iRRAM: exact arithmetic in C++.
-
2024‑04‑30:
PostgreSQL supported platforms over time.
-
2024‑04‑30:
Bytecode VMs in surprising places.
-
2024‑04‑30:
PowerShell monad manifesto.
-
2024‑04‑30:
State of the terminal.
-
2024‑04‑30:
A random walk through the Ada programming language.
-
2024‑04‑29:
So, you want to write an unsafe crate in Rust?
-
2024‑04‑29:
fend: an arbitrary-precision unit-aware calculator.
-
2024‑04‑29:
The space bar stabilizer problem.
-
2024‑04‑29:
FreeBee: AT&T 3B1 UNIX PC emulator.
-
2024‑04‑29:
Bloat busters: pg_repack vs pg_squeeze.
-
2024‑04‑29:
Importing ECMAscript modules with require() in node.js.
-
2024‑04‑29:
WireGuard endpoints and IP addresses.
-
2024‑04‑29:
Simple NDP proxy to route your IPv6 VPN addresses.
-
2024‑04‑28:
The invention of the integrated circuit recorded in Jean Hoerni's patent notebook.
-
2024‑04‑28:
Synth wars: The story of MIDI, the one interface that ruled them all.
-
2024‑04‑28:
Building an IBM 3270 terminal controller.
-
2024‑04‑27:
Tasks are the wrong abstraction for async Rust.
-
2024‑04‑26:
Captain Zilog crushed! The story of the Z8000.
-
2024‑04‑26:
Passkeys: a shattered dream.
-
2024‑04‑25:
The weird world of Windows file paths.
-
2024‑04‑24:
How web bloat impacts users with slow devices.
-
2024‑04‑24:
So you want to learn to break ciphers?
-
2024‑04‑24:
Digitized continuous magnetic recordings of the Carrington event from Greenwich and Kew.
-
2024‑04‑23:
Inside the Super Nintendo cartridges.
-
2024‑04‑23:
The bubble sort curve.
-
2024‑04‑23:
No one buys books.
-
2024‑04‑22:
Manual for Larry Tesler’s PUB markup language. (1971)
-
2024‑04‑20:
Microsoft Windows denial of service by Hisense TV.
-
2024‑04‑19:
A history of parsers of the Ruby programming language.
-
2024‑04‑19:
Cable maintenance ships: The invisible seafaring industry that keeps the internet afloat.
-
2024‑04‑19:
Raw flux streams and obscure formats: Further work around imaging 5.25-inch floppy disks.
-
2024‑04‑18:
Formal methods: just good engineering practice?
-
2024‑04‑18:
UCAM-CL-TR-988: CHERI C semantics as an extension of the ISO C17 standard.
-
2024‑04‑18:
Formal mechanised semantics of CHERI C: capabilities, undefined behaviour, and provenance.
-
2024‑04‑18:
A domino computer.
-
2024‑04‑17:
Feathers are one of evolution’s cleverest inventions.
-
2024‑04‑17:
Will we have a negative leap second?
-
2024‑04‑17:
The hardest problem in web design: centering things.
-
2024‑04‑16:
Some useful types for database-using Rust web apps.
-
2024‑04‑16:
Etak Navigator: how they made a mapping computer in the 1980s.
-
2024‑04‑15:
Five little languages and how they grew: Dennis Ritchie’s talk at HOPL on the history of C.
-
2024‑04‑14:
Sandboxing all the things with Flatpak and BubbleBox.
-
2024‑04‑14:
sotrace: show hidden dependencies in Linux binaries.
-
2024‑04‑13:
Transcript of Martha Wells’ Jack Williamson Lecture 2024, on MurderBot.
-
2024‑04‑11:
The simple beauty of XOR floating point time series compression.
-
2024‑04‑11:
Subclassing in Python, redux.
-
2024‑04‑11:
A simple derivation of sin and cos by stacking triangles.
-
2024‑04‑10:
Steve Klabnik's Jujutsu tutorial.
-
2024‑04‑10:
BatBadBut: You can't securely execute commands on Windows.
-
2024‑04‑09:
Halbach magnetic array.
-
2024‑04‑09:
The link between abortion and crime.
-
2024‑04‑09:
path.join considered harmful, or openat() all the things.
-
2024‑04‑09:
An introduction to jump threading optimizations in gcc.
-
2024‑04‑09:
Concurrency vs paralellism.
-
2024‑04‑09:
The server chose violence: error handling in the Hubris embedded OS.
-
2024‑04‑08:
Excuse me sir, would you like to buy a kilo of isopropyl bromide?
-
2024‑04‑08:
It's time for operating systems to rediscover hardware.
-
2024‑04‑08:
Putting out the hardware dumpster fire.
-
2024‑04‑05:
The state of time in Rust: leaps and bounds.
-
2024‑04‑05:
Features I wish PostgreSQL had as a developer.
-
2024‑04‑05:
The case against self-closing tags in HTML.
-
2024‑04‑05:
Switching to the meow modal editing system from evil emacs.
-
2024‑04‑04:
Conway's Game of Life through time.
-
2024‑04‑04:
The V8 sandbox.
-
2024‑04‑04:
HTTP/2 CONTINUATION flood denial of service vulnerability.
-
2024‑04‑04:
CHERIoT and supply chain security.
-
2024‑04‑04:
Putting an xz backdoor payload in a valid RSA key.
-
2024‑04‑03:
Cowgol: an experimental, Ada-inspired language for 8 bit micros.
-
2024‑04‑03:
Diff modulo base, for comparing rebased branches.
-
2024‑04‑03:
Multiple cursors for emacs.
-
2024‑04‑01:
The Wi-Fi only works when it's raining?!
-
2024‑04‑01:
When concurrency matters: behaviour-oriented concurrency.
-
2024‑04‑01:
The muscular imagination of Iain M. Banks: a future you might actually want to live in.
-
2024‑03‑31:
A kinematically coupled piezo nanometer-resolution microscope focus stage.
-
2024‑03‑31:
Countering trusting trust.
-
2024‑03‑31:
A systematic analysis of the Juniper Dual EC DRBG backdoor.
-
2024‑03‑30:
Basic things to support your software project.
-
2024‑03‑30:
The "not rocket science" rule of continuous integration (and the story of monotone and bors).
-
2024‑03‑30:
Xz format inadequate for long-term archiving.
-
2024‑03‑29:
Could ice cream possibly be good for you?
-
2024‑03‑29:
A new provisioning tool built with mgmt.
-
2024‑03‑28:
TCP is an underspecified two-node consensus algorithm and what that means for your proxies.
-
2024‑03‑28:
Binary Fuse Filters: fast and smaller than xor filters.
-
2024‑03‑27:
Who killed the network switch? An embedded Rust debugging story.
-
2024‑03‑26:
Preventing cross-service UDP loops in QUIC.
-
2024‑03‑25:
Interval parsing grammars for file format parsing.
-
2024‑03‑23:
Unexplanations: SQL is syntactic sugar for relational algebra. (not!)
-
2024‑03‑21:
Progressing towards the redefinition of the second based on an optical frequency standard.
-
2024‑03‑21:
A giant leap for the leap second. Is humankind ready?
-
2024‑03‑21:
Bug hunting in btrfs.
-
2024‑03‑19:
The invention of fuzz testing.
-
2024‑03‑15:
JESK56: a diodeless keyboard matrix derived using graph theory.
-
2024‑03‑13:
Mu-Ency: the encyclopedia of the Mandelbrot set.
-
2024‑03‑12:
Identifying software: supply chain security with GNU Guix.
-
2024‑03‑12:
yet-another-cad-viewer: display OCP/CadQuery/Build123d models in a web browser.
-
2024‑03‑11:
Staged generic programming.
-
2024‑03‑11:
A practical unification of multi-stage programming and macros.
-
2024‑03‑10:
Do Be Do Be Do, or, Frank: a strict functional programming language with algebraic effects.
-
2024‑03‑10:
Compiling without continuations.
-
2024‑03‑10:
Kinds are calling conventions.
-
2024‑03‑09:
Call-by-push-value: decomposing call-by-value and call-by-name.
-
2024‑03‑09:
Call-by-push-value. (1999)
-
2024‑03‑09:
I'm betting on call-by-push-value.
-
2024‑03‑09:
SuperC: parsing all of C by taming the preprocessor.
-
2024‑03‑09:
The SuperC parsing framework.
-
2024‑03‑08:
A flexible and economical UTF-8 decoder.
-
2024‑03‑08:
USAF computer security technology planning study: memory safety bugs in 1972.
-
2024‑03‑07:
CAP twelve years later: how the "rules" have changed.
-
2024‑03‑07:
The CAP theorem: the bad, the bad, and the ugly.
-
2024‑03‑06:
Conway’s Law: the only unbreakable law.
-
2024‑03‑06:
How I use git worktrees.
-
2024‑03‑06:
Use weird tests to capture tacit knowledge.
-
2024‑03‑06:
Maybe everything is a coroutine.
-
2024‑03‑05:
The "missing" graph datatype already exists. It was invented in the 1970s: relational algebra and datalog.
-
2024‑03‑05:
Behind F1's velvet curtain.
-
2024‑03‑04:
The hunt for the missing graph data type.
-
2024‑03‑04:
Migrating from Emacs lsp-mode to Eglot.
-
2024‑03‑04:
Motion blur all the way down.
-
2024‑03‑04:
Kubernetes failure stories.
-
2024‑03‑03:
The case against geometric algebra.
-
2024‑03‑03:
50 years ago: the new Cambridge University Press printing house.
-
2024‑02‑26:
Tracing the baseband: cellphone modems.
-
2024‑02‑26:
What is the "God Mode" folder in Windows 10, and how do I enable it?
-
2024‑02‑25:
Beware of -ffast-math and -Ofast.
-
2024‑02‑24:
Really large git repositories.
-
2024‑02‑22:
What modern NVMe storage can do, and how to exploit it: high-performance I/O for high-performance storage engines.
-
2024‑02‑22:
A security kernel based on the lambda calculus.
-
2024‑02‑18:
Ten Python datetime pitfalls, and what libraries are (not) doing about it.
-
2024‑02‑18:
Smoothed asymptotics: from number theory to quantum field theory.
-
2024‑02‑14:
Thomas Rokicki’s survey of algorithms for Conway’s Game of Life.
-
2024‑02‑13:
Conway's Game of Life is omniperiodic.
-
2024‑02‑07:
jj init : an introduction to the jujutsu version control system.
-
2024‑02‑06:
RCL: A reasonable configuration language.
-
2024‑02‑03:
Pkl: a programming language for configuration.
-
2024‑01‑31:
A homemade telephone exchange for rotary dial phones.
-
2024‑01‑29:
__VA_OPT__ minutiae.
-
2024‑01‑29:
Recursive macros with C++20 __VA_OPT__.
-
2024‑01‑17:
Passing nothing is surprisingly difficult: empty slices in C, C++, and Rust.
-
2024‑01‑15:
MULTIPLY: the Francis Hookham collection of hand held electronic calculators.
-
2024‑01‑15:
When random isn't.
-
2024‑01‑14:
QMK and keyboards.
-
2024‑01‑08:
niri: A scrollable-tiling Wayland compositor.
-
2024‑01‑08:
How to stop Linux threads cleanly.
-
2024‑01‑06:
Vectrex reborn: How a chance encounter gave new life to a dead console.
-
2024‑01‑05:
Speed up your code: don't pass structs bigger than 16 bytes on AMD64.
-
2024‑01‑04:
Golang: what we got right, what we got wrong.
-
2024‑01‑04:
An overview of the Starlark programming language.
-
2024‑01‑03:
Spatial Shell: a window layout assistant for i3 and sway.
-
2024‑01‑03:
newm-atha: a touchpad and touchscreen centric wayland compositor.
-
2024‑01‑03:
SIEVE is simpler than LRU.
-
2024‑01‑02:
What I've learned about flow fields for generative art.
-
2024‑01‑02:
A CAP tradeoff in Kubernetes.