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
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
<<
2020
>>
- 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.
- 2020-06-11: Flat UI elements attract less attention and cause uncertainty.
- 2020-06-11: Speeding up a Git monorepo.
- 2020-06-11: Global kernel locks in Mac OS X APFS.
- 2020-06-08: Failover replication slots for PostgreSQL.
- 2020-06-08: Bifrost meets GNOME: Onward and upward to zero graphics blobs.
- 2020-06-08: Getting hands-on with io_uring using Golang.
- 2020-06-08: The pain points of Haskell: a practical summary.
- 2020-06-06: USB-C is still a mess.
- 2020-06-06: Every Jurassic Park dinosaur illustrated with modern science.
- 2020-06-06: How to organize your Rust tests.
- 2020-06-05: printf-tac-toe, and a guide to printf-oriented programming.
- 2020-06-05: Featherweight Golang.
- 2020-06-04: Modern router architecture and IPv6.
- 2020-06-04: Overcoming the challenges of IPv6 support in BIND.
- 2020-06-03: Testing Rust with manual coverage marks.
- 2020-06-03: Autovectorization for AVX and AVX2 in Rust.
- 2020-06-03: Fuzzing Sequoia-PGP.
- 2020-06-03: Programming Servo: integrating streams.
- 2020-06-03: Drawing a Sierpiński triangle with recursive SQL and SVG.
- 2020-06-03: Locks in PostgreSQL.
- 2020-06-03: Removing PostgreSQL bottlenecks caused by high traffic.
- 2020-06-03: Software development as advanced damage control.
- 2020-06-03: The rise and fall of commercial Smalltalk.
- 2020-06-03: A Smalltalk 80 implementation and tools.
- 2020-06-03: A Kea developer's take on IPv6 and DHCP.
- 2020-06-02: Die analysis of the 8087 math coprocessor's fast bit shifter.
- 2020-06-02: IPv6 and Rust.
- 2020-06-02: Book review: the origin of consciousness in the breakdown of the bicameral mind.
- 2020-05-31: Hoare's rebuttal and bubble sort's comeback: a fast quicksort.
- 2020-05-31: List of well-known web sites that port scan their visitors.
- 2020-05-29: The radix 2^51 trick.
- 2020-05-29: Algol 60 implementation. (1964)
- 2020-05-29: Oxidizing the technical interview.
- 2020-05-29: 40th anniversary of uuencode.
- 2020-05-28: What science can tell us about C and C++'s security.
- 2020-05-27: ISO 7000 graphical symbols for use on equipment.
- 2020-05-27: What is FETCH FIRST WITH TIES in PostgreSQL 13?
- 2020-05-27: PostgreSQL tips for optimizing Django and Python performance.
- 2020-05-27: PostgreSQL EXPLAIN ANALYZE may be lying to you.
- 2020-05-27: How to kill a dinosaur in 10 minutes.
- 2020-05-27: Random worldbuilding: the nation in history.
- 2020-05-27: macOS 10.15 Catalina: slow by design.
- 2020-05-27: History of UNIX manpages.
- 2020-05-27: eBay port scans visitors' computers for remote access programs.
- 2020-05-27: By the Bluebook implementation of Smalltalk-80.
- 2020-05-27: C++20: the unspoken features.
- 2020-05-27: Ancient Egyptian coffins and mystery of ‘black goo'.
- 2020-05-26: Who says C is simple?
- 2020-05-26: Coolest features of non-Java JVM languages.
- 2020-05-26: How Internet communities function.
- 2020-05-26: Science fiction timeline of inventions.
- 2020-05-26: Bloaty McBloatface: a size profiler for binaries.
- 2020-05-26: Using ASDL to describe ASTs in CPython.
- 2020-05-26: Datamash: command-line computation on tabular files.
- 2020-05-26: Adventures of porting MUSL libc to Sony PS4 BSD.
- 2020-05-26: Why is Idris 2 so much faster than Idris 1?
- 2020-05-25: libfirm/cparser: C99 parser and frontend.
- 2020-05-25: 7 scandalous weird old things about the C preprocessor.
- 2020-05-25: std::format in C++20.
- 2020-05-23: DuckDB: an embeddable analytical SQL database.
- 2020-05-23: Porting BSD to GCC and ANSI C. (1988)
- 2020-05-21: Why upgrade PostgreSQL?
- 2020-05-21: Three bugs in the Golang MySQL driver.
- 2020-05-20: A guide to global data in Rust.
- 2020-05-20: The next few years for Rust Analyzer.
- 2020-05-20: Taking advantage of auto-vectorization in Rust.
- 2020-05-20: Structuring and handling errors in Rust.
- 2020-05-20: 15 years later: remote code execution in qmail.
- 2020-05-20: The death of corporate research labs.
- 2020-05-20: Lisa Piccirillo solved a decades-old Conway knot problem.
- 2020-05-20: A KVM host in a few lines of code.
- 2020-05-19: Computerized flight booking: a technology that changed air travel.
- 2020-05-19: Does the QUIC handshake require compression to be fast?
- 2020-05-15: What's the difference between a Rust char and a Go rune? Unicode scalar values vs code points.
- 2020-05-15: Rust verification tools.
- 2020-05-15: Notes on io-uring.
- 2020-05-15: time_it! a case study in Rust macros.
- 2020-05-15: GPU architecture resources.
- 2020-05-15: Writing a Wayland compositor in Rust.
- 2020-05-15: Yak shaving #ifdef-style conditional compilation in Rust.
- 2020-05-15: Rust closures in FFI.
- 2020-05-15: Building an ASN1 codec with the Rust FFI.
- 2020-05-15: Five years of Rust.
- 2020-05-14: Differential testing for software (such as compilers).
- 2020-05-14: Bosque: a TypeScript-like programming language that compiles to native code.
- 2020-05-14: Typesetting Markdown with Pandoc, Lua, and ConTeXt.
- 2020-05-14: Hardware store elimination.
- 2020-05-14: This word does not exist.
- 2020-05-14: Why do dragons have eyes on the sides of their heads?
- 2020-05-14: Deno 1.0: TypeScript and v8 on the command line, in Rust.
- 2020-05-13: PostgreSQL now() vs. 'NOW'::timestamp vs. clock_timestamp().
- 2020-05-13: The case of the missing DNS packets.
- 2020-05-13: Why AES-GCM sucks.
- 2020-05-13: A no_std Rust binary.
- 2020-05-12: The success and failure of the Ninja build system.
- 2020-05-12: The science of ginger milk curd.
- 2020-05-12: Confessions of Marcus Hutchins, the hacker who killed WannaCry.
- 2020-05-09: Using integer linear programming to solve complex logic.
- 2020-05-09: The original cookie specification from 1997 was GDPR compliant.
- 2020-05-11: John Conway's FRACTRAN, a ridiculous yet surprisingly deep language.
- 2020-05-10: Ensmallening Go binaries by prohibiting comparisons.
- 2020-05-06: Rules for writers.
- 2020-05-06: Cheating higher ranked types with traits in Rust.
- 2020-05-06: Take care editing bash scripts.
- 2020-05-05: A map of trees in London.
- 2020-05-04: Backup manifests and pg_verifybackup in PostgreSQL 13.
- 2020-05-04: Lessons learned improving RPKI.
- 2020-05-04: How to read UTF-8 passwords on the Windows console.
- 2020-05-04: 7 things that could be improved in PostgreSQL.
- 2020-05-04: Oracle vs PostgreSQL: a first glance.
- 2020-05-04: Bit twiddling hacks: check for borrows in bitwise operations.
- 2020-05-03: Fairphone and /e/ team up to build open source, Google-free, sustainable smartphone.
- 2020-05-03: Some medium-hard data analyst SQL interview questions.
- 2020-05-02: Psychic paper: an iOS entitlement XML plist parsing bug.
- 2020-05-02: Concurrent hash tables: fast and general?!
- 2020-05-02: An embedded Rust pattern: zero sized references.
- 2020-05-01: Notes on writing parsers in Rust.
- 2020-05-01: Disabling Snaps in Ubuntu 20.04.
- 2020-04-30: Game of Life in 32 bytes.
- 2020-04-30: Announcing the SourceHut project hub.
- 2020-04-30: HashiCorp Vault is overhyped, and Mozilla SOPS with KMS and git is underrated.
- 2020-04-30: Troubleshooting systemd with SystemTap.
- 2020-04-29: Why strace doesn't work in Docker.
- 2020-04-29: Reducing the size of a Rust GStreamer plugin.
- 2020-04-29: A collection of weird debugging stories.
- 2020-04-29: CSS for i18n.
- 2020-04-29: Postgres.app: an easy Mac OS installer for PostgreSQL.
- 2020-04-29: Paxosmon: gotta consensus them all!
- 2020-04-28: The many flavours of the arcane SQL MERGE statement.
- 2020-04-28: A warm welcome to ASN.1 and DER.
- 2020-04-28: Paxos vs Raft: have we reached consensus on distributed consensus?
- 2020-04-27: First release of rust-analyzer.
- 2020-04-27: Towards Sequoia PGP v1.0.
- 2020-04-27: For better videoconferencing at home on lousy links.
- 2020-04-27: TEMPEST@Home: finding radio frequency side channels.
- 2020-04-27: Byrne's Euclid.
- 2020-04-26: Teleforking a process onto a different computer!
- 2020-04-25: Numerous ways to say "thousand years" in a scientific paper.
- 2020-04-25: Myths about USB multi-key rollover and how USB HID works.
- 2020-04-23: Incremental regular expressions.
- 2020-04-23: From Pratt parsing to the Dijkstra shunting yard.
- 2020-04-23: Better debug stack fixing for Firefox using Rust.
- 2020-04-22: Full text search in milliseconds with Rails and PostgreSQL, without triggers.
- 2020-04-22: Unicode technical note 27: known anomalies in Unicode character names.
- 2020-04-22: Outsourcing reduces productivity.
- 2020-04-22: Things I wished more developers knew about databases.
- 2020-04-22: Linux kernel lockdown, integrity, and confidentiality.
- 2020-04-21: The chairs of Blake's 7.
- 2020-04-21: herbstluftwm: a manual tiling window manager for X11.
- 2020-04-21: OAuth2 best practices cheat sheet.
Tony Finch is
<dot@dotat.at>