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
<<
2019
>>
- 2019-12-31: The university is a ticking time bomb.
- 2019-12-31: The old Internet died and we watched and did nothing.
- 2019-12-31: Hard work and success.
- 2019-12-31: CPU introspection: Intel load port snooping.
- 2019-12-31: Reducing metadata leakage from encrypted files with PURBs.
- 2019-12-31: Refactoring with defunctionalization: everybody does it, nobody talks about it.
- 2019-12-30: A few comments on the `age` encryption tool.
- 2019-12-30: Too much crypto: scientific selection of the number of rounds for symmetric primitives.
- 2019-12-30: Scaling React server-side rendering.
- 2019-12-29: DIY ‘meta clock' of 24 analog clocks.
- 2019-12-29: Why are my Golang executable files so large?
- 2019-12-29: Apple Scorpius CPU architectural specification. (1989)
- 2019-12-29: The ultimate Acorn Archimedes talk.
- 2019-12-29: Google's monopoly is stifling free software.
- 2019-12-28: rage: a Rust implementation of `age` file encryption.
- 2019-12-28: A desperate plea for a Free Software alternative to Aspera.
- 2019-12-27: Async exceptions in Haskell, and Rust.
- 2019-12-27: Writing a seqlock in Rust.
- 2019-12-27: Streams concurrency with async-std in Rust.
- 2019-12-27: Testing for no_std compatibility in Rust crates.
- 2019-12-27: Betrusted: can we build trustable hardware?
- 2019-12-27: Tony Brooker and the Atlas Compiler Compiler.
- 2019-12-27: Source code linking in C2Rust: merging C headers into Rust modules.
- 2019-12-26: LEGO block structures as a sub-kelvin thermal insulator.
- 2019-12-25: Gameslab: an FPGA-powered handheld game console.
- 2019-12-24: Flattening quadratic Béziers.
- 2019-12-24: SOICbite: a program/debug connector for an SOIC test clip.
- 2019-12-24: A business card that runs Linux.
- 2019-12-24: Now you see it, now you don't: a large-scale analysis of early domain deletions.
- 2019-12-24: The shitty add-on standard v1.69bis for electronic con badges.
- 2019-12-24: In praise of property-based testing.
- 2019-12-24: Implementing WebGPU in Gecko.
- 2019-12-24: What broke the bank: the failed TSB IT migration.
- 2019-12-22: Winter Solstice, Camelot Station.
- 2019-12-20: Bisecting Rust compiler regressions with cargo-bisect-rustc.
- 2019-12-20: The common Rust traits.
- 2019-12-20: Encoding animated GIFs into pure CSS.
- 2019-12-20: On Linux's random number generator.
- 2019-12-20: A progress update on Game of Trees, an alternative git implementation.
- 2019-12-20: The use of the word ‘robust' to describe software in UK law.
- 2019-12-20: Xor filters are faster and smaller than Bloom filters and cuckoo filters.
- 2019-12-19: The Atlas / Titan story.
- 2019-12-19: Google's dangerous monopoly-based foreign policy.
- 2019-12-19: The curious case of the table-locking UPDATE query on PostgreSQL.
- 2019-12-19: Eller's line-at-a-time maze drawing algorithm.
- 2019-12-18: Glush: a robust, human readable, top-down parser compiler.
- 2019-12-18: Stop worrying about blocking: Rust's new async-std runtime, inspired by Golang.
- 2019-12-18: Type families in Typescript.
- 2019-12-18: Don't use booleans.
- 2019-12-17: A letter from Gary Larson about The Far Side website.
- 2019-12-17: FizzBuzz at compile time using C++ constexpr.
- 2019-12-17: Runtime support for multicore Haskell: a retrospective.
- 2019-12-17: Hacking GitHub with Unicode's dotless 'i'.
- 2019-12-17: Superdeterminism: The path we didn't take.
- 2019-12-16: A new cycle-stepped 6502 CPU emulator.
- 2019-12-17: Building a search engine from scratch.
- 2019-12-17: The architecture of a large-scale web search engine, circa 2019.
- 2019-12-16: The SQL murder mystery!
- 2019-12-16: Things I won't work with: the higher states of bromine.
- 2019-12-16: In service of the narrative in an operational surprise writeup.
- 2019-12-16: iter: a Golang implementation of C++ STL iterators and algorithms.
- 2019-12-15: Pointer authentication in LLVM / Clang.
- 2019-12-15: Best practices for designing a pragmatic RESTful API.
- 2019-12-15: Seven deadly sins of talking about "types".
- 2019-12-14: How to enable IPv6 in Docker.
- 2019-12-14: Modern garbage collection: Shenandoah and ZGC.
- 2019-12-14: How we increased our Node.js parallelism by 30x.
- 2019-12-14: Soundness bugs in Rust libraries: can't live with 'em, can't live without 'em.
- 2019-12-14: DepHell: project management for Python.
- 2019-12-14: Wine support for win32 on 64-bit-only macOS Catalina.
- 2019-12-14: Reimagining the PhD.
- 2019-12-14: Three ways to reduce the bandwidth costs of your HTTPS API on AWS.
- 2019-12-14: The Amazon AWS premium.
- 2019-12-13: pg_query: parse PostgreSQL queries in Ruby.
- 2019-12-14: Why NUKEMAP isn't on Google Maps anymore.
- 2019-12-13: The seductive diversion of ‘solving' bias in artificial intelligence.
- 2019-12-13: hyper v0.13: an async HTTP library for Rust.
- 2019-12-13: Blocking inside async code in Rust.
- 2019-12-13: Introducing sqlc: compile SQL queries to type-safe Golang.
- 2019-12-13: The surprising breadth of harbingers of failure: customers who buy products that fail.
- 2019-12-13: Conway's law: How do committees invent?
- 2019-12-13: A better Internet is waiting for us.
- 2019-12-13: Experiments in constraint-based graphic design.
- 2019-12-13: Threads can infect each other with their low priority.
- 2019-12-13: Dynamically scoped variables in Golang.
- 2019-12-13: PostgreSQL 12 EXPLAIN SETTINGS.
- 2019-12-13: Solving the mystery of HRT shortages in the UK.
- 2019-12-12: Building an Ansible training environment with FreeBSD jails.
- 2019-12-12: Make it simple: a tale about Robert Dewar, Ada, and GNAT.
- 2019-12-12: Odyssey: a scalable PostgreSQL connection pooler.
- 2019-12-11: Best practices for APIs, if you hate your customers.
- 2019-12-11: Results of a security audit of Unbound DNS.
- 2019-12-11: ZMOB: a multiprocessor computer with 256 Z80 CPUs. (1981)
- 2019-12-11: The Nintendo Switch switch.
- 2019-12-11: OpenLayers: easy dynamic maps on web pages.
- 2019-12-11: The ZedRipper multi-core Z80 laptop.
- 2019-12-10: Report of the Stanford workshop on network buffer sizing.
- 2019-12-10: DNS abuse framework.
- 2019-12-09: How simple rules ‘bootstrap' the laws of physics.
- 2019-12-09: Windows Management Instrumentation (WMI) is accidentally quadratic.
- 2019-12-09: SubX: bringing sub seasonal 3-to-4 week weather forecasts from research to operations.
- 2019-12-08: Don't learn to code, learn to automate.
- 2019-12-08: How to match "A B C" where A+B=C with a regex.
- 2019-12-06: Stepping up to the GraphQL buffet.
- 2019-12-06: Why ISOC sold .ORG to private equity.
- 2019-12-06: No to Google Chrome.
- 2019-12-06: Cliqz: a new search engine.
- 2019-12-05: How to fight back against Google AMP as a web user and a web developer.
- 2019-12-05: Challenge: find Twitter memes with suffix arrays.
- 2019-12-05: How I defeated the Tolkien estate.
- 2019-12-04: The origins of GPS, and the pioneers who launched the system.
- 2019-12-04: Aerospace Corp’s role in the development of GPS.
- 2019-12-04: Abusing PostgreSQL as a SQL beautifier.
- 2019-12-04: The Cannonball Run record has been broken again.
- 2019-12-04: How to build and market IPv6-only services.
- 2019-12-04: The science of Wi-Fi on airplanes.
- 2019-12-04: Sinkholed: story of a domain takedown.
- 2019-12-04: Flaws in HumanReadableByteCount(), the most copied StackOverflow snippet.
- 2019-12-03: Minesweeper and logical circuits.
- 2019-12-03: Internet Society says Ethos Capital's offer to buy .org for $1.14bn came out of the blue.
- 2019-12-03: Notes on adding IEC power symbols to Unicode.
- 2019-12-03: An interactive model-based calculator of cycling power vs. speed.
- 2019-12-03: niche-museums.com, powered by Datasette.
- 2019-12-03: Symptoms of groupthink.
- 2019-12-03: I ditched Google for DuckDuckGo, and you should too.
- 2019-12-03: datasette-atom: define an atom feed using a custom SQL query.
- 2019-12-03: The .org fire sale: how it sold for less than half its valuation.
- 2019-12-03: Did ISOC leave $1 billion on the table?
- 2019-12-03: How I added 6 characters to Unicode (and you can too).
- 2019-12-02: TAGS, simplified.
- 2019-12-01: The world needs Cliqz. The world needs more search engines.
- 2019-11-30: Is inequality inevitable?
- 2019-11-29: Flow parallel multithreaded HTML5 browser, by Ekioh in Cambridge.
- 2019-11-29: DDR4 initialization and calibration.
- 2019-11-28: RedoxOS on real hardware, and self-hosting support for rustc.
- 2019-11-28: Methods for identifying and dealing with flaky tests.
- 2019-11-28: Automated front-end testing is not working.
- 2019-11-28: Student rental scams.
- 2019-11-27: Teacher effects on student achievement and height: a cautionary tale.
- 2019-11-27: AWS instance metadata service (IMDSv2) protection against server-side request forgery (SSRF).
- 2019-11-27: Comby: structural matching and rewriting for code.
- 2019-11-26: dy: construct YAML from a directory tree.
- 2019-11-26: Hours of daylight mapped as a function of latitude and time of year.
- 2019-11-26: How do you remove unused CSS from a web site?
- 2019-11-26: Independent review of TSB's failed 2018 banking platform migration.
- 2019-11-25: The big push! IBM 360 Model 20 transported to the UK.
- 2019-11-25: Mariana Mazzucato has reinvigorated the most important battle in economics.
- 2019-11-25: The infinite hows: an argument against Five Whys and an alternative approach.
- 2019-11-25: ICANN races towards regulatory capture: the great .ORG heist.
- 2019-11-24: git-subtrac: all your git submodules in one place.
- 2019-11-24: Critical perspectives on provable security: fifteen years of "Another Look" papers.
- 2019-11-23: Python Tutor: ten years as a solo maintainer of open-source software in academia.
- 2019-11-23: Internet world despairs as non-profit .org sold for $$$$ to private equity firm.
- 2019-11-23: The ICs of 2030.
- 2019-11-23: Forging a path away from containers and config tools.
- 2019-11-23: AI today and tomorrow is mostly about curve fitting, not intelligence.
- 2019-11-23: Towards a unified theory of reactive UI.
- 2019-11-23: Save .ORG
- 2019-11-23: The power of one-state Turing machines.
- 2019-11-22: Wrapping images around Julia set fractals.
- 2019-11-22: A survey of error handling crates for Rust.
- 2019-11-22: Thermal performance of Raspberry Pi 4 firmware updates.
- 2019-11-22: Golang's features of last resort.
- 2019-11-22: Thoughts on error handling in Rust.
- 2019-11-22: Bits on the wire.
- 2019-11-22: Multi-value all the wasm with Rust!
- 2019-11-21: Stacked Borrows: an aliasing model for Rust. (paper)
- 2019-11-21: Rust compiler bug test case reduction techniques.
- 2019-11-21: Myths programmers believe about CPU caches.
- 2019-11-21: An interview about PostgreSQL extensions.
- 2019-11-21: The Firefox UI is now built with Web Components.
- 2019-11-20: A memoir of working on "black" secret space programs.
- 2019-11-20: Debian init systems: what, another GR?
- 2019-11-20: Restoring UNIX v0 on a PDP-7: a look behind the scenes.
- 2019-11-20: Allsorts: a font shaping engine in Rust.
- 2019-11-20: Accidentally breaking GitHub Actions with a shorthash collision.
- 2019-11-20: How to recognize AI snake oil.
- 2019-11-19: Clang format tanks performance?!
- 2019-11-19: UCB CSRG BSD source code history converted from SCCS to git.
- 2019-11-19: ISO C18 final committee draft.
- 2019-11-19: Google search results have more human help than you think.
- 2019-11-19: AT&T released Vyatta DANOS disaggregated network operating system to Linux Foundation.
- 2019-11-18: The difference between fault tolerance, high availability, and disaster recovery.
- 2019-11-18: Welcome to China. You probably can't buy anything, though.
- 2019-11-18: Understanding Rust Serde.
- 2019-11-18: What makes a good runbook?
- 2019-11-18: Brand hijacking and Amazon's China strategy.
- 2019-11-17: Instant stone (just add water!)
- 2019-11-17: Writing userspace USB drivers for abandoned devices.
- 2019-11-17: The Consul outage that never happened.
- 2019-11-16: CSS utility classes and "separation of concerns".
- 2019-11-16: drgn: scriptable debugger library.
- 2019-11-16: The disappearance and return to print of John M. Ford.
- 2019-11-16: Cue and the configuration complexity curse.
- 2019-11-15: The architecture of declarative configuration management.
- 2019-11-15: Me and monotropism: a unified theory of autism.
- 2019-11-15: SCION: scalability, control, and isolation on next-generation networks.
- 2019-11-15: The early history of Usenet, part 1: the technological setting.
- 2019-11-15: Private equity company acquires .org registry.
- 2019-11-15: Cooling off your Raspberry Pi 4.
- 2019-11-14: Explaining 4K 60Hz video through USB-C hubs.
- 2019-11-14: Neutrinos lead to unexpected discovery about eigenvectors and eigenvalues.
- 2019-11-14: Configure HAProxy with PostgreSQL using built-in pgsql-check.
- 2019-11-14: Making mystery-solving easier with auto_explain for PostgreSQL.
- 2019-11-14: The maturing of QUIC.
- 2019-11-13: Box. (YouTube)
- 2019-11-13: A weird Internet career in linguistics.
- 2019-11-13: Ancient earth: a visualization of continental drift. (WebGL)
- 2019-11-13: How linguists are using Urban Dictionary.
- 2019-11-13: Notes on type layouts and ABIs in Rust.
- 2019-11-12: The Google squeeze.
- 2019-11-12: CSS in librsvg is now in Rust, courtesy of Mozilla Servo.
- 2019-11-12: Test-driving ARM cloud servers by compiling LLVM.
- 2019-11-11: Staticcheck in action: catching bugs in Golang.
- 2019-11-10: The New Zealand Poly computer preservation project.
- 2019-11-09: The darker side of lean: an insider's perspective on the Toyota Production System.
- 2019-11-09: PostgreSQL is a great pubsub and job server.
- 2019-11-09: Targeted ads are one of the world's most destructive trends.
- 2019-11-09: Everyone working in DevOps should read The Toyota Way.
- 2019-11-09: Kubernetes made my latency 10x higher.
- 2019-11-09: Nesting limits in JSON parsers.
- 2019-11-09: How Swift achieved dynamic linking where Rust couldn't.
- 2019-11-08: Type-level programming in Rust for safer hardware abstractions.
- 2019-11-08: Type-driven design: parse, don't validate.
- 2019-11-08: IBM terminals and the history of the 80×24 display.
- 2019-11-07: Gigabit ethernet over plastic optical fibre.
- 2019-11-07: Bypassing GitHub's OAuth flow with a HEAD request.
- 2019-11-06: postgres-checkup: deep analysis of PostgreSQL database health.
- 2019-11-06: The PostgreSQL billion tables project.
- 2019-11-06: Base64 encoding and decoding at almost the speed of a memory copy with AVX512.
- 2019-11-05: Typing errors: Dvorak is not better than QWERTY.
- 2019-11-05: Systemd timer units hide errors in journald, unlike cron.
- 2019-11-05: The lost ⋮ key of QWERTY
- 2019-11-04: Zola: a static site generator written in Rust.
- 2019-11-04: Light Commands: laser-based audio injection on voice-controllable systems.
- 2019-11-04: View MySQL / MariaDB query progress with `pmonitor`.
- 2019-11-04: A portrait in baroque / flemish style, in pure CSS.
- 2019-11-04: David Rosenhan's flawed paper on psychiatric pseudopatients.
- 2019-11-04: DNS wars.
- 2019-11-03: Stop using ridiculously low DNS TTLs.
- 2019-11-03: Web browsers will no longer have a single shared cache across all sites / origins.
- 2019-11-03: gendrendr: highlight the inaccuracy and violence of assigning genders to others.
- 2019-11-02: Raspberry Pi 4 USB-C gadget mode.
- 2019-11-02: Always bump downwards when allocating memory.
- 2019-11-02: A theorem of software engineering: the shortest possible schedule.
- 2019-11-02: U2F support in OpenSSH HEAD.
- 2019-10-31: Women's stories from the computer room.
- 2019-10-31: Destroying x86_64 instruction decoders with differential fuzzing.
- 2019-10-31: A gentle introduction to the wonderful world of Prometheus metrics.
- 2019-10-30: Fine tuning full text search with PostgreSQL 12.
- 2019-10-30: Hello, production!
- 2019-10-30: After using both, I regretted switching from Terraform to CloudFormation.
- 2019-10-30: Seamless application failover using libpq features in PostgreSQL.
- 2019-10-30: PostgreSQL major version upgrade using logical replication.
- 2019-10-30: Beating std::visit in D without really trying.
- 2019-10-30: unfork() is the inverse of fork(2). sort of.
- 2019-10-29: XML is almost always misused.
- 2019-10-29: Ten simple rules for helping newcomers become contributors to open projects.
- 2019-10-29: Text editing hates you too.
- 2019-10-29: Operon: extreme performance for Ansible.
- 2019-10-28: Thatcher had a battle plan for her economic revolution. The left needs one too.
- 2019-10-28: Minimal Wim: a grid-based typography experiment.
- 2019-10-27: Why it is hard for Rust to support async fn in traits.
- 2019-10-27: Telling whiskey from whisky by evaporation residues.
- 2019-10-26: Commas in big numbers everywhere: an OpenType adventure.
- 2019-10-26: GCC's assembler syntax.
- 2019-10-26: The wonders of the suffix tree through the lens of Ukkonen's algorithm.
- 2019-10-25: Rust vs C++ on floating-point intensive code.
- 2019-10-25: The future of open access academic publication.
- 2019-10-25: The (quantum computing) Talk.
- 2019-10-25: A Research Unix reader: annotated excerpts from the programmer's manual, 1971-1986.
- 2019-10-24: Why are terminal windows traditionally 80×25?
- 2019-10-23: Floorplan: spatial layout in memory management systems for Rust.
- 2019-10-22: Faster quaternion arithmetic by XORing floating point sign bits.
- 2019-10-22: Where `rustc` spends its time.
- 2019-10-22: Structural insight: Lisp and interpreted programming languages.
- 2019-10-22: 70 vs 100: if you can stop safely at the speed limit, how fast do you crash when speeding?
- 2019-10-22: Examining how AWS builds their own serverless apps.
- 2019-10-21: What breaks our systems: a taxonomy of black swans.
- 2019-10-21: Unix: a history and a memoir, by Brian Kernighan. (Amazon)
- 2019-10-21: Maps of cities coloured by street/road/ave/etc.
- 2019-10-21: International maps of cities coloured by street/road/ave/etc.
- 2019-10-19: Are aerospike engines better than traditional rocket engines?
- 2019-10-19: Debugging hidden memory leaks in Ruby.
- 2019-10-19: Ahh shhgit! Real-time detection of credentials leaked in git commits.
- 2019-10-18: libgcc: when exceptions collide.
- 2019-10-18: Problem details for HTTP APIs.
- 2019-10-18: REST is the new SOAP.
- 2019-10-18: Software testing anti-patterns.
- 2019-10-18: A £190M research programme around ARM’s Morello, an experimental ARMv8-A CPU, SoC, and board with CHERI support
- 2019-10-18: The earliest Unix code: an anniversary source code release.
- 2019-10-18: Types for units of measure in Rust.
- 2019-10-18: ARM leading a UK Government programme to create a capability-secure chip platform.
- 2019-10-18: Making a fast char searcher in C.
- 2019-10-17: Verb-noun vs noun-verb.
- 2019-10-17: Vulcain: HTTP/2 server push for fast and idiomatic client-driven REST APIs.
- 2019-10-17: The node experiment: exploring async basics with Rust
- 2019-10-17: Nondeterministic collations in PostgreSQL 12.
- 2019-10-17: No-one knows the type of char + char.
- 2019-10-16: I hate Xlib and so should you.
- 2019-10-16: I hate the X11 ICCCM selection system, and you should too.
- 2019-10-16: Beating C with an 80 line `wc` in Haskell.
- 2019-10-16: Google can't fix the Android update problem.
- 2019-10-16: Bloody story of Java and embedded databases in RIPE's RPKI validator.
- 2019-10-15: DNS security: threat modeling DNSSEC, DoT, and DoH.
- 2019-10-15: Notes on porting from Oracle to PostgreSQL.
- 2019-10-15: Firefox privacy how-to guide.
- 2019-10-15: A Kubernetes crime story.
- 2019-10-14: Distributed types on the Erlang BEAM.
- 2019-10-14: Making Rust's Tokio scheduler 10x faster.
- 2019-10-14: How Heap failed, then succeeded, at migrating from CoffeeScript to TypeScript.
- 2019-10-14: Underscores and SEO arms races.
- 2019-10-13: Flour power: meet the bread heads baking a better loaf.
- 2019-10-13: Binary arithmetic in the TypeScript type system.
- 2019-10-13: The tyranny of stucturelessness. (1971)
- 2019-10-13: Trashing: the dark side of sisterhood. (1976)
- 2019-10-13: HOWTO make Linux run blazing fast (again) on Intel CPUs.
- 2019-10-12: Response to "fibers under the magnifying glass".
- 2019-10-12: The most important software design guideline. (YouTube)
- 2019-10-12: Pointer-based data structures in SPARK Ada.
- 2019-10-12: The surprising limitations of C++ ranges beyond trivial cases.
- 2019-10-12: Solving remote build cache misses in Gradle Android builds.
- 2019-10-12: PostgreSQL when it's not your job.
- 2019-10-12: The new function prototype for objc_msgSend.
- 2019-10-12: You cannot cURL under pressure.
- 2019-10-12: How to speed up the Rust compiler some more in 2019.
- 2019-10-12: Fibers under the magnifying glass.
- 2019-10-11: How Monzo's security team handles secrets.
- 2019-10-11: BPF at Facebook (and beyond).
- 2019-10-10: Build Systems à la Carte.
- 2019-10-11: 8 papers that were rejected before winning a Nobel prize.
- 2019-10-11: A party parrot meme mystery has been solved.
- 2019-10-11: Video footage of the PDP-7 on which Unix started.
- 2019-10-10: What's going on with WhatFreeWords?
- 2019-10-10: Ownership and impl Trait in Rust.
- 2019-10-10: How kettles switch off when the water boils.
- 2019-10-10: Floppy disk history: The evolution of personal computing.
- 2019-10-10: Postmodern C tooling.
- 2019-10-09: Guix reduces reproducible build bootstrap seed TCB to 120MB.
- 2019-10-09: Formally modelling database migrations using Alloy.
- 2019-10-09: jtc: JSON manipulation and transformation tool.
- 2019-10-09: Defining types in the Shen programming language.
- 2019-10-09: Logs were our lifeblood. Now they're our liability.
- 2019-10-08: How do individual contributors get stuck?
- 2019-10-08: Applying SRE principles to US government recruitment and hiring for technical staff.
- 2019-10-08: Kubernetes liveness probes are dangerous.
- 2019-10-08: URGENT/11 zero day vulnerabilities in the IPnet TCP/IP stack used by VxWorks and other RTOSs.
- 2019-10-08: A modern CSS reset.
- 2019-10-08: Effect of network traffic engineering on TCP connections between AWS regions.
- 2019-10-08: R, the master troll of statistical languages.
- 2019-10-08: R is a joy if you treat it like awk.
- 2019-10-07: Replication configuration changes in PostgreSQL 12.
- 2019-10-07: My application ran away and called home from Redmond.
- 2019-10-07: SLOG: cheating the low-latency vs. strict serializability tradeoff.
- 2019-10-07: Testing in production: the hard parts.
- 2019-10-07: id-objmodel: simple dynamic dispatch for C.
- 2019-10-06: High finance is wrecking the economy and the planet, but it won't reform itself.
- 2019-10-06: Recommended tools for building geospatial web applications.
- 2019-10-06: Break before make, DevOps abstraction layers, and bad DNS.
- 2019-10-05: Turning over: why page turners matter.
- 2019-10-05: Whither literate programming: what went wrong?
- 2019-10-04: 25,000 RIPE LIRs: an end to the milestone highs?
- 2019-10-04: Pricing niche products: selling mechanical keyboard kits with a Vickrey auction.
- 2019-10-04: picolibc: a BSD licensed libc for embedded systems.
- 2019-10-04: Too many outer joins.
- 2019-10-04: SQL queries don't start with SELECT.
- 2019-10-03: Is "ass" the most complicated word in English?
- 2019-10-03: Autoantonyms.
- 2019-10-03: Stepping on Rakes: a review of Terry Eagleton's Humour and Peter Timms' Silliness.
- 2019-10-02: Same-site cookies by default.
- 2019-10-02: A new R6RS Scheme compiler for Linux and bare metal amd64.
- 2019-10-02: PDFex attack exfiltrates data from encrypted PDF files.
- 2019-10-01: A new online era of The Far Side is coming!
- 2019-10-01: Processing 40 TB of code from ~10 million project with scc.
- 2019-10-01: A guide to HTML <head> elements.
- 2019-10-01: Golang interfaces: the tricky parts.
- 2019-10-01: My god, it's full of dots!
- 2019-09-30: Let me automate that for you: removing pain points from data pipeline setup.
- 2019-10-01: The failed political promise of Silicon Valley.
- 2019-09-30: The asymmetry of Internet identity.
- 2019-09-29: JSON for modern C++.
- 2019-09-30: Predictive CPU isolation of containers at Netflix using a MIP solver.
- 2019-09-30: Small world with high risks: a study of security threats in the npm ecosystem.
- 2019-09-30: MiniZinc high-level solver-independent constraint satisfaction and optimization modelling language.
- 2019-09-30: Before the East India Company.
- 2019-09-30: SCIP solver for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP).
- 2019-09-30: A computer built from NOR gates: inside the Apollo Guidance Computer.
- 2019-09-30: Cbc: open-source mixed integer linear programming solver.
- 2019-09-30: MIP formulations and linearizations quick reference.
- 2019-09-29: Representing and editing JSON with Google Sheets.
- 2019-09-29: Mainstream adoption and Agile's second chasm.
- 2019-09-29: Text rendering hates you.
- 2019-09-29: Relaxed JSON.
- 2019-09-28: Games economists play.
- 2019-09-28: Poor man's PoE for Raspberry Pi.
- 2019-09-28: DevOps topologies.
- 2019-09-28: Abusing Kubernetes defaults for privilege escalation.
- 2019-09-28: A developer goes to a DevOps conference.
- 2019-09-28: Neurosexism: the myth that men and women have different brains.
- 2019-09-26: Blind software development at 450 words per minute.
- 2019-09-26: Using PostgreSQL row level security to make large companies more secure.
- 2019-09-26: Advanced SQL: window frames.
- 2019-09-25: The async builder pattern in Rust.
- 2019-09-25: SNI proxy.
- 2019-09-25: Performance metrics for blazingly fast web apps.
- 2019-09-25: Georgia Tech Software Tools subsystem and C compiler for Prime computers.
- 2019-09-25: Reversing an unknown CPU at DSCTF 2019.
- 2019-09-24: Types for Python HTTP APIs at Instagram.
- 2019-09-24: Promising new hard disk technology.
- 2019-09-24: Excavating AI: the politics of images in machine learning training sets.
- 2019-09-24: ImageNet Roulette.
- 2019-09-24: A few special-case performance enhancements in PostgreSQL 12.
- 2019-09-23: Serverless: 15% slower and 8x more expensive.
- 2019-09-23: Measuring DNS resolver centrality.
- 2019-09-23: Weld: accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM.
- 2019-09-23: Folding paper polyhedral globes to print and make.
- 2019-09-22: How to serve 200Gbit/s of TLS from one FreeBSD server.
- 2019-09-22: Moore's Law graphed vs real CPUs & GPUs 1965-2019. (YouTube)
- 2019-09-21: How I collected the complete short stories of F. Scott Fitzgerald.
- 2019-09-20: The state of uBlock Origin (and other blockers) for Safari.
- 2019-09-19: Closing the gap: cross-language LTO between Rust and C/C++.
- 2019-09-19: Software architecture is overrated, clear and simple design is underrated.
- 2019-09-19: Apple push notification device tokens in iOS 13.
- 2019-09-19: Improved support for C variadic functions in Rust and C2Rust.
- 2019-09-18: Reflinks vs symlinks vs hard links, and how they can help machine learning projects.
- 2019-09-18: DVC: a version control system for machine learning data.
- 2019-09-17: Why is the fossil record mostly male?
- 2019-09-17: A radio telescope sundial for the Very Large Array in New Mexico.
- 2019-09-17: Hard disk prices from Amazon UK.
- 2019-09-16: A tenfold increase in Varnish throughput by replacing libvmod-curl with native request restarts.
- 2019-09-16: LastPass leaks credentials from previous site.
- 2019-09-16: BGP, 'screaming car wreck' of internet routing, needs a fire brigade.
- 2019-09-15: Reverse engineering game cartridge printed circuit boards.
- 2019-09-15: I have a feeling we're not in Emerald City anymore: a satirical history of Ada.
- 2019-09-14: How hackers invented kiteboarding.
- 2019-09-14: Save thousands of dollars by packing Kubernetes pods efficiently.
- 2019-09-14: Parallel GCC research project.
- 2019-09-14: $1,000,000 worth of invalid EV certificates revoked.
- 2019-09-13: BLUF: make your writing more powerful with the bottom line up front.
- 2019-09-13: "DevOps didn't exist when I started as a developer."
- 2019-09-13: Big features of TypeScript 3.7 and how to use them.
- 2019-09-12: The ultimate guide to HTML and CSS support in mail clients.
- 2019-09-12: Efficient string copying and concatenation in C with memccpy().
- 2019-09-12: Why Ada is the language you want to be programming your systems with.
- 2019-09-12: bic: a C interpreter and API explorer.
- 2019-09-12: The electric eel is actually three species, and not an eel.
- 2019-09-12: Introducing caniemail.com: HTML and CSS interoperability in mail messages.
- 2019-09-12: Debian Perl: digital detective.
- 2019-09-12: Improving the compile time of a Rust crate.
- 2019-09-11: Fairphone 3 teardown.
- 2019-09-11: NY payroll company vanishes with $35 million.
- 2019-09-11: How prohibition tossed a wet blanket on America's inventors.
- 2019-09-11: Why Teslas aren't the future.
- 2019-09-11: Quantum INTERCAL.
- 2019-09-11: The race to create a perfect lie detector, and the dangers of succeeding.
- 2019-09-11: A famous argument against free will has been debunked.
- 2019-09-11: Face recognition, bad people, and bad data.
- 2019-09-10: Uber's path of destruction.
- 2019-09-10: What does "it's a good start" really mean?
- 2019-09-10: American phrase book.
- 2019-09-10: A guide to Aussie slang.
- 2019-09-10: The tale of the missing semaphore.
- 2019-09-10: How to chair an academic committee.
- 2019-09-10: Myths about USB-C.
- 2019-09-10: Strategies for fast lexical analysis.
- 2019-09-10: Put down that banana, beekeeper.
- 2019-09-10: A checklist for empirical evaluation, against replication difficulties in computer science.
- 2019-09-09: psychec: ML-style type inference for C.
- 2019-09-09: Towards a secured Android smartphone.
- 2019-09-09: Policy debt.
- 2019-09-09: Uses for the popcount instruction.
- 2019-09-08: On string lengths and Unicode encodings.
- 2019-09-07: From mind control to murder: a deadly fall revealed the CIA's MK-Ultra secrets.
- 2019-09-07: Thoughts on presenting a talk.
- 2019-09-07: DNS-over-HTTPS privacy and security concerns.
- 2019-09-07: Does Sean Bean really die more than other actors?
- 2019-09-07: Ronald Fisher, a bad cup of tea, and the birth of modern statistics.
- 2019-09-07: Links to pages about COBOL web programming.
- 2019-09-07: Can science survive without statistical significance?
- 2019-09-06: 42 is an answer to the question, what is the sum of three cubes?
- 2019-09-06: How to do a code review at Google.
- 2019-09-06: An introduction to D3.js.
- 2019-09-06: Human speech may have a universal transmission rate: 39 bits per second.
- 2019-09-06: What the Uffington white horse reveals about the value of maintenance.
- 2019-09-06: Cytoscape.js: visualisation library for networks / graphs.
- 2019-09-06: dc.js: dimensional charting in JavaScript.
- 2019-09-06: DDSketch: a fast and fully-mergeable quantile sketch with relative-error guarantees.
- 2019-09-05: Computer science from the bottom up.
- 2019-09-05: Why you need plpgsql_check if you write stored procedures for PostgreSQL.
- 2019-09-05: Active learning is more effective, but students don't think so.
- 2019-09-04: Why does CD digital audio have a 44.1 kHz sample rate?
- 2019-09-05: Universal adversarial triggers for attacking and analyzing NLP.
- 2019-09-05: The most gender-switched names in the US.
- 2019-09-05: Thunderbolt 3 cables longer than 0.5m generally don't support USB 3.1 speeds.
- 2019-09-04: pspg: table-aware pager for PostgreSQL.
- 2019-09-04: What happened to Hadoop?
- 2019-09-04: Teardown of a failed Linux LTS Spectre fix.
- 2019-09-04: Semantic validation in Rust.
- 2019-09-04: sqldef: idempotent MySQL/PostgreSQL schema management.
- 2019-09-04: Mangling dependent parameter types in C++, or, what happened to std::default_order.
- 2019-09-04: A century of “shrill”: how bias in technology has hurt women’s voices.
- 2019-09-04: A static compiler for the TypeScript programming language to Thumb machine code.
- 2019-09-04: AssemblyScript: a TypeScript to WebAssembly compiler.
- 2019-09-03: oreboot: a fork of coreboot, with C removed, written in Rust.
- 2019-09-03: Pseudorandom black swans: cache attacks on CTR_DRBG.
- 2019-09-03: Shenanigans with interface vtable hashing.
- 2019-09-03: Dave Jaggar's history of the ARM microprocessor architecture. (YouTube)
- 2019-09-03: NLP's Clever Hans moment has arrived.
- 2019-09-02: Beginner's guide to linkers.
- 2019-09-02: Tired of Stack Overflow.
- 2019-09-02: Linkers: a 20 part series.
- 2019-09-02: An introduction to deterministic builds with C/C++.
- 2019-09-02: The GNU configure and build system.
- 2019-09-02: Unix at 50.
- 2019-09-02: 10 ways to tweak slow SQL queries.
- 2019-09-02: Building interactive SSH applications.
- 2019-09-01: Leon Sans: a geometric sans-serif typeface in JavaScript.
- 2019-09-01: The life sciences advance one funeral at a time.
- 2019-09-01: You should not run your mail server because mail is hard?
- 2019-09-01: The design of littlefs: a fail-safe filesystem for microcontrollers.
- 2019-09-01: What really happened in the UK blackouts?
- 2019-08-31: Power bends light.
- 2019-08-31: Croup and ipecac in Anne of Green Gables.
- 2019-08-31: Linux pressure stall information (PSI): better load averages.
- 2019-08-31: What to do once you admit that decentralizing everything never seems to work.
- 2019-08-31: Why robots should have googly eyes.
- 2019-08-29: Write fuzzable code.
- 2019-08-29: Actually using crev / the problem of trusting software dependencies.
- 2019-08-29: DEC WRL Titan system manual. (1988)
- 2019-08-29: Async stack traces in Rust.
- 2019-08-28: Performance tuning PostgreSQL for SquareSpace's TLS certificate service.
- 2019-08-28: PostgreSQL row level security, views, and a lot of magic.
- 2019-08-28: Managing high availability in PostgreSQL: PAF vs repmgr vs Patroni.
- 2019-08-28: Lessons learned debugging an ssh scaling problem at GitLab.
- 2019-08-28: Pay a visit to Cambridge's computer museum.
- 2019-08-28: GoAccess: visual web log analyzer, in C, in the terminal.
- 2019-08-28: How web pages affect power usage.
- 2019-08-27: Just enough piracy can be a good thing.
- 2019-08-27: Dungeons & Deceptions: the first D&D players and the origins of the game.
- 2019-08-26: The astonishing gothic interior of David Parr's house.
- 2019-08-26: Should small Rust structs be passed by-copy or by-borrow?
- 2019-08-26: The difference between database isolation levels and consistency levels.
- 2019-08-26: Complicated and complex systems in safety management.
- 2019-08-26: Report on December's CenturyLink network outage.
- 2019-08-25: A flawed idea is teaching millions of American kids to be poor readers.
- 2019-08-25: Tweets about Dublin (some in Irish)
- 2019-08-25: Blame economists for the mess we're in.
- 2019-08-25: Enabling a permanent revolution in internet architecture.
- 2019-08-25: What the Code of Hammurabi can teach us about software liability.
- 2019-08-24: Does capital imply coercion?
- 2019-08-24: P99: preprocessor macros and functions for C99 and C11.
- 2019-08-24: C preprocessor tricks, tips, and idioms.
- 2019-08-24: Introducing nushell.
- 2019-08-23: Deadly superbug outbreak in humans linked to antibiotic spike in cows.
- 2019-08-23: Adding continuous rendering to the PlantUML server.
- 2019-08-23: Deconstructing Google's excuses on tracking protection.
- 2019-08-23: The origins of JavaScript sandbox realms.
- 2019-08-23: About GNU readline.
- 2019-08-23: The crystal growers who sparked a revolution in graphene electronics.
- 2019-08-23: Why does developing on Kubernetes suck?
- 2019-08-23: How to build a JavaScript sandbox in a web browser.
- 2019-08-23: Some obscure C features.
- 2019-08-23: Irish firm's device to detect IBS triggers praised by researchers.
- 2019-08-22: Thoughts on Rust bloat.
- 2019-08-21: git-filter-repo: a fast and flexible git-filter-branch replacement.
- 2019-08-21: Conventional Commits: A specification for formatted commit messages.
- 2019-08-21: The web browser monopoly.
- 2019-08-21: A look at HS2's huge Old Oak Common station.
- 2019-08-21: Where do interrupts happen?
- 2019-08-21: The answer to "Will you mentor me?" is "No."
- 2019-08-21: Calculus is deeply irrational.
- 2019-08-21: Kaspersky in the middle: what could possibly go wrong?
- 2019-08-21: "Patent troll" is opinion, not defamation.
- 2019-08-21: Ten simple rules for responsible referencing.
- 2019-08-21: The financialization of the American elite.
- 2019-08-21: How Rust optimizes async/await.
- 2019-08-20: 21st century datacenter locations driven by 19th century politics.
- 2019-08-20: Sunsetting Mercurial support in Bitbucket.
- 2019-08-20: The power of speaking Polari.
- 2019-08-19: 4 rules for intuitive UX.
- 2019-08-19: A 3D map of building ages in the Netherlands.
- 2019-08-19: async-std: an async version of the Rust standard library.
- 2019-08-17: Rubber Band audio time stretcher library.
- 2019-08-16: The order of the JSON.
- 2019-08-16: Minimum benchmark times can be misleading.
- 2019-08-16: WebKit tracking prevention policy.
- 2019-08-15: Google fails to provide "One account. All of Google."
- 2019-08-15: A history and evaluation of IBM System R.
- 2019-08-15: Parsing Rust strings into slices.
- 2019-08-15: Runtime configuration reloading in Rust.
- 2019-08-14: A history of Slonik, the PostgreSQL elephant logo.
- 2019-08-14: Bamboozling X.509 certificate authorities with BGP.
- 2019-08-13: A short survey of sub $0.10 microcontrollers.
- 2019-08-13: DMTF Redfish: a standard RESTful LOM API.
- 2019-08-13: NFLX-2019-002: HTTP/2 denial of service vulnerabilities.
- 2019-08-13: Top seven myths of robust systems.
- 2019-08-13: Best practices for code review.
- 2019-08-13: Timeline to remove gcc 4.2.1 from FreeBSD.
- 2019-08-13: Bypass Windows user interface privilege isolation via the CTF input method protocol.
- 2019-08-13: The rule of 140.
- 2019-08-13: Paged Out! a new experimental free magazine about programming.
- 2019-08-13: IndieWeb link sharing.
- 2019-08-13: Banana-killing Panama disease TR4 has arrived in Latin America.
- 2019-08-13: R13Y: are NixOS builds reproducible?
- 2019-08-13: Await in Rust.
- 2019-08-12: Extended Validation TLS certificates are really really dead.
- 2019-08-13: The horror of Microsoft Teams.
- 2019-08-12: Home 3D metal printing: first results.
- 2019-08-12: Hall's Law: interchangeable parts and the 1800s industrial revolution prequel to Moore's Law.
- 2019-08-12: Spying on HTTPS.
- 2019-08-12: A personal history of modeless text editing and cut/copy-paste.
- 2019-08-11: Bec Hill's translation of Edith Piaf's "Non Je Ne Regrette Rien".
- 2019-08-11: Don't say "homoiconic".
- 2019-08-10: What does a coder do if they can't type?
- 2019-08-10: Game of Trees: an implementation of git for OpenBSD.
- 2019-08-10: Parallelism in PostgreSQL.
- 2019-08-10: H3+: the molecules that made the universe.
- 2019-08-10: Kepler's forgotten ideas about symmetry help explain spiral galaxies without the need for dark matter.
- 2019-08-10: H2 in space explains dark matter and redshift.
- 2019-08-10: Porting Unix to the IBM Series-1 minicomputer.
- 2019-08-10: Measuring DNS qname minimization.
- 2019-08-10: Swift ExpressibleBy protocols: What they are and how they work.
- 2019-08-09: The Erlang rationale.
- 2019-08-09: Recursive language and modern imagination were acquired simultaneously 70,000 years ago.
- 2019-08-09: Unix commands for breaking out of restricted shells.
- 2019-08-08: Writing delightful HTTP middleware in Golang.
- 2019-08-07: HTTP desync attacks: request smuggling reborn.
- 2019-08-07: Arend: a theorem prover based on Homotopy Type Theory.
- 2019-08-07: A formal investigation of diff3.
- 2019-08-07: C-mera: Lisp macros for metaprogramming C-like languages.
- 2019-08-07: Recording 660fps video on a $6 Raspberry Pi camera.
- 2019-08-07: Understanding Rust through AVL trees.
- 2019-08-07: The last working Olivetti mainframe sits in a Tuscan high school.
- 2019-08-07: plpgsql_check: find compilation errors and profile functions in PostgreSQL.
- 2019-08-07: Hospital checklists are meant to save lives, so why do they often fail?
- 2019-08-07: 10 years of seL4: still the best, still getting better.
- 2019-08-07: Don't underestimate grep based code security scanning.
- 2019-08-07: Fact check: What you may have heard from Elsevier about the dispute with UC.
- 2019-08-07: Wine on Windows 10. It works.
- 2019-08-06: Scalable scanning and automatic classification of TLS CBC padding oracle attacks.
- 2019-08-06: Pwnie award nominations.
- 2019-08-06: Vectorized emulation: hardware accelerated taint tracking at 2 trillion instructions per second.
- 2019-08-05: Switching from Common Lisp to Julia.
- 2019-08-05: Rust language cheat sheet.
- 2019-08-05: All the best engineering advice I stole from non-technical people.
- 2019-08-04: Dissecting a dweet: Lorenz attractor.
- 2019-08-04: Elsevier threatens others for linking to Sci-Hub but does so itself.
- 2019-08-04: Using PostgreSQL full text search with Golang.
- 2019-08-04: A technical analysis of the Capital One AWS S3 hack.
- 2019-08-04: Securely issuing HTTP requests from the cloud.
- 2019-08-04: Mastering PostgreSQL full-text search and phrase search.
- 2019-08-04: What's new in PostgreSQL 11: built-in web search.
- 2019-08-04: PostgreSQL fulltext search with DBIx::Class.
- 2019-08-03: Tektronix schematic cartoons.
- 2019-08-03: How a 6,000-year-old dog cancer spread around the world.
- 2019-08-03: Killing a process and all of its descendants.
- 2019-08-03: Motion smoothing is ruining cinema.
- 2019-08-03: How Atlassian stopped XML vulnerabilities from landing in production.
- 2019-08-02: I assure you, medieval people bathed.
- 2019-08-02: Astronauts plan to bake cookies on the ISS.
- 2019-08-01: John Mashey on RISC vs CISC.
- 2019-08-01: The enduring mystery of 'jawn,' Philadelphia's all-purpose word.
- 2019-08-01: Touchpad, Interrupted.
- 2019-08-01: A history of Tetris randomizers.
- 2019-08-01: A brief guide to a few algebraic structures.
- 2019-08-01: A discussion of the origins of UNIX filesystem permissions.
- 2019-08-01: Rome's border walls were the beginning of its end.
- 2019-08-01: Inquiry into the implications for the UK of the proposal to end seasonal clock changes in the EU.
- 2019-08-01: In Australia, one cat seems to have destroyed an entire bird sanctuary.
- 2019-07-31: Golang experience report: generics in Kubernetes.
- 2019-07-31: Thoughts on package dependencies and scaling trust.
- 2019-07-31: ANTLR: an informal introduction.
- 2019-07-31: After the warming. [1989] (YouTube)
- 2019-07-31: Container security: a developer guide.
- 2019-07-31: LoRaWAN distance world record: 766km at 25mW.
- 2019-07-31: Gradual typing from theory to practice.
- 2019-07-31: AWS S3 event notifications have "probably once" delivery.
- 2019-07-30: Learn not to speak Esperanto.
- 2019-07-30: One-bit computing at 60 Hz.
- 2019-07-30: C++ modules might be dead on arrival.
- 2019-07-30: Modern C++ lamentations.
- 2019-07-30: A complete guide to the node.js event loop.
- 2019-07-29: Amazon Web Services: a practical guide.
- 2019-07-29: The encryption/surveillance debate is over, killed by Facebook.
- 2019-07-29: The Swiss Ephemeris is a GPL high precision ephemeris developed by Astrodienst.
- 2019-07-29: Comparisons in C++20.
- 2019-07-29: The hidden costs of automated thinking.
- 2019-07-28: The master of packing-tape calligraphy shares his story.
- 2019-07-28: Entrepreneurs don't have a special gene for risk, they come from families with money.
- 2019-07-28: Goodbye Docker: using Podman, Buildah, and Skopeo instead.
- 2019-07-28: Tokyo subway's duct-tape typographer.
- 2019-07-27: OOP before OOP with Simula.
- 2019-07-27: Glasgow: Scots Army Knife for electronics.
- 2019-07-27: Efficient Golang APIs with the mid-stack inliner.
- 2019-07-26: Not so private thoughts at IETF 105.
- 2019-07-26: Data isn't the new oil, it's the new CO₂.
- 2019-07-26: Safely rewriting Mixpanel's highest-throughput service from Python to Golang.
- 2019-07-26: Alpha compositing.
- 2019-07-26: Cosmic ray update: new results from the moon.
- 2019-07-26: No Moore left to give: enterprise computing after Moore's Law.
- 2019-07-26: Decades-old boolean sensitivity conjecture solved in two pages.
- 2019-07-26: Users hate change.
- 2019-07-26: Hacking a Transcend WiFiSD.
- 2019-07-26: SFTPGo: highly configurable SQL-backed SFTP server.
- 2019-07-26: Some criticisms of RISC-V.
- 2019-07-25: Open infrastructure map.
- 2019-07-25: The Internet golden age that wasn't.
- 2019-07-24: Notes on a smaller Rust.
- 2019-07-24: How (not) to sign a JSON object.
- 2019-07-24: Use plaintext email.
- 2019-07-24: Perils of constructors.
- 2019-07-24: Object-oriented programming in C: a case study of git and the Linux kernel.
- 2019-07-24: Automatic index recommendations in PostgreSQL using pg_qualstats and hypopg.
- 2019-07-24: The mysterious PostgreSQL "backend_flush_after" configuration setting.
- 2019-07-24: A client certificate authentication recipe for PostgreSQL Docker containers.
- 2019-07-24: Norvig and Pitman tutorial on good Lisp programming style.
- 2019-07-24: How are PostgreSQL functions and stored procedures replicated?
- 2019-07-24: PostgreSQL tips for average and power users.
- 2019-07-24: BRIN indexes in PostgreSQL.
- 2019-07-24: A Common Lisp style guide.
- 2019-07-24: Standby in production: scaling PostgreSQL for a large classified ads site.
- 2019-07-24: Lisp code for the textbook "Paradigms of Artificial Intelligence Programming".
- 2019-07-24: Unblocking second-generation smart meters.
- 2019-07-24: Pascal Costanza's highly opinionated guide to Lisp.
- 2019-07-24: Python anti-patterns.
- 2019-07-24: Mitchell Feigenbaum (1944–2019), 4.66920160910299067185320382…
- 2019-07-24: How the retweet ruined the Internet.
- 2019-07-24: Composable multi-threaded parallelism in Julia.
- 2019-07-24: Algebraic effects for the rest of us.
- 2019-07-24: Facebook: Mark Zuckerberg's Ponzi scheme.
- 2019-07-23: Kubernetes is in hospice.
- 2019-07-23: Unicode utilities.
- 2019-07-23: URLhaus: a database of malicious URLs used for malware distribution.
- 2019-07-23: Signs your bra may be the wrong size or a snake.
- 2019-07-23: Raspberry Pi time measurement performance.
- 2019-07-23: Racket2 possibilities.
- 2019-07-23: A pgp long key ID collider.
- 2019-07-22: Do-nothing scripting: a path to gradual automation.
- 2019-07-22: A2-class microSD cards offer no better performance for the Raspberry Pi.
- 2019-07-21: Browsers are pretty good at loading web pages, it turns out.
- 2019-07-21: LGP-30: a drum computer of significance.
- 2019-07-21: Intel prepares add support for Google's bfloat16.
- 2019-07-21: The little-known Soviet mission to rescue the dead space station Salyut 7.
- 2019-07-21: Satellite images show vast swaths of the arctic on fire.
- 2019-07-21: Models of generics and metaprogramming: Golang, Rust, Swift, D, and more.
- 2019-07-20: PuTTY 0.72 release following end of EU bug bounty.
- 2019-07-20: A list of private fusion projects.
- 2019-07-20: History and effective use of vim.
- 2019-07-19: DataSpill: browser extensions slurped up browsing histories from 4M users.
- 2019-07-19: A plan to mine the world's research papers.
- 2019-07-19: The challenges of single toggle buttons.
- 2019-07-19: Amateur radio digital communications 44.0.0.0/8 partial sell-off.
- 2019-07-19: The lesson from the ruins of Notre Dame: don't rely on billionaires.
- 2019-07-19: XSS attacks on Googlebot allow search index manipulation.
- 2019-07-18: How developers use API documentation: an observation study.
- 2019-07-17: How to speed up the Rust compiler in 2019.
- 2019-07-17: Indexing documents for full text search in PostgreSQL.
- 2019-07-17: Certificate flooding, SKS and GnuPG issues, and the Sequoia pgp-in-Rust project.
- 2019-07-17: Not so fast: the performance of WebAssembly vs. native code.
- 2019-07-18: Analysis of the Galileo satellite navigation outage.
- 2019-07-17: QuickJS: Fabrice Bellard's JavaScript engine.
- 2019-07-17: Zelda screen transitions are undefined behaviour.
- 2019-07-17: You thought OpenStreetMap uses WGS84? No it doesn't!
- 2019-07-17: What's coming in Python 3.8?
- 2019-07-17: Stream combinators implemented using for await syntax in Rust.
- 2019-07-17: What is unsafe Rust?
- 2019-07-17: An interview with Margaret Hamilton.
- 2019-07-17: Who's afraid of a big bad optimizing compiler?
- 2019-07-17: Modelling the mythical man-month with the universal scalability law.
- 2019-07-17: The PGP problem.
- 2019-07-17: Minisign, based on libsodium, compatible with OpenBSD signify.
- 2019-07-16: Extending the algebraic manipulability of differentials.
- 2019-07-16: Experience report: rebuilding Racket on Chez Scheme.
- 2019-07-16: Elsa: Emacs Lisp static analyzer.
- 2019-07-16: BPF performance tools: Linux system and application observability. (book announcement)
- 2019-07-16: A summary of USB-C cable features.
- 2019-07-16: Ownership and borrowing in the D programming language.
- 2019-07-16: Cookies: what does ‘good' look like to the UK ICO?
- 2019-07-15: There are 6 kinds of USB-C cables.
- 2019-07-16: Why did we wait so long for the bicycle?
- 2019-07-15: dnsfrag2tc: force DNS clients to retry fragmented UDP over TCP using nfqueue.
- 2019-07-15: OpenTTP: a platform for traceable time and frequency.
- 2019-07-15: Against IETF BCP190 on URI design.
- 2019-07-15: bulldohzer: DNS performance measurement tool for DoH and Do53.
- 2019-07-15: Jony Ive's mistakes: when beautiful design is bad design.
- 2019-07-14: What the hardware does is not what your program does with uninitialized memory.
- 2019-07-14: Plot maps of Star Wars.
- 2019-07-14: C++ curiosities: std::move doesn't move.
- 2019-07-13: Why does the C++ standard ship every three years?
- 2019-07-13: C++20 <version> header wreaks havoc on case-insensitive filesystems.
- 2019-07-13: rnp: an OpenPGP library in C++.
- 2019-07-13: notqmail: a collaborative open-source successor to netqmail and qmail.
- 2019-07-13: Tiles to curves: fun with Voronoi graphs.
- 2019-07-12: Literate commits.
- 2019-07-11: Lexical differential highlighting.
- 2019-07-12: International typography on the Web: language support matrix.
- 2019-07-12: ARPANET: the subnet IMPs.
- 2019-07-11: How to read the international phonetic alphabet.
- 2019-07-12: Fuzzing DNS zone parsers.
- 2019-07-11: DoX: a GUI utility for querying DNS via DoH, DoT, or Do53.
- 2019-07-11: Identifying the PDP-7 where Unix began.
- 2019-07-11: DNS fragmentation considered harmful.
- 2019-07-11: Fragmentation considered harmful. (1987)
- 2019-07-11: Pictures of the Cambridge Mathematical Laboratory from the early 1970s.
- 2019-07-10: Raspberry Pi 4 PCI Express.
- 2019-07-10: For 40 years, crashing trains was ovne of America's favorite pastimes.
- 2019-07-10: Raspberry Pi 4 microSD card performance comparisons.
- 2019-07-10: Impact of A1 and A2 microSD card application performance class.
- 2019-07-10: Python consumes a lot of memory; how to reduce the size of objects?
- 2019-07-10: Emulating higher-kinded types in Rust.
- 2019-07-10: Rust async-await status report #2.
- 2019-07-09: The "platform" excuse is dying.
- 2019-07-09: Database transaction correctness anomalies under serializable isolation.
- 2019-07-08: Tips for reviewing code you don't like.
- 2019-07-09: Some Dockerfile best practices.
- 2019-07-09: The Riemann Hypothesis says 5040 is the last.
- 2019-07-08: Earth's eighth persistent lava lake confirmed in the South Sandwich Islands.
- 2019-07-08: Cryptographic key size and algorithm recommendations.
- 2019-07-08: Libsodium quick reference.
- 2019-07-08: Cryptographic right answers.
- 2019-07-08: Fuck RSA.
- 2019-07-08: Linux 5.2 release notes.
- 2019-07-07: Creating hardware where no hardware exists: using Intel SMM to emulate Apple SMC.
- 2019-07-07: Secure EcmaScript: a secure runtime for running third-party code without ambient authority.
- 2019-07-07: Deno: a runtime for TypeScript built with V8, Rust, and Tokio.
- 2019-07-06: Collecting two electrons from each photon could break through the solar cell efficiency limit.
- 2019-07-06: Amazon is liable for defective products sold by their 3rd party marketplace vendors.
- 2019-07-06: Goodbye aberration: physicist solves 2,000-year-old optical problem.
- 2019-07-06: Dr. Robin DiAngelo discusses 'White Fragility'. (YouTube)
- 2019-07-05: How FZF and ripgrep improved my workflow.
- 2019-07-05: Why the Raspberry Pi 4 is incompatible with some USB-C chargers.
- 2019-07-05: Why not to use two axes on a chart, and what to use instead.
- 2019-07-05: The good voting systems agreement.
- 2019-07-05: Mistakes we make using JavaScript promises.
- 2019-07-05: Software woven into wire: Core rope memory and the Apollo Guidance Computer.
- 2019-07-05: The mystery of Florida's cannonball-eating Spanish fort.
- 2019-07-05: What is the female stress response and why is it interesting?
- 2019-07-05: Optimizing jieba-rs to be 33% faster than cppjieba.
- 2019-07-04: The forgotten trans history of the Wild West.
- 2019-07-04: A guide to peeling the trickiest foods.
- 2019-07-04: A better zip decompression bomb.
- 2019-07-04: The coming Boeing bailout?
- 2019-07-04: User Inyerface: a worst-practice UI experiment.
- 2019-07-04: Modern web design.
- 2019-07-03: Why GitLab is ending support for MySQL.
- 2019-07-03: Matlab vs. Julia vs. Python.
- 2019-07-03: D as a C replacement.
- 2019-07-03: Member function pointers in C++.
- 2019-07-03: Tabs are more accessible to the visually impaired than spaces.
- 2019-07-02: ReScue: a tool to detect exponential backtracking regex input.
- 2019-07-02: TLS performance: rustls versus OpenSSL.
- 2019-07-02: How Rust views tradeoffs.
- 2019-07-02: Erskine May, the bible of parliamentary procedure.
- 2019-07-02: Choose boring technology.
- 2019-07-02: Reviving Tim Berners-Lee's WorldWideWeb browser on NeXTSTEP 486.
- 2019-07-01: An astrobiologist tries cooking in Antarctica at -70ºC.
- 2019-07-01: Strongly TypeScript Vue.
- 2019-07-01: lazydocker: a text UI to manage everything Docker.
- 2019-07-01: How to pick a random number from 1-10 using only people.
- 2019-07-01: AIs named by AIs.
- 2019-07-01: The convoy phenomenon in lock contention.
- 2019-07-01: jk: configuration as code with TypeScript.
- 2019-06-30: jass: share secrets using SSH keys.
- 2019-06-30: NetBSD on the last G4 Mac mini (and making the kernel power failure proof).
- 2019-06-30: age: A design for a simple file encryption tool and format.
- 2019-06-30: America's monopoly crisis hits the military.
- 2019-06-30: Blitcha.
- 2019-06-28: trustydns: DNS Over HTTPS proxy, server and query programs.
- 2019-06-27: Thin yet repairable devices: HP proves they exist.
- 2019-06-26: Implement with types, not your brain!
- 2019-06-26: RapidCheck: a QuickCheck clone for C++, simple to use with as little boilerplate as possible.
- 2019-06-26: Fuzzing vs property testing.
- 2019-06-26: The Software Tools Users Group archive.
- 2019-06-26: Google's llibc proposal vs musl libc.
- 2019-06-25: Bloom indexes in PostgreSQL.
- 2019-06-24: nom 5: parser combinators for Rust.
- 2019-06-24: Call-by-need is clairvoyant call-by-value.
- 2019-06-24: Facebook's Libra must be stopped.
- 2019-06-24: The Petrie multiplier: how oppression is amplified against minorities.
- 2019-06-24: In the wiggle of an ear, a surprising insight into bat sonar.
- 2019-06-24: Build a Debian Raspberry Pi 3 image.
- 2019-06-24: Before you use a password manager.
- 2019-06-24: The spycraft revolution.
- 2019-06-24: Raspberry Pi 4.
- 2019-06-24: What happens after Amazon's domination Is complete? Its bookstore offers clues.
- 2019-06-24: How to avoid dangerous counterfeits on Amazon.
- 2019-06-24: What does debugging a program look like?
- 2019-06-23: The simple essence of automatic differentiation.
- 2019-06-23: FPGAs have the wrong abstraction for software acceleration.
- 2019-06-23: Generative adversarial networks: the story so far.
- 2019-06-23: Wikipedia page view counts for lyrics in Billy Joel's "we didn't start the fire".
- 2019-06-23: json-table: Transform nested JSON data into tabular data.
- 2019-06-22: mimalloc: a compact general purpose allocator with excellent performance.
- 2019-06-22: Deprecating volatile in C++.
- 2019-06-22: The typestate pattern in Rust.
- 2019-06-22: C, Fortran, and single-character strings.
- 2019-06-22: A liquid helix model helps explain the dribbly teapot effect.
- 2019-06-21: Getting 2FA right.
- 2019-06-21: Confusing JavaScript browser globals.
- 2019-06-20: atexit() is broken.
- 2019-06-19: Debian riscv64 port status.
- 2019-06-19: Tools to set up macOS in QEMU / KVM.
- 2019-06-19: Accelerating Redis with Intel DPDK.
- 2019-06-19: Myths about testosterone and athletics.
- 2019-06-19: Journalism and the TRS-80 model 100.
- 2019-06-19: Nefarious LinkedIn exfiltrates a list of installed extensions from your browser.
- 2019-06-18: Graham Nelson on open sourcing Inform 7.
- 2019-06-18: Secure systems design principles.
- 2019-06-18: Security architecture anti-patterns.
- 2019-06-18: Containers, microservices, and service meshes.
- 2019-06-18: Michaelhouse: a lost Cambridge college, 1324–1540.
- 2019-06-18: Why women leave academia and why universities should be worried.
- 2019-06-17: MillionDollarHomepage domains for sale.
- 2019-06-16: Has "Homosexual" always been in the Bible?
- 2019-06-15: How Joy Division's ‘Unknown Pleasures' went from underground album cover to cultural ubiquity.
- 2019-06-14: Grit: mirror monorepo subtrees to GitHub.
- 2019-06-14: Using an iPad for LaTeX.
- 2019-06-14: DNSSEC negative answer synthesis: measuring missing queries for missing names.
- 2019-06-13: Adding static type checking to Julia in 100 lines of code.
- 2019-06-13: Teaching a cheap Dell ethernet switch new tricks.
- 2019-06-13: How to design for the web in 2019.
- 2019-06-13: Preemption is GC for memory reordering.
- 2019-06-13: CERN Microsoft alternatives project: taking back control using open software.
- 2019-06-12: RAMbleed: reading bits in memory without accessing them.
- 2019-06-12: A compilation of Kubernetes failure/horror stories.
- 2019-06-12: Missions to Mars during the 2020 minimum energy launch window.
- 2019-06-12: Out of stock: how to survive the lack of LTO-8 tapes.
- 2019-06-12: A C++ access control pattern: the badge.
- 2019-06-12: Matrix 1.0 and the Matrix.org foundation.
- 2019-06-12: "1984" at seventy: why we still read Orwell's book.
- 2019-06-12: IBM and the Holocaust.
- 2019-06-12: You (probably) don't need ReCAPTCHA.
- 2019-06-12: Using the Z3 SMT solver to find optimal GBA palettes.
- 2019-06-11: How the CIA flattened literature.
- 2019-06-11: Typed constants in Golang.
- 2019-06-11: From design patterns to category theory.
- 2019-06-11: From dependency injection to dependency rejection.
- 2019-06-11: Compiling to categories.
- 2019-06-11: Unicode programming, with examples in C.
- 2019-06-11: AMD Zen 2 microarchitecture analysis: Ryzen 3000 and EPYC Rome.
- 2019-06-10: The ice bucket challenge dramatically accelerated the fight against ALS.
- 2019-06-09: Opera, Brave, Vivaldi to ignore Chrome's anti-ad-blocker changes.
- 2019-06-08: A mysterious crystal that melts at two different temperatures.
- 2019-06-08: World flags as Japanese cosplay.
- 2019-06-07: Using pointers in Ada SPARK.
- 2019-06-07: Why do Python lists let you += a tuple, when you can't + a tuple?
- 2019-06-07: Quantum leaps, long assumed to be instantaneous, take time.
- 2019-06-07: DSAC: why is NASA sending an atomic clock into space?
- 2019-06-07: Happy birthday, BGP.
- 2019-06-07: A lithium-glass battery that keeps getting better?
- 2019-06-06: Google street view hyperlapse. (Video)
- 2019-06-06: The weather forecaster: The man who decided D-Day.
- 2019-06-06: Tokyo mechanical keyboard meetup photos.
- 2019-06-06: Using one RNG to sample another: the shrinking generator and stream ciphers.
- 2019-06-05: The cutting-edge of cutting: How Japanese scissors have evolved.
- 2019-06-05: Good Omens: Neil Gaiman and creators talk about adapting the book for TV.
- 2019-06-05: Links to papers on the history of atomic clocks.
- 2019-06-05: This page is a truly naked, brutalist html quine.
- 2019-06-04: Colons in computer-science paper titles.
- 2019-06-04: Challenges in time transfer using the network time protocol (NTP).
- 2019-06-04: The abominable Laffer curve.
- 2019-06-04: Google Chrome, the perfect antitrust villain?
- 2019-06-03: Analyzing performance analysis performance: weird PostgreSQL slowness on Docker for Mac.
- 2019-06-03: Uh-oh .io: Question mark over trendy TLD as UN condemns British treatment of Chagos.
- 2019-06-03: Brython: Python 3 in the browser.
- 2019-06-03: What makes a (graphics / SIGGRAPH) systems paper beautiful.
- 2019-06-03: REIN: repetitive electrical impulse noise.
- 2019-06-02: Compiling C to WebAssembly without Emscripten.
- 2019-06-02: At least one Vim trick you might not know.
- 2019-06-02: A DIY microhydro plant.
- 2019-06-02: Metadata is the biggest little problem plaguing the music industry.
- 2019-06-02: Reinventing the small wind turbine.
- 2019-06-02: Scaling to 1 million active GraphQL subscriptions with Hasura and PostgreSQL.
- 2019-06-01: How Qualcomm shook down the cell phone industry for almost 20 years.
- 2019-06-01: Notes to myself on software engineering.
- 2019-05-30: Cake or death: AMP and the worrying power dynamics of the web.
- 2019-05-30: Why Intel Ice Lake AVX512 is important: a bit-basher's perspective.
- 2019-05-30: Goroutine local storage.
- 2019-05-30: WhatDoTheyKnow Pro helps TBIJ get the whole picture on council land sell-off.
- 2019-05-30: runtypes: runtime validation for static types in TypeScript.
- 2019-05-30: Announcing TypeScript 3.5.
- 2019-05-30: The author of uBlock on Google Chrome's proposal to cripple ad blockers.
- 2019-05-30: io-ts: runtime types for IO decoding/encoding in TypeScript.
- 2019-05-30: Google goes ahead with ad-blocker crackdown, except for paid-up enterprise Chrome users.
- 2019-05-30: Google's IPv6 traffic stats: will 28% deployment really be the limit?
- 2019-05-28: Beating up on qsort with radix sort.
- 2019-05-28: inNative: WebAssembly as an architecture-neutral executable distribution format.
- 2019-05-27: An interview with DuckDuckGo CEO Gabe Weinberg.
- 2019-05-27: Ten simple rules for better charts and graphs.
- 2019-05-27: Pragmatic Debian packaging in 2019.
- 2019-05-27: How we found the source of the mystery signals at The Dish.
- 2019-05-27: Urbanism under Google: lessons from Sidewalk Toronto.
- 2019-05-27: Insulin pumps, decapped chips, and software defined radios.
- 2019-05-27: We need to talk about digital blackface in reaction GIFs.
- 2019-05-26: RCE without native code: exploiting a write-what-where vulnerability in Internet Explorer.
- 2019-05-26: The Euclid-Mullin sequence of prime numbers.
- 2019-05-26: Giving Haskell a promotion.
- 2019-05-26: Button placement and order in web forms and dialogs.
- 2019-05-26: What the Royal Astronomical Society in 1884 tells us about Python time handling bugs.
- 2019-05-26: Higher-order type-level programming in Haskell.
Tony Finch is
<dot@dotat.at>