Link log versions
• <https://dotat.at/:/>
• landing pages
• Atom feed
• Dreamwidth links
• LiveJournal links
My other activity
• Dreamwidth blog
• work blog
• Twitter
everything
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
- 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: Recovering a bricked SSD with JTAG and a Raspberry Pi.
- 2021-02-02: Polymorphisation: Improving Rust compilation times through intelligent monomorphisation.
- 2021-02-01: Gadgetbahn: Is Cambridgeshire's new metro all it's cracked up to be?
- 2021-02-01: PostgreSQL partial indexes: the unexpected find that freed 20GB of unused space.
- 2021-02-01: An HAProxy back-end server port change gotcha.
- 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: How we made Typerighter, the Guardian's style guide checker.
- 2021-01-29: Discussing the future of RPKI.
- 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-26: Strengths, weaknesses, opportunities, and threats facing the GNU Autotools.
- 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: 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-25: The night two atomic bombs fell on North Carolina.
- 2021-01-26: LAMBDA: The ultimate Microsoft Excel worksheet function.
- 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: Dissecting the Apple M1 GPU, part II.
- 2021-01-24: Libvirt: adoption of GLib library to replace GNULIB and home grown code.
- 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: Surprising ctags behaviour.
- 2021-01-10: The design of the Roland Juno synth oscillators.
- 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: Rust's SemVer snares: sizedness and size.
- 2021-01-08: Exploring RustFFT's SIMD architecture.
- 2021-01-08: Dark side of POSIX APIs: handling siginfo_t in Rust.
- 2021-01-08: nonymous + bore: DNS toys for Rust.
- 2021-01-08: Generic associated types encode higher-order functions on types in Rust.
- 2021-01-08: An introduction to property-based testing in Rust with quickcheck.
- 2021-01-08: Smooth voxel terrain: isosurface extraction with marching cubes and surface nets.
- 2021-01-08: Metaballs and marching squares.
- 2021-01-08: A guide to rendering metaballs (aka blobs).
- 2021-01-08: Doing symbolic math with SymPy.
- 2021-01-08: Greybox automatic exploit generation for heap overflows in language interpreters.
- 2021-01-07: Google Chrome reduces its root DNS traffic.
- 2021-01-08: Quorum availability.
- 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: Seamless file descriptor transfer between Linux processes with pidfd and pidfd_getfd.
- 2021-01-01: Floating Point Leviathan: a game based on floating point precision errors.
- 2021-01-01: The hyperbezier pen tool
- 2021-01-01: Counting the days: the origin of Julian day numbers.
- 2021-01-01: Multiscale Turing patterns in WebGL.
- 2021-01-01: Tectonic: a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
- 2021-01-01: How I improve my C code quality.
- 2021-01-01: A look at Rust tokio 1.0 API changes.
- 2020-12-31: Unsafe string interning in Golang for scoped IPv6 addresses.
- 2020-12-30: The quirks of City of London livery company coats of arms.
- 2020-12-30: Getting started in BBC BASIC with Owlet.
- 2020-12-30: In Python 2, node.example.com is an IPv6 address.
- 2020-12-29: Five intersecting tetrahedra in origami.
- 2020-12-29: Flow Browser preview on the Raspberry Pi 400.
- 2020-12-29: Why are video games graphics (still) a challenge? Productionizing rendering algorithms.
- 2020-12-28: Buttplug: a haptics abstraction library in Rust for controlling vibrators and other intimate hardware.
- 2020-12-28: Cosmopolitan C library: build-once run-anywhere.
- 2020-12-28: A review of the Lean theorem prover.
- 2020-12-28: Rust in a KDE project.
- 2020-12-27: Systems design explains the world.
- 2020-12-27: Oklab: A perceptual color space for image processing.
- 2020-12-26: A complete guide to LLVM for programming language creators.
- 2020-12-25: 'static trait bounds in Rust.
- 2020-12-23: Interactive C++ for data science with LLVM cling.
- 2020-12-23: How to favicon in 2021: six files that fit most needs.
- 2020-12-23: Flix: a functional / logic programming language for the JVM.
- 2020-12-23: KLEE: finding software bugs using symbolic execution.
- 2020-12-23: Build a tiny certificate authority for your homelab.
- 2020-12-23: An LSP client maintainer's view of the language server protocol.
- 2020-12-23: Don't think, just defunctionalize.
- 2020-12-21: Raft does not guarantee liveness in the face of network faults.
- 2020-12-20: Swirled Series: the result.
- 2020-12-19: The Psion Organiser II: laying the groundwork of our smartphone world.
- 2020-12-19: The algorithmic beauty of plants.
- 2020-12-19: Perceus: garbage free reference counting with reuse.
- 2020-12-18: Understanding systemd-resolved, split DNS, and VPN configuration.
- 2020-12-17: Git commits are snapshots, not diffs.
- 2020-12-17: The git parable.
- 2020-12-17: Moving a large TypeScript codebase to use strict null checks.
- 2020-12-17: Adding BPF target support to the Rust compiler.
- 2020-12-17: Notes on cross-compiling Rust on a Mac for a Raspberry Pi.
- 2020-12-17: rpitx: radio transmission from a Raspberry Pi GPIO pin.
- 2020-12-17: Rust on the BBC micro:bit.
- 2020-12-17: Why CockroachDB chose to be compatible with PostgreSQL.
- 2020-12-17: FFI-safe polymorphism with thin trait objects in Rust.
- 2020-12-16: Niue has launched a major effort to win back control of .nu
- 2020-12-16: To the brain, reading computer code is not the same as reading language.
- 2020-12-16: What I wish someone had told me about tensor computation libraries.
- 2020-12-15: Rockstar: a language for creating programs that are also hair metal power ballads.
- 2020-12-14: The case of the extra 40ms. (Not TCP delayed ACKs!)
- 2020-12-14: The cleverest BBC Micro floppy disc protection ever? Western Security Ltd.
- 2020-12-14: XML round-trip vulnerabilities in the Golang standard library affecting SAML.
- 2020-12-14: Pointer provenance is complicated: we need better language specs.
- 2020-12-14: A Golang-style defer mechanism for C.
- 2020-12-14: K: a rewrite-based executable semantic framework for programming languages.
- 2020-12-13: if-then-else had to be invented.
- 2020-12-13: The HP-35.
- 2020-12-12: More batteries included with emacs.
- 2020-12-12: Amazon owns more than $2B worth of IPV4 addresses.
- 2020-12-11: Monads and generic associated types in nightly Rust.
- 2020-12-10: An explanation of cameras and lenses with interactive 3D graphics.
- 2020-12-09: "A damn stupid thing to do": CPL and the origins of C.
- 2020-12-09: Architecting the future: Arm, CHERI, and Morello.
- 2020-12-08: The Galileo eccentric satellite surprise.
- 2020-12-08: Connecting an ASR33 Teletype to an ESP32.
- 2020-12-08: Where did combinators come from? Hunting the story of Moses Schönfinkel.
- 2020-12-06: Interval tree clocks.
- 2020-12-06: std::visit is everything wrong with modern C++
- 2020-12-06: Exotic Programming Ideas: Datalog and Souffle.
- 2020-12-06: The future of 32-bit Linux.
- 2020-12-05: Auto for types, but not for concepts in C++.
- 2020-12-05: A Microsoft custom floating point type for efficient inference.
- 2020-12-04: A tale of Template Haskell and cross compilation.
- 2020-12-04: Browser cache partitioning means it is time to say goodbye to Google Fonts.
- 2020-12-03: Painful lessons from the Web PKI, and how you can avoid them.
- 2020-12-03: Using Bloom filters to efficiently synchronise git repos and other hash graphs.
- 2020-12-03: Generic traits and associated types in Rust.
- 2020-12-03: Futures explained in 200 lines of Rust.
- 2020-12-03: Obsolete trigonometry functions and why we don't use them anymore.
- 2020-12-02: Hey Alexa what did I just type?
- 2020-12-02: Faster asynchronous WAL archiving with pgBackRest to avoid PostgreSQL WAL backlog.
- 2020-12-02: PostgreSQL PostGIS trajectories through space and time.
- 2020-12-02: TenDRA: an architecture-neutral compiler framework with C and C++ front ends.
- 2020-12-02: libFirm: an optimizing compiler back-end.
- 2020-12-02: Cutting up a capsized cargo ship for salvage.
- 2020-12-02: The rendering equation.
- 2020-12-01: I am an 80 column purist.
- 2020-12-01: How many registers does an x86-64 CPU have?
- 2020-12-01: Design of the Mozilla Firefox CRLite infrastructure.
- 2020-12-01: Evolution of tree data structures for indexing: more exciting than it sounds.
- 2020-12-01: Naming the Net: the Domain Name System, 1983-1990.
- 2020-12-01: The road to the Erlang JIT.
- 2020-12-01: Computer graphics from scratch.
- 2020-12-01: ARM and lock-free programming.
- 2020-11-30: Imaginary numbers are not real: the geometric algebra of spacetime.
- 2020-11-30: biVector.net: geometric algebra for computer graphics, vision, and engineering.
- 2020-11-30: ganja.js: geometric algebra for Javascript.
- 2020-11-30: Geometric algebra for computer graphics.
- 2020-11-28: Raytracing in one weekend.
- 2020-11-29: Summary of the Amazon Kinesis outage in the AWS us-east-1 region.
- 2020-11-28: SCION EPIC: a path-aware clean-slate internet architecture.
- 2020-11-28: L4S: low latency, low loss, scalable throughput Internet service architecture.
- 2020-11-28: Network topology design at 17,000 km/h: LEO satellite Internet.
- 2020-11-28: MP-DCCP multipath tunneling and congestion control in congestion control.
- 2020-11-28: On congestion control (un)fairness and active queue management (AQM).
- 2020-11-28: k6: a web load testing tool, written in Golang and configured in JavaScript.
- 2020-11-28: The great Internet TCP congestion control census.
- 2020-11-27: Existential Haskell.
- 2020-11-27: Rebuilding the Racket compiler with Chez Scheme.
- 2020-11-27: The most unusual murder weapons in crime fiction.
- 2020-11-27: 1.5 is the midpoint between 0 and infinity in Ruby.
- 2020-11-27: Clifford Algebra: A visual introduction.
- 2020-11-27: An introduction to geometric algebra.
- 2020-11-26: Testing a Rust crate's C API.
- 2020-11-26: An introduction to quaternions.
- 2020-11-26: How io_uring and eBPF will revolutionize programming in Linux.
- 2020-11-26: CBOR for embedded C with a Rust server.
- 2020-11-26: Strengthening memory safety in Rust: exploring CHERI capabilities for a safe language.
- 2020-11-26: An ex-Googler's guide to dev tools.
- 2020-11-26: WordPress and PHP 8 compatibility report.
- 2020-11-26: Modern storage is plenty fast. It is the APIs that are bad.
- 2020-11-26: Reasoning about colours.
- 2020-11-26: A list of magic numbers encountered while debugging.
- 2020-11-26: Versor: a generic C++ library for geometric algebras.
- 2020-11-26: Electromagnetism using geometric algebra versus components.
- 2020-11-26: Origin of the trefoil radiation warning sign.
- 2020-11-25: An intro to bivectors and rotors: Let's remove quaternions from every 3D engine.
- 2020-11-25: An API is a user interface.
- 2020-11-25: How do people find bugs?
- 2020-11-25: Protect domains that don't send email.
- 2020-11-25: Mlang: a modern compiler for the French tax code.
- 2020-11-25: Making PostgreSQL stored procedures 9X faster in Citus.
- 2020-11-25: Preserving Flash: why emulation is better than migration.
- 2020-11-25: PAM bypass: when nullok is not OK.
- 2020-11-24: TypeScript performance.
- 2020-11-24: What went wrong with libdispatch: a cautionary tale for async concurrency.
- 2020-11-24: More subtle TCP performance problems due to Nagle's algorithm and delayed ACKs.
- 2020-11-23: Building your color palette.
- 2020-11-23: The origin of the MIT License.
- 2020-11-22: Even faster bash startup.
- 2020-11-22: What if the world is made of cubes? Uncovering the universal geometry of geology.
- 2020-11-22: Booting from a vinyl record.
- 2020-11-20: Swirled series.
- 2020-11-20: It is high time we let go of the Mersenne Twister.
- 2020-11-20: How to abuse and fix authenticated encryption without key commitment.
- 2020-11-19: The usability of ownership in Rust.
- 2020-11-20: UNIX NEWS and ;login: archives from the 1970s.
- 2020-11-19: The C standard library is not dependency free (but part of Rust's is).
- 2020-11-19: Microsoft FrontPage: the good, the bad, the ugly.
- 2020-11-19: LambdaDelta: an emulator of the LMI Lambda Lisp Machine.
- 2020-11-19: Flash animations live forever at the Internet Archive.
- 2020-11-19: Archive of LISP Machine, Inc.
- 2020-11-19: Wiby: a search engine for the classic web.
- 2020-11-19: Forensic Architecture investigation of the Beirut port explosion.
- 2020-11-19: I should have loved biology.
- 2020-11-19: On-demand linked libraries for Nix.
- 2020-11-19: Power-cycling a USB port should be simple, right?
- 2020-11-18: Microsoft Pluton: a security chip designed for the future of Windows PCs.
- 2020-11-18: Automatic syntax error recovery in lrpar.
- 2020-11-17: Servo moves from Mozilla to the Linux Foundation.
- 2020-11-17: Skija graphics for JVM.
- 2020-11-17: 2020 Mac Mini: putting Apple Silicon M1 to the test.
- 2020-11-17: CXX.rs: safe interop between Rust and C++.
- 2020-11-17: The Rust performance book.
- 2020-11-17: Sponge4: a sponge-like hash function for seeding PRNGs.
- 2020-11-17: From Russia With Love: moving a time series data service from Citus to ClickHouse.
- 2020-11-16: Reverse engineering a forgotten 1970s Intel dual core beast: 8271, a new ISA.
- 2020-11-16: PostgreSQL psql command line tutorial and cheat sheet.
- 2020-11-16: pgcli: a command line interface for PostgreSQL with auto-completion and syntax highlighting.
- 2020-11-16: How do you write simple explanations without sounding condescending?
- 2020-11-16: Build systems à la carte: theory and practice (revised and expanded).
- 2020-11-16: How I failed to make LinkedIn fix their broken international domain URL parser.
- 2020-11-15: MLS: message layer security for better encrypted group chat.
- 2020-11-15: Charles proxy for web scraping.
- 2020-11-14: The making of a masterpiece: Bohemian Rhapsody. (YouTube)
- 2020-11-14: Python, the Full Monty: a tested semantics for the Python programming language.
- 2020-11-14: When 13.3 > 14.
- 2020-11-14: On the expressive power of programming languages.
- 2020-11-14: Warp: Improved JS performance in Firefox 83.
- 2020-11-14: We need less powerful languages.
- 2020-11-13: udp2raw-tunnel: UDP over encrypted fake TCP to bypass firewalls.
- 2020-11-13: Why TCP over TCP is a bad idea.
- 2020-11-12: Build your own gpg in Rust.
- 2020-11-12: Replication conflicts in PostgreSQL and how to deal with them.
- 2020-11-12: Propeller: a framework for post-link optimizations.
- 2020-11-12: AndroWish: run Tcl/Tk programs on Android.
- 2020-11-12: Full-text search performance since PostgreSQL 8.3.
- 2020-11-12: PostgreSQL observability: a diagram of views and functions for inspecting your database.
- 2020-11-12: 40ms bug: a missing writev, Nagle's algorithm, and delayed ACKs.
- 2020-11-12: BOLT: a post-link binary layout optimizer for speeding up large applications.
- 2020-11-12: Exploring PGO for the Rust compiler.
- 2020-11-11: Miniselect: practical and generic (sorted) selection algorithms.
- 2020-11-11: Undoing, fixing, or removing commits in git: choose your own adventure.
- 2020-11-11: What mother never told you about IBM VM service.
- 2020-11-10: Fast Flexible Paxos.
- 2020-11-09: Hegel: an advanced static type checker for JavaScript.
- 2020-11-09: Lox: a word that hasn't changed sound or meaning in 8,000 years.
- 2020-11-09: Turing incomplete languages.
- 2020-11-09: dnstap-receiver: a dnstap streams receiver in Python.
- 2020-11-09: Structured concurrency in C++.
- 2020-11-09: dog: a command-line DNS client.
- 2020-11-09: Towards Pijul 1.0.
- 2020-11-09: Parsing the infamous Japanese postal CSV.
- 2020-11-08: LLVM clang 12 support for amd64 micro-architecture levels.
- 2020-11-08: New amd64 micro-architecture levels.
- 2020-11-07: Go in production: what I learned 1 month later.
- 2020-11-07: vt52-fpga
- 2020-11-07: Kristian's interactive 3D printed Stargate with wormhole effect.
- 2020-11-06: Standing on our own two feet: Let's Encrypt trust anchor rollover.
- 2020-11-06: Exception safety in Rust: using transient droppers to prevent memory leaks.
- 2020-11-06: AMD Zen 3 Ryzen deep dive review.
- 2020-11-06: The elements of style: Unix as literature.
- 2020-11-05: Linear scan register allocation.
- 2020-11-05: Draft design for generic type parameters in Golang.
- 2020-11-05: UK's £55M MAST Upgrade fusion experiment (Mega Amp Spherical Tokamak) has achieved first plasma.
- 2020-11-05: A first look at the Erlang JIT.
- 2020-11-05: Notes on Paxos.
- 2020-11-04: BPF binaries: BTF, CO-RE, and the future of BPF perf tools.
- 2020-11-03: Eight months of NixOS.
- 2020-11-03: Hardware performance counter support (via rdpmc) in Rust.
- 2020-11-03: How we made our SaaS homepage cookie-free.
- 2020-11-03: Rust design-for-testability: a survey.
- 2020-11-02: Hyper-regional chippy traditions of Britain and Ireland.
- 2020-11-02: Two workers are quadratically better than one: modelling a queue with PRISM.
- 2020-11-02: Extreme bioinformatics debugging.
- 2020-11-02: Mac OS boot volume layout.
- 2020-11-01: NAT Slipstreaming: firewall bypass using SIP ALG.
- 2020-11-01: Flutter Web: a fractal of bad design.
- 2020-11-01: Using TLA+ to understand a real-world glibc bug.
- 2020-11-01: WordTsar: a Wordstar clone.
- 2020-11-01: WordPerfect for DOS on modern computers.
- 2020-10-31: Dijkstra: the man who carried computer science on his shoulders.
- 2020-10-30: 3 Gbps ethernet on the Raspberry Pi compute module.
- 2020-10-30: It's called Medium because it's neither rare nor well done.
- 2020-10-30: XPath injection issues are severely underrated.
- 2020-10-30: A12: advancing network transparency on the desktop.
- 2020-10-30: A tale of a build system bug. (ninja/gcc/Windows)
- 2020-10-30: Experience in production with Flask, Bottle, Tornado, and Twisted.
- 2020-10-30: Errol: an always correct method for printing floating-point numbers.
- 2020-10-30: Errol: binary floating-point to decimal string conversion algorithm.
- 2020-10-30: For complex applications (IDEs) Rust is as productive as Kotlin.
- 2020-10-30: Using a 3D printer "defect" to create a new quasi-textile.
- 2020-10-30: I hate GIS coordinate systems!
- 2020-10-29: SRI and Cambridge University release CHERI software stack for Arm Morello.
- 2020-10-29: The remarkable number 1/89 and the Fibonacci series.
- 2020-10-29: Scaling attacks to hide/spoof one image in another.
- 2020-10-28: Optimizing a join using LIKE by using PostgreSQL FTS instead.
- 2020-10-28: EDSAC 1951 (YouTube)
- 2020-10-28: The reverse tabnabbing vulnerability in HTML.
- 2020-10-28: Verona: a research programming language for concurrent ownership.
- 2020-10-27: Better performance with Envoy HTTP connection pooling for PHP applications at Wikipedia.
- 2020-10-27: Why was Rachel Whiteread's House demolished?
- 2020-10-27: plocate: a much faster locate.
- 2020-10-27: samurai: a ninja-compatible build tool written in C.
- 2020-10-27: OpenMPTCProuter uses multipath TCP (MPTCP) to aggregate multiple Internet connections with OpenWrt.
- 2020-10-27: Covenants, easements, and wayleaves: the hidden urban interfaces of the London Underground.
- 2020-10-27: Improving PostgreSQL connection scalability with faster snapshots.
- 2020-10-26: Standard ML in 2020.
- 2020-10-25: GAP: a system for computational discrete algebra.
- 2020-10-25: PARI/GP: a computer algebra system for fast computations in number theory.
- 2020-10-24: Efficient text editing on a PDP-10.
- 2020-10-24: Four dangerous animals of product development.
- 2020-10-24: A new map of the standard model of particle physics.
- 2020-10-24: Static single assignment for functional programmers.
- 2020-10-24: Rejuvenating autoconf.
- 2020-10-24: Ungrammar: a DSL for rust-analyzer's concrete syntax tree.
- 2020-10-24: Understanding static single assignment (SSA) form.
- 2020-10-24: Compiling with continuations, or without? Whatever.
- 2020-10-24: Compiling without continuations.
- 2020-10-23: RPKI secure BGP routing Q&A.
- 2020-10-23: Deprecating SHA-1 in OpenPGP.
- 2020-10-23: jacl: just another configuration language.
- 2020-10-23: Avoiding overload in AWS distributed systems by putting the smaller service in control.
- 2020-10-23: Better than JSON?
- 2020-10-23: How Apple is organized for innovation.
- 2020-10-23: cson: CoffeeScript object notation.
- 2020-10-23: StrictYAML.
- 2020-10-23: Journeying into XDP implementing DNS RRL.
- 2020-10-23: Debugging async generator errors in Rust.
- 2020-10-23: Private methods on a public trait in Rust.
- 2020-10-23: Inside Rust std::io::Error.
- 2020-10-22: Proving that 1 + 1 = 10 in Rust.
- 2020-10-22: A pitfall of Rust's move/copy/drop semantics and zeroing data.
- 2020-10-22: What's new in OAuth 2.1?
- 2020-10-22: Non-generic inner functions in Rust.
- 2020-10-22: The story behind Markdown.
- 2020-10-22: Nickel: better configuration for less, inspired by Nix.
- 2020-10-22: Let's build a high-performance fuzzer with GPUs!
- 2020-10-22: AWS NLBs and mixed up TCP connections.
- 2020-10-22: TPC-H performance since PostgreSQL 8.3.
- 2020-10-22: PEG: ambiguity, precision, and confusion.
- 2020-10-21: The asymptotic cost of address translation on memory access time.
- 2020-10-21: The TRIPS project: an explicit data graph execution (EDGE) processor.
- 2020-10-21: Roofline model of computer performance for HPC applications.
- 2020-10-21: Lezer: a parser system in JavaScript.
- 2020-10-21: The myth of RAM.
- 2020-10-21: A list of attempts to make Python faster.
- 2020-10-20: AWS and their billions of dollars of IPv4 addresses.
- 2020-10-20: Why mmap is faster than system calls.
- 2020-10-20: Validating UTF-8 in less than one instruction per byte.
- 2020-10-20: The surprising impact of medium-size texts on PostgreSQL performance.
- 2020-10-20: Lambda the penultimate / lambda to SKI, semantically.
- 2020-10-20: Binary lambda calculus.
- 2020-10-20: Assorted thoughts on Zig and Rust.
- 2020-10-20: Building a computer in Conway's Game of Life.
- 2020-10-19: Euler's formula: a complex guide.
- 2020-10-19: The Arm64 memory tagging extension in Linux.
- 2020-10-19: BlockQuicksort: avoiding branch mispredictions in Quicksort.
- 2020-10-19: ips4o: in-place parallel superscalar samplesort.
- 2020-10-19: The case for a learned sorting algorithm.
- 2020-10-19: MONOSPACE: a JavaScript demo in 1021 bytes.
- 2020-10-18: Free yourself from the Spotify desktop client with spotifyd.
- 2020-10-17: Keeping secrets: Diffie-Hellman and the NSA.
- 2020-10-17: What they don't tell you about demand paging in school.
- 2020-10-17: Building a 10BASE5 "Thick Ethernet" network.
- 2020-10-17: Cryptographic signing using ssh-keygen(1) with a FIDO authenticator.
- 2020-10-17: MyST: a markdown flavor and parser for Sphinx.
- 2020-10-16: So you want to build an embedded Linux system?
- 2020-10-16: The unreasonable effectiveness of quasirandom sequences.
- 2020-10-15: The fascinating influence of the Cyclone programming language.
- 2020-10-15: Optional parameters in Rust.
- 2020-10-15: Building the fastest RaptorQ (RFC6330) FEC codec in Rust.
- 2020-10-15: Unifying the technical interview.
- 2020-10-15: Improving security in s2n, Amazon's TLS implementation.
- 2020-10-14: Room-temperature superconductivity achieved for the first time (at high pressure between diamond anvils).
- 2020-10-14: libsixel: DEC terminal graphics.
- 2020-10-14: Improving Bluetooth audio quality on Linux.
- 2020-10-13: Applying union-find for real life performance wins.
- 2020-10-12: Building the mathematical library of the future with Lean.
- 2020-10-11: GPU-accelerated ODE solving in R with Julia.
- 2020-10-12: Overloading by return type in C++.
- 2020-10-11: Why we need a C-compatible Rust crate for bitfields.
- 2020-10-10: Crux: exhaustive symbolic testing for C, C++, and Rust.
- 2020-10-10: Alphora-style database diagramming.
- 2020-10-10: Asterisk.
- 2020-10-10: Progress report on Rust Cranelift backend.
- 2020-10-10: CSV parser benchmark game.
- 2020-10-10: xchg rax, rax; x64 Assembly for the advanced.
- 2020-10-10: Loading a CSV file at the speed limit of NVMe storage.
- 2020-10-08: The Eisel-Lemire string to double precision floating point conversion algorithm.
- 2020-10-08: OLTP performance since PostgreSQL 8.3.
- 2020-10-08: Using CTE to do a binary search of a large table with non-indexed correlated data in PostgreSQL.
- 2020-10-07: Notes on reviving and extending Marvin, a typeface for Visions magazine.
- 2020-10-07: zheap: reinvented PostgreSQL storage.
- 2020-10-07: The origin of the VM/370 time-sharing system.
- 2020-10-07: From its name, to its hazy origins, to its drug interactions, there's a lot going on with Grapefruit.
- 2020-10-07: USB3: why it's a bit harder than USB2.
- 2020-10-06: Q3 Linux touchpad like Macbook update.
- 2020-10-06: DOMPurify bypass: XSS via HTML namespace confusion.
- 2020-10-06: Telharmonium: the first significant electronic musical instrument.
- 2020-10-06: TIME for a WTF MySQL moment.
- 2020-10-06: From object algebras to tagless-final interpreters.
- 2020-10-06: Cyclone Scheme: a new R7RS compiler.
- 2020-10-06: Incompatible validation criteria for Ed25519.
- 2020-10-06: FAQs on aerosol transmission of COVID-19.
- 2020-10-06: s7: Scheme as an extension language for other applications.
- 2020-10-04: Type-level programming in Rust.
- 2020-10-04: Lambda calculus, Church numerals, and Graham's number.
- 2020-10-04: Revisiting a 'smaller Rust'.
- 2020-10-04: A future for debugging Rust.
- 2020-10-04: Drop order in Rust: it's tricky.
- 2020-10-04: Applying "make invalid states unrepresentable".
- 2020-10-04: How we ran a Unix-like OS (Xv6), on our home-built CPU, with our home-built C compiler.
- 2020-10-04: Dissecting Lemire's nearly divisionless random number generator.
- 2020-10-04: SaferNode: a Python script to isolate npm inside short-lived Docker containers.
- 2020-10-04: Tales from the science fiction bar-room.
- 2020-10-04: Saving space (basically) for free by re-ordering columns in PostgreSQL.
- 2020-10-04: Magic Wand Rechargeable teardown.
- 2020-10-04: A web of trust for npm.
- 2020-10-04: HOPL: an online historical encyclopaedia of programming languages.
- 2020-10-04: chibicc: a small C compiler.
- 2020-10-04: Lambda calculus diagrams.
- 2020-10-03: Computer science metanotation is a barrier to entry.
- 2020-10-03: System font typography on 8 bit micros.
- 2020-10-03: Falsehoods programmers believe about map coordinates.
- 2020-10-03: Compiler hardening and exploit mitigations for unsafe Rust.
- 2020-10-02: Toward an API for the real numbers: exact arithmetic with decidable equality comparisons.
- 2020-10-01: outflank-mailman: stop Mailman from breaking DKIM signatures.
- 2020-09-29: Rob Pike on colour blindness.
- 2020-09-28: FPspy: Spying on the floating point behavior of existing, unmodified scientific applications.
- 2020-09-28: The weight of buildings and the raising of Chicago.
- 2020-09-28: BBC Micro Elite source code and commentary.
- 2020-09-27: A typed, algebraic approach to parser combinators.
- 2020-09-27: Modular, composable, typed optimizations in the tagless-final style.
- 2020-09-26: Guided tour of Bunnie's Precursor motherboard.
- 2020-09-26: Techade quiz: A near-impossible guessing game of tech through the decades.
- 2020-09-25: A PEG parser for CPython.
- 2020-09-25: Using time travel to remotely debug faulty DRAM with Julia and rr.
- 2020-09-25: Finding a goroutine bug with TLA+.
- 2020-09-25: A pipeline made of airbags: live upgrades vs immutable infrastructure.
- 2020-09-24: Traits as an emergent feature of Julia.
- 2020-09-24: Bean Machine: a declarative probabilistic programming language for efficient programmable inference.
- 2020-09-24: How the CPython compiler works.
- 2020-09-24: Fast incremental compilation of Kotlin.
- 2020-09-24: Void in Haskell is a smell.
- 2020-09-24: Exploiting Tiny Tiny RSS.
- 2020-09-23: Delivering 45x faster percentiles using PostgreSQL, Citus, and t-digest.
- 2020-09-23: JuliaCon2020: Julia is production ready!
- 2020-09-23: Haskell's children: Rust, Idris, Julia.
- 2020-09-23: On YOLOsec and FOMOsec.
- 2020-09-22: Data and Reality, 2nd edition.
- 2020-09-21: Range: My least favorite Rust type.
- 2020-09-21: John Regehr's integers in C quiz.
- 2020-09-21: A new X.509 certificate chain validator for LibreSSL.
- 2020-09-21: Tail call optimization and debugging.
- 2020-09-21: A new backend for Cranelift: instruction selection.
- 2020-09-21: Speeding up C++ compilation.
- 2020-09-21: Dennis Ritchie's reflections on software research.
- 2020-09-20: Why not Rust?
- 2020-09-20: FreeBSD's Subversion to Git migration: Why?
- 2020-09-20: Taking MonetDB/e for a taxi ride.
- 2020-09-20: LLVM's getelementptr, by example.
- 2020-09-19: What's the fastest way to chill your beer?
- 2020-09-19: "Fake COTS" and the one-day rule.
- 2020-09-18: A Cuban numbers station cryptologic mystery.
- 2020-09-18: Supercomputing on Nitro in AWS cloud with Scalable Reliable Datagram (SRD).
- 2020-09-18: Surfaces vs airborne: what we know now about Covid-19 transmission.
- 2020-09-18: Taming nalgebra's Rustdoc.
- 2020-09-18: Let's Encrypt's new ECDSA root and intermediate certificates.
- 2020-09-17: DNS Flag Day 2020: what you need to know.
- 2020-09-17: Maximizing DNS qname minimization.
- 2020-09-17: Search and replace tricks with ripgrep.
- 2020-09-16: Efficient parallel and incremental parsing of practical context-free languages.
- 2020-09-16: The plot against Birmingham.
- 2020-09-16: How America became obsessed with dips, sauces, dressings, and "food lube".
- 2020-09-16: USB-C was supposed to simplify, but it's a total mess.
- 2020-09-16: The missing datacenter OS.
- 2020-09-16: Reinventing virtualization with the AWS Nitro System.
- 2020-09-16: Tips for PostgreSQL bulk data loading.
- 2020-09-16: A formalization and correctness proof of the CGOL language system / Pratt parser. (1975)
- 2020-09-16: Differentiable dithering with gradient descent.
- 2020-09-15: Which parsing approach?
- 2020-09-15: Keeping time at NIST.
- 2020-09-15: Debian-installer, mdadm configuration, and the bad blocks controversy.
- 2020-09-14: Creating high-quality PDF/A documents using LaTeX.
- 2020-09-14: What's so hard about PDF text extraction?
- 2020-09-13: Design out waste in household electrical goods.
- 2020-09-13: Diversity Explorer: ethnicity across England and Wales.
- 2020-09-12: How GitLab.com upgraded PostgreSQL.
- 2020-09-11: Getting MacOS style hotkeys working in GNU/Linux.
- 2020-09-10: Leonardo da Vinci's ingenious design for a self-supporting bridge.
- 2020-09-10: 5 most annoying website features I face as a blind person every single day.
- 2020-09-09: Hacking Ethernet out of FibreChannel cards.
- 2020-09-09: Loko Scheme: an optimizing R6RS Scheme compiler.
- 2020-09-08: An explainer on Ed25519 clamping.
- 2020-09-08: What we didn't get: science fiction technologies that remained fictional.
- 2020-09-07: How to speed up the Rust compiler one last time.
- 2020-09-07: Named parameters using designated initializers in C++20.
- 2020-09-07: The Capsule hash trie collections library for Java.
- 2020-09-06: Lessons from the GNOME patent troll incident.
- 2020-09-05: TOTP in 20 lines of Python.
- 2020-09-05: The origins of XXX as a FIXME comment marker.
- 2020-09-04: Some historical reflections on NSFNET.
- 2020-09-04: Don't forget: the plural of anecdote is data.
- 2020-09-04: Property testing and formal verification / symbolic execution in Rust with KLEE.
- 2020-09-03: A demonstrator’s guide to helmets.
- 2020-09-03: The femme’s guide to riot fashion: this season’s hottest looks for the discerning anarchist.
- 2020-09-02: Butler Lampson's updated and expanded hints and principles for computer system design.
- 2020-09-02: On modern hardware the min-max heap beats a binary heap.
- 2020-09-02: Write tracking for Nim.
- 2020-09-02: jsonptr: using the wuffs memory-safe, zero-allocation JSON decoder.
- 2020-09-02: The problem with C compatibility in C++.
- 2020-09-02: The wuffs programming language: wrangling untrusted file formats safely.
- 2020-09-01: Lunar: a Mac OS X utility to adjust the brightness of your external display.
- 2020-09-01: PostgreSQL 13: don't let replication slots kill your primary.
- 2020-09-01: This is not a sonic boom, it's a vapor cone.
- 2020-09-01: Taking a look at Gerät 32620: the machine that powered numerous number stations.
- 2020-09-01: Understanding the X.500 directory.
- 2020-09-01: How Arlo got injected into Ruby.
- 2020-08-31: Cracking Dlang Phobos pseudorandom UUIDs.
- 2020-08-31: WebAssembly reference types in Wasmtime.
- 2020-08-31: Why are there 5280 feet in a mile?
- 2020-08-31: Sum types in Julia and Rust.
- 2020-08-30: Python daemon ate my syslog message.
- 2020-08-30: contained.af CTF.
- 2020-08-29: WebAssembly troubles: WebAssembly is not a stack machine.
- 2020-08-29: Travel demand modeling: the broken algorithm that poisoned American transportation.
- 2020-08-28: Objective Rust.
- 2020-08-28: Finger trees explained anew, and slightly simplified.
- 2020-08-28: 100 years to solve an integral: a history of the Mercator projection and the integral of the secant.
- 2020-08-28: Rust-style futures in C with libuv.
- 2020-08-28: Using Microsoft Word with git and pandoc.
- 2020-08-27: PiSight: a Raspberry Pi inside an Apple iSight webcam.
- 2020-08-27: Making QUIC quicker with NIC offload.
- 2020-08-27: The design and implementation of BIND, a "Domain Names" resolver.
- 2020-08-27: The design and implementation of the Berkeley Internet Name Domain (BIND) servers.
- 2020-08-27: BIND: the Berkeley Internet Name Domain server.
- 2020-08-26: UMASH: a fast and universal enough hash.
- 2020-08-26: HTMLified C standard ISO/IEC 9899:2017.
- 2020-08-26: PCI Express retimers vs. redrivers: an eye-popping difference.
- 2020-08-25: Upgrading GitHub to Ruby 2.7.
- 2020-08-25: Functional programming in m4.
- 2020-08-25: Oracle to PostgreSQL: cursors and common table expressions.
- 2020-08-25: Signifier: a brutalist response to the 17th century Oxford Fell typefaces.
- 2020-08-25: Keeping CALM: when is distributed consistency easy?
- 2020-08-25: Updating the PostgreSQL root.crt file for TLS client auth.
- 2020-08-24: Writing a fuzzer test case generator in Rust for a programming language such as Wasm.
- 2020-08-24: Recent advances in IPv6 security: Addressing.
- 2020-08-24: BPF CO-RE: compile once, run everywhere for BPF portability.
- 2020-08-24: Draw your own fourier epicycles.
- 2020-08-24: Building resilient services at Amazon Prime Video with chaos engineering.
- 2020-08-24: Challenge to scientists: does your ten-year-old code still run?
- 2020-08-24: Here I stand, free: noexcept allocators and an inclusive C++ STL.
- 2020-08-24: Incident updates, interruptions and the 30 minute window.
- 2020-08-24: A clean start for the web?
- 2020-08-24: Javascript generators, meet XPath.
- 2020-08-24: The BLISS programming language: a history.
- 2020-08-24: Never run `python` in your downloads folder.
- 2020-08-23: As above, so below: Bare metal Rust generics.
- 2020-08-23: Five stages of accepting constructive mathematics.
- 2020-08-22: Mesh: a compacting memory allocator for C/C++.
- 2020-08-22: Understanding memory fragmentation in GHC Haskell.
- 2020-08-21: How NAT traversal works.
- 2020-08-21: Nyxt: an extensible keyboard-oriented web browser written in Common LISP.
- 2020-08-21: Why did Mozilla remove XUL add-ons from Firefox?
- 2020-08-21: Google Chromium's impact on root DNS traffic.
- 2020-08-21: Adding a microSD slot to a reMarkable tablet.
- 2020-08-21: ARX, Arthur and RISC OS.
- 2020-08-20: Code smell: concrete abstraction.
- 2020-08-20: How the Linux kernel starts on ARM32.
- 2020-08-20: Can't you just right click? Running unsigned code on Mac OS X.
- 2020-08-20: A deep dive into the official Docker image for Python.
- 2020-08-19: Leading-trim: a future CSS spec for better vertical spacing in digital typography.
- 2020-08-20: A documentation system: tutorials / howtos / reference / explanation.
- 2020-08-19: How to contact Google SRE by dropping a shell in Cloud SQL.
- 2020-08-19: Evaluating TCP BBRv2 on the Dropbox edge network.
- 2020-08-19: Contention adapting search tree: Erlang's new scalable ETS ordered set data structure.
- 2020-08-19: Open problems in robotics.
- 2020-08-19: Speeding up json parsing in Golang.
- 2020-08-19: Switching from i3 to Sway on Ubuntu 20.04.
- 2020-08-19: The case of the top secret iPod.
- 2020-08-18: The medieval university duopoly in England.
- 2020-08-18: How to break everything by fuzz testing.
- 2020-08-18: Fuzzing a C/C++ API with DeepState.
- 2020-08-18: Testing GNU coreutils with KLEE.
- 2020-08-18: Measuring the coverage achieved by symbolic execution.
- 2020-08-17: Using a Yubikey as a touchless, magic unlock key for Linux.
- 2020-08-17: Responsible and effective bugfinding.
- 2020-08-17: Proposed register-based Golang calling convention.
- 2020-08-17: A first look at IPv4 transfer market misuse.
- 2020-08-17: A 35-year-old bug in patch found during the 2.11BSD restoration project.
- 2020-08-16: The Gartner hype cycle is … hype.
- 2020-08-16: Error recovery with parser combinators, using Rust and nom.
- 2020-08-16: daScript: a high performance scripting language.
- 2020-08-15: How the Intel 8086 distributes power and clock signals.
- 2020-08-14: The optical mouse, and an architectural methodology for smart digital sensors. (Xerox PARC, 1981)
- 2020-08-14: Constructive vs predicative data types.
- 2020-08-14: Types as axioms, or: playing god with static types.
- 2020-08-14: DNS problems with conntrack and Kubernetes.
- 2020-08-14: Netgpu and the hazards of proprietary Linux kernel modules.
- 2020-08-14: The newspaper of the air: early experiments with radio facsimile.
- 2020-08-14: Mpemba effect: what conditions make hot water freeze faster than cold water?
- 2020-08-13: Rust does not have a stable ABI.
- 2020-08-13: Interactive HTML trees with no JavaScript and no CSS.
- 2020-08-13: Handles are the better pointers.
- 2020-08-13: A guide to contiguous data in Rust.
- 2020-08-12: Linux eBPF projects and documentation.
- 2020-08-12: Building a better Golang linker.
- 2020-08-11: Dorking: how to find anything on the web.
- 2020-08-11: Take a virtual tour of ORNL's supercomputer center.
- 2020-08-11: Exposing and circumventing China's censorship of TLS/1.3 ESNI.
- 2020-08-10: Surviving Rust async interfaces.
- 2020-08-10: The great American sci-fi utopia or dystopia? (Kim Stanley Robinson)
- 2020-08-10: 9 crappy paradoxes that shape nonprofit and philanthropy.
- 2020-08-09: UK radon maps.
- 2020-08-09: Tracking running processes on Linux.
- 2020-08-09: EdgeQL: we can do better than SQL.
- 2020-08-09: The ‘-ize' have it!
- 2020-08-08: A star went supernova in 1987. Where is it now?
- 2020-08-07: Hello! You've been referred here because you're wrong about section 230 of the Communications Decency Act.
- 2020-08-07: How hard is it to type-check your favorite language?
- 2020-08-07: After nearly a century, elusive CNO neutrinos from the Sun are finally detected.
- 2020-08-07: crush: a command line shell that is also a powerful modern programming language.
- 2020-08-07: Why shaving dulls even the sharpest of razors.
- 2020-08-07: Steve Crocker on the history of RFCs.
- 2020-08-06: lacc: a simple, self-hosting C89 compiler.
- 2020-08-06: The Myrddin programming language.
- 2020-08-06: cproc: a C11 compiler using QBE as a backend.
- 2020-08-06: A project to restore Interlisp-D to usability on modern OSes.
- 2020-08-06: Monads and intensionality: Lucid is not an abberation.
- 2020-08-06: Ten takeaways from ten years at Retraction Watch.
- 2020-08-05: TikTok and the Sorting Hat.
- 2020-08-05: What alternate reality games can teach us about QAnon.
- 2020-08-05: Myth and monolith: the Nine Elms Cold Store.
- 2020-08-04: Syntax changes in lambda expressions between C++11 and C++20.
- 2020-08-04: Swift type checking is undecidable.
- 2020-08-03: The UX of Lego interface panels.
- 2020-08-03: Lecture notes on static program analysis.
- 2020-08-03: Julia 1.5 release highlights.
- 2020-08-03: COVID-19: We need to talk about airborne transmission and ventilation.
- 2020-08-02: Low latency tuning guide for x86 Linux systems.
- 2020-08-02: Measuring linux performance: how to avoid typical mistakes.
- 2020-08-02: Rich: a Python library for rich text and beautiful formatting in the terminal.
- 2020-08-02: Measuring and examining TLS 1.3, IPv4, and IPv6 performance.
- 2020-08-02: Why are we using black box models in AI when we don't need to?
- 2020-08-02: How a cheese goes extinct.
- 2020-08-02: Time traveling in Haskell: how it works and how to use it.
- 2020-08-02: The lost history of PReP: Windows NT 3.5x on PowerPC and the RS/6000 40p.
- 2020-08-02: GPU.js: GPU accelerated JavaScript.
- 2020-08-02: Hacking up a fix for the broken AppleTalk kernel module in Linux 5.1 and newer.
- 2020-08-02: Homemade pasta.
- 2020-08-01: How to harvest credit card numbers and passwords from lots of web sites.
- 2020-08-01: The politics of optimism.
- 2020-08-01: Compressing authority with cryptographic accumulators.
- 2020-08-01: WordSafety: check a name for unwanted meanings in foreign languages.
- 2020-08-01: Defragmenting DNS: determining the optimal maximum UDP response size for DNS.
- 2020-07-31: Can I use CSS and HTML in email?
- 2020-07-31: Why are plants green? To reduce the noise in photosynthesis.
- 2020-07-31: Apple emails reveal internal debate on right to repair.
- 2020-07-30: How Dropbox migrated from Nginx to Envoy.
- 2020-07-30: Solving the expiring. X.509 root CA certificate-mageddon, partly at least.
- 2020-07-30: Parallel stream processing with Rayon in Rust.
- 2020-07-30: Refactoring the FreeBSD kernel with Checked C.
- 2020-07-30: Lockless algorithms for mere mortals?
- 2020-07-30: If language began in the hands, why did it ever leave?
- 2020-07-30: Sizedness in Rust.
- 2020-07-30: An introduction to data oriented design with Rust.
- 2020-07-30: Speculative compilation in WebKit JavaScriptCore.
- 2020-07-30: Pluto's dark side spills its secrets, including hints of a hidden ocean.
- 2020-07-30: PostgreSQL 9.3's powerful new join type: LATERAL.
- 2020-07-30: Some SQL tricks from an Application DBA.
- 2020-07-30: RBS type signature files in Ruby 3.
- 2020-07-29: Unicode normalization in PostgreSQL 13.
- 2020-07-29: In October 1953, Paul Niquette coined the word ‘software'.
- 2020-07-29: Historic Usenet archive is disappearing from Google Groups.
- 2020-07-28: The inescapable whiteness of Avatar: The Legend of Korra, and its uncomfortable implications.
- 2020-07-28: DINR2020: DNS and Internet Naming Research Directions workshop.
- 2020-07-28: Why inter-domain multicast now makes sense.
- 2020-07-28: When Unix learned to reboot(2).
- 2020-07-28: Mapping a universe of open source software: the Nixpkgs dependency graph.
- 2020-07-27: Can applications recover from fsync() failures?
- 2020-07-27: Apache Arrow and the 10 things I hate about pandas.
- 2020-07-27: What is Apache Arrow?
- 2020-07-27: Highlights from git 2.28.
- 2020-07-27: Fanout and latency percentiles in distributed systems.
- 2020-07-27: Monads and mom.
- 2020-07-27: remake: GNU make with enhanced tracing, error reporting, debugging, profiling and more.
- 2020-07-27: Compiling with a sea of nodes.
- 2020-07-27: Should I block ICMP?
- 2020-07-27: CVE-2020-13777 GnuTLS passive plaintext recovery vulnerability.
- 2020-07-26: Preliminary benchmarking results for a Haskell I/O manager backend based on io_uring.
- 2020-07-26: Colorize your CLI.
- 2020-07-26: Corecursion and coinduction: what they are and how they relate to recursion and induction.
- 2020-07-26: The history, status, and future of FPGAs.
- 2020-07-26: Why people tend to appreciate men’s humor so much more than women’s.
- 2020-07-25: Cryptography is not magic.
- 2020-07-25: Bloom filters debunked: dispelling 30 years of bad math with Coq!
- 2020-07-24: Meritocracy is not only false, it’s bad for you.
- 2020-07-24: Shadow attacks: hiding and replacing content in signed PDFs.
- 2020-07-24: TechEmpower web framework benchmarks.
- 2020-07-24: Cold showers on overhyped topics in computer science.
- 2020-07-24: Demystifying MLsub: the simple essence of algebraic subtyping.
- 2020-07-23: Buzzy: dependency management for C.
- 2020-07-23: Why is CSS the way it is?
- 2020-07-23: New features in gnuplot 5.4.
- 2020-07-22: MineSweeper implemented in CSS and HTML and no JavaScript.
- 2020-07-23: Exploring Algol 68 in the 21st century.
- 2020-07-22: How to check the status of Rust features.
- 2020-07-22: caniuse.rs: Rust feature search.
- 2020-07-22: Next steps for single ownership and RAII. (C++/Vale/Rust)
- 2020-07-21: UTN #39: bidi brackets for dummies.
- 2020-07-21: The null process.
- 2020-07-21: Essays on programming I think about a lot.
- 2020-07-21: Lisp: the many faces of an undying programming language.
- 2020-07-21: An explanation of Rust's module system.
- 2020-07-21: Syntax highlighting is a waste of an information channel.
- 2020-07-20: Certificate Transparency: a bird's-eye view.
- 2020-07-20: Ireland donates its COVID tracker app to Linux Foundation.
- 2020-07-20: The quest for very wide outlines: optimized GPU silhouettes.
- 2020-07-20: Three architectures for a responsive IDE.
- 2020-07-20: Journeying into XDP (express data path) for in-kernel eBPF DNS acceleration.
- 2020-07-19: How Newton's Philosophiæ Naturalis Principia Mathematica came to be published.
- 2020-07-19: The cpio trailer problem.
- 2020-07-17: Repurposing FPGA-based products as development kits.
- 2020-07-17: Unicode for Mayan hieroglyphs.
- 2020-07-17: Straightened trees.
- 2020-07-17: The impact of Heartbleed on OpenSSL's development practices.
- 2020-07-17: DDR5 memory specification released.
- 2020-07-16: Two beautiful Rust programs.
- 2020-07-16: Why even unused data needs to be valid in Rust.
- 2020-07-16: Shipping const generics for Rust in 2020.
- 2020-07-16: Hacking Reolink IP cameras for fun and profit.
- 2020-07-16: Python pickle's nine flaws.
- 2020-07-16: Patricia Crowther inspired one of the first hit video games by mapping the world’s longest cave.
- 2020-07-16: Back into FreeBSD's wireless stack and 802.11ac.
- 2020-07-16: IPv6 and the DNS.
- 2020-07-16: What's new in Lua 5.4.
- 2020-07-16: Lezer: a JavaScript parser generator for the CodeMirror 6 editor.
- 2020-07-16: Introducing the GitHub availability report.
- 2020-07-16: Systems Performance: Enterprise and the Cloud, 2nd Edition.
- 2020-07-15: PgTyped: raw SQL in TypeScript with guaranteed type-safety.
- 2020-07-15: Rewriting FORTRAN software in Rust.
- 2020-07-14: In search of 2.11BSD, as originally released.
- 2020-07-14: MessagePack vs CBOR (RFC7049).
- 2020-07-14: SIGred: exploiting a 17 year-old bug in Windows DNS servers.
- 2020-07-14: Etcd, or, why modern software makes me sad.
- 2020-07-14: How Futhark implements array bounds checking on the GPU.
- 2020-07-14: SSSE3 fast popcount.
- 2020-07-14: The GDPR explained by Americans.
- 2020-07-14: Understanding the F5 Networks BIG-IP remote code execution vulnerability CVE-2020-5902.
- 2020-07-14: Color e-ink displays are arriving soon in ebook and e-note devices.
- 2020-07-14: Why are LED indicator lights (especially blue ones) so annoying?
- 2020-07-14: Too many objects: Reducing memory overhead from Python instances.
- 2020-07-14: Making system(3) and popen(3) use posix_spawn(3) on NetBSD.
- 2020-07-13: A PostgreSQL developer's .psqlrc
- 2020-07-13: pgx: build PostgreSQL extensions with Rust.
- 2020-07-13: Fuzzing rumpkernel syscalls.
- 2020-07-13: Optimizations in C++ compilers: a practical journey.
- 2020-07-13: The rectangle rule for code formatting style.
- 2020-07-13: The computing demands of deep learning are so great that progress is stalling.
- 2020-07-13: ARM64 popcount in Golang and assembler.
- 2020-07-13: ELF statifier: create a static executable from a binary and its libraries.
- 2020-07-12: When master/slave does not make sense.
- 2020-07-12: sed-bin: a sed to C translator written in sed.
- 2020-07-12: Xerox 48-bit absolute internet and Ethernet host numbers. (1981)
- 2020-07-12: Land of monopolists: private equity 'roll-ups' hit virtually everything.
- 2020-07-12: Infrastructure: our cyborg collective body, ourselves.
- 2020-07-12: When SimCity got serious: the story of Maxis Business Simulations and SimRefinery.
- 2020-07-11: mbeddr: integrated and extensible languages for embedded software, plus an IDE.
- 2020-07-11: The Frink is good, the unit is evil.
- 2020-07-10: A history of Usenet and FidoNet.
- 2020-07-09: The Prancing Pony vending machine at SAIL.
- 2020-07-09: The top types any and unknown in TypeScript.
- 2020-07-09: C++ hashmaps benchmarks.
- 2020-07-09: The "smol" Rust async runtime.
- 2020-07-09: Sunrise / sunset algorithm.
- 2020-07-09: Low accuracy solar position equations.
- 2020-07-09: FPGA softcore SoC shootout.
- 2020-07-08: GNU: a heuristic for bad cryptography.
- 2020-07-08: cwrap: testing Samba (or your full software stack) on a single machine.
- 2020-07-08: Symbolic execution with SymCC: don't interpret, compile!
- 2020-07-08: yubikey-agent: a seamless ssh-agent for YubiKeys.
- 2020-07-08: ip2unix: turn IP sockets into Unix domain sockets.
- 2020-07-08: Tech confronts its use of the labels ‘master’ and ‘slave’.
- 2020-07-07: Google Common Lisp style guide.
- 2020-07-07: The Pyret Code: a rationale for the Pyret programming language.
- 2020-07-07: Division by zero in type theory: a FAQ.
- 2020-07-07: Statically sized higher-kinded polymorphism.
- 2020-07-07: An autoscaling-related outage at Slack.
- 2020-07-07: Don't Panic! Better, fewer, syntax errors for LR parsers.
- 2020-07-07: 1:60 scale model of a Boeing 777, made entirely from manila folders.
- 2020-07-06: Small strings in Rust.
- 2020-07-06: Licklider's memorandum for members and affiliates of the intergalactic computer network. (1963)
- 2020-07-06: Behind the scenes at the Marmite factory in Burton-on-Trent.
- 2020-07-06: UASP makes Raspberry Pi 4 disk IO 50% faster.
- 2020-07-04: Noisia: a harmful workload generator for PostgreSQL.
- 2020-07-04: Websites that look like desktop GUIs.
- 2020-07-04: Many newsrooms are now capitalizing the B in Black. Here are some of the people who made that happen.
- 2020-07-04: Hamilton on film now is a very different experience than the Broadway show was then.
- 2020-07-04: The unplanned impact of mathematics.
- 2020-07-03: Code only says what it does.
- 2020-07-03: BLOB storage in PostgreSQL.
- 2020-07-02: Encrypted DNS support in iOS 14 and macOS 11.
- 2020-07-02: The alias method for efficiently sampling from a discrete probability distribution.
- 2020-07-02: Weighted round robin / weighted random integers with the golden ratio low discrepancy sequence.
- 2020-07-02: On the closing of Living Computers: Museum+Labs.
- 2020-07-02: Generics for Golang.
- 2020-07-02: Taking over Azure DevOps accounts with 1 click using a subdomain takeover.
- 2020-07-01: Implementing the exponential function.
- 2020-07-01: Complete spatial safety for C and C++ using CHERI capabilities.
- 2020-07-01: Join strategies and performance in PostgreSQL.
- 2020-07-01: Inside Apple Lightning.
- 2020-07-01: Spies, lies, and stonewalling: what it’s like to report on Facebook.
- 2020-07-01: The ARM Morello board: porting experimental capability extensions from CHERI-MIPS.
- 2020-07-01: Getting to the bottom of Noether's theorem.
- 2020-07-01: Raspberry Pi 4 PCIe bridge "chip".
- 2020-07-01: Rendering multimedia in pure C.
- 2020-07-01: What is Zig's “colorblind” async/await?
- 2020-07-01: What is the Scudo hardened allocator? (used by LLVM sanitizers and Android)
- 2020-06-30: Argdown: A simple syntax for complex argumentation.
- 2020-06-30: What is prototype pollution in JavaScript?
- 2020-06-30: Why aren't regular expressions a lingua franca? An empirical study of re-use and portability.
- 2020-06-30: To what does the harmonic series converge? (in IEEE754 floating point)
- 2020-06-29: A few more reasons Rust compiles slowly.
- 2020-06-29: Why birds can fly over Mount Everest.
- 2020-06-29: Understand Wi-Fi 4/5/6/6E (802.11 n/ac/ax).
- 2020-06-29: Minkowski asteroids.
- 2020-06-28: Whither chroot?
- 2020-06-28: Roy Fielding's misappropriated REST dissertation.
- 2020-06-28: Property-based testing in Rust with Proptest.
- 2020-06-28: Implementing a type-safe printf in Rust.
- 2020-06-28: String formatting is unreasonably expensive for embedded Rust.
- 2020-06-28: ELF: better symbol lookup via DT_GNU_HASH.
- 2020-06-27: Examining ARM vs x86 memory models with Rust.
- 2020-06-25: World capitals Voronoi map.
- 2020-06-25: Implementations for Gray code encoding and decoding.
- 2020-06-25: Query-based compiler architectures.
- 2020-06-25: Zealandia: Earth's 8th continent.
- 2020-06-24: Exploiting an Envoy http proxy heap vulnerability.
- 2020-06-24: Faster integer parsing.
- 2020-06-24: The largest city in each 10x10 degree latitude/longitude box.
- 2020-06-24: Iceland's CO2 emissions could be reduced by 30% by replacing carbon electrodes in aluminium smelters.
- 2020-06-24: Control theory for fun and profit.
- 2020-06-24: Path building vs path verifying X.509 certificate validation implementation showdown.
- 2020-06-24: Incommensurability: the structure of a programming language revolution.
- 2020-06-24: What I've learnt so far about writing research papers.
- 2020-06-24: Indexing JSONB columns in PostgreSQL.
- 2020-06-24: Announcing Perl 7: it's just Perl 5 with more modern defaults.
- 2020-06-24: GRIN: LLVM-based whole program optimizer for lazy and strict functional languages.
- 2020-06-24: Transport for London's impossible finances during the pandemic.
- 2020-06-23: Is WebP really better than JPEG?
- 2020-06-23: Oilpan: high-performance garbage collection for C++ in V8.
- 2020-06-23: Cheap tricks for high-performance Rust.
- 2020-06-23: Being glue.
- 2020-06-23: Ego graphs and the Google ‘vs' trick.
- 2020-06-23: Stretching the Commodore 64 palette.
- 2020-06-23: Fujitsu's Fugaku and Arm A64FX in the fastest supercomputer at 415 petaFLOPs.
- 2020-06-23: Rust's huge compilation units.
- 2020-06-22: The archetype of a message-passing bug in Rust.
- 2020-06-22: Measuring route origin validation.
- 2020-06-22: Maersk, notPetya, and me.
- 2020-06-20: Why you hate contemporary architecture.
- 2020-06-20: Everything I've learned about solar storm risk and EMP attacks.
- 2020-06-20: Discovering Dennis Ritchie's lost dissertation.
- 2020-06-19: Memory consistency models: a tutorial.
- 2020-06-19: A concise guide to the Golang generics draft design.
- 2020-06-19: Linear types for Haskell are merged into GHC.
- 2020-06-19: Errors in Rust: a deep dive.
- 2020-06-19: The Go+ language for data science.
- 2020-06-19: poica: algebraic data types with pattern matching and type introspection for C.
- 2020-06-18: Consistency models for concurrent and distributed systems.
- 2020-06-18: The Apollo 11 lunar ranging experiment at the Lick Observatory.
- 2020-06-18: The magnetic amplifier: a lost technology of the 1950s.
- 2020-06-17: Oracle to PostgreSQL: basic architecture.
- 2020-06-17: TERF wars: why transphobia has no place in feminism.
- 2020-06-17: Composite data type performance issues in PostgreSQL.
- 2020-06-16: The next step for generics in Golang.
- 2020-06-16: How browsers work: behind the scenes of modern web browsers.
- 2020-06-16: Understanding user management in PgBouncer.
- 2020-06-16: Generics and compile time in Rust.
- 2020-06-16: Intel's port 7 AGU blunder.
- 2020-06-15: Dumbindent: because 93% of the time was spent in clang-format.
- 2020-06-15: The Postgres and Illustra codelines.
- 2020-06-15: Unix® certified products.
- 2020-06-15: Looking back at Postgres.
- 2020-06-15: Guix further reduces bootstrap seed to 60MB.
- 2020-06-14: META II: a syntax-oriented compiler writing language. (1964)
- 2020-06-14: ACM HOPL IV proceedings.
- 2020-06-14: Intel vs AWS Graviton ARM performance for MinIO S3-compatible object storage.
- 2020-06-14: The origins of Objective-C at PPI/Stepstone and its evolution at NeXT.
- 2020-06-14: Fast 2D rendering on GPU.
- 2020-06-13: fortraith: evaluate Forth at compile time using Rust traits.
- 2020-06-13: Bugs found in database management systems with SQLancer.
- 2020-06-13: Bicycle geometry terminology.
- 2020-06-12: Event Tracing for Windows: the worst API ever made.
- 2020-06-12: The story of tail call optimization in Rust.
- 2020-06-12: Jepsen: PostgreSQL 12.3.
- 2020-06-12: How to implement search-by-colour using Color Thief and PostgreSQL.
- 2020-06-12: Async Python is not faster.
- 2020-06-12: Memory-safety challenge considered solved? An empirical study of Rust CVEs.
- 2020-06-12: V8's RegExp engine in SpiderMonkey.
- 2020-06-12: Bringing my Emacs from the past.
- 2020-06-12: Graph and tree traversals in Rust.
- 2020-06-12: In search of the original Fortran compiler.
- 2020-06-12: Essential and relevant: a unit test balancing act.
- 2020-06-12: A history of the LISP 2 project.
- 2020-06-11: Unicode security considerations.
- 2020-06-11: Merkle trees and build systems with OSTree and ninja.
Tony Finch is
<dot@dotat.at>