Tony Finch – link log
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
- 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:
Refactoring with defunctionalization: everybody does it, nobody talks about it.
- 2019‑12‑31:
Reducing metadata leakage from encrypted files with PURBs.
- 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:
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:
Async exceptions in Haskell, and Rust.
- 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:
SOICbite: a program/debug connector for an SOIC test clip.
- 2019‑12‑24:
The shitty add-on standard v1.69bis for electronic con badges.
- 2019‑12‑24:
A business card that runs Linux.
- 2019‑12‑24:
Flattening quadratic Béziers.
- 2019‑12‑24:
In praise of property-based testing.
- 2019‑12‑24:
Implementing WebGPU in Gecko.
- 2019‑12‑24:
Now you see it, now you don't: a large-scale analysis of early domain deletions.
- 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:
Superdeterminism: The path we didn't take.
- 2019‑12‑17:
Hacking GitHub with Unicode's dotless 'i'.
- 2019‑12‑17:
The architecture of a large-scale web search engine, circa 2019.
- 2019‑12‑17:
Building a search engine from scratch.
- 2019‑12‑16:
A new cycle-stepped 6502 CPU emulator.
- 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:
Modern garbage collection: Shenandoah and ZGC.
- 2019‑12‑14:
How to enable IPv6 in Docker.
- 2019‑12‑14:
Wine support for win32 on 64-bit-only macOS Catalina.
- 2019‑12‑14:
How we increased our Node.js parallelism by 30x.
- 2019‑12‑14:
Reimagining the PhD.
- 2019‑12‑14:
DepHell: project management for Python.
- 2019‑12‑14:
Why NUKEMAP isn't on Google Maps anymore.
- 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‑14:
Soundness bugs in Rust libraries: can't live with 'em, can't live without 'em.
- 2019‑12‑13:
hyper v0.13: an async HTTP library for Rust.
- 2019‑12‑13:
pg_query: parse PostgreSQL queries in Ruby.
- 2019‑12‑13:
Introducing sqlc: compile SQL queries to type-safe Golang.
- 2019‑12‑13:
Blocking inside async code in Rust.
- 2019‑12‑13:
The seductive diversion of 'solving' bias in artificial intelligence.
- 2019‑12‑13:
The surprising breadth of harbingers of failure: customers who buy products that fail.
- 2019‑12‑13:
A better Internet is waiting for us.
- 2019‑12‑13:
Conway's law: How do committees invent?
- 2019‑12‑13:
Experiments in constraint-based graphic design.
- 2019‑12‑13:
Solving the mystery of HRT shortages in the UK.
- 2019‑12‑13:
Threads can infect each other with their low priority.
- 2019‑12‑13:
PostgreSQL 12 EXPLAIN SETTINGS.
- 2019‑12‑13:
Dynamically scoped variables in Golang.
- 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:
The Nintendo Switch switch.
- 2019‑12‑11:
OpenLayers: easy dynamic maps on web pages.
- 2019‑12‑11:
ZMOB: a multiprocessor computer with 256 Z80 CPUs. (1981)
- 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:
How I defeated the Tolkien estate.
- 2019‑12‑05:
Challenge: find Twitter memes with suffix arrays.
- 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:
Symptoms of groupthink.
- 2019‑12‑03:
An interactive model-based calculator of cycling power vs. speed.
- 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:
niche-museums.com, powered by Datasette.
- 2019‑12‑03:
datasette-atom: define an atom feed using a custom SQL query.
- 2019‑12‑03:
I ditched Google for DuckDuckGo, and you should too.
- 2019‑12‑03:
Did ISOC leave $1 billion on the table?
- 2019‑12‑03:
The .org fire sale: how it sold for less than half its valuation.
- 2019‑12‑03:
How I added 6 characters to Unicode (and you can too).
- 2019‑12‑03:
Notes on adding IEC power symbols to Unicode.
- 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:
Automated front-end testing is not working.
- 2019‑11‑28:
Methods for identifying and dealing with flaky tests.
- 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:
Bits on the wire.
- 2019‑11‑22:
Multi-value all the wasm with Rust!
- 2019‑11‑22:
Thoughts on error handling in 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:
The Firefox UI is now built with Web Components.
- 2019‑11‑21:
An interview about PostgreSQL extensions.
- 2019‑11‑21:
Myths programmers believe about CPU caches.
- 2019‑11‑20:
Debian init systems: what, another GR?
- 2019‑11‑20:
A memoir of working on "black" secret space programs.
- 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:
Understanding Rust Serde.
- 2019‑11‑18:
Brand hijacking and Amazon's China strategy.
- 2019‑11‑18:
Welcome to China. You probably can't buy anything, though.
- 2019‑11‑18:
What makes a good runbook?
- 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:
The disappearance and return to print of John M. Ford.
- 2019‑11‑16:
drgn: scriptable debugger library.
- 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:
Private equity company acquires .org registry.
- 2019‑11‑15:
The early history of Usenet, part 1: the technological setting.
- 2019‑11‑15:
Cooling off your Raspberry Pi 4.
- 2019‑11‑14:
Neutrinos lead to unexpected discovery about eigenvectors and eigenvalues.
- 2019‑11‑14:
Explaining 4K 60Hz video through USB-C hubs.
- 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:
Targeted ads are one of the world's most destructive trends.
- 2019‑11‑09:
PostgreSQL is a great pubsub and job server.
- 2019‑11‑09:
Everyone working in DevOps should read The Toyota Way.
- 2019‑11‑09:
Nesting limits in JSON parsers.
- 2019‑11‑09:
Kubernetes made my latency 10x higher.
- 2019‑11‑09:
How Swift achieved dynamic linking where Rust couldn't.
- 2019‑11‑08:
Type-driven design: parse, don't validate.
- 2019‑11‑08:
Type-level programming in Rust for safer hardware abstractions.
- 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:
The lost ⋮ key of QWERTY
- 2019‑11‑05:
Systemd timer units hide errors in journald, unlike cron.
- 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:
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‑04:
View MySQL / MariaDB query progress with `pmonitor`.
- 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:
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:
Fine tuning full text search with PostgreSQL 12.
- 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:
International maps of cities coloured by street/road/ave/etc.
- 2019‑10‑21:
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 the X11 ICCCM selection system, and you should too.
- 2019‑10‑16:
I hate Xlib and so should you.
- 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 surprising limitations of C++ ranges beyond trivial cases.
- 2019‑10‑12:
The most important software design guideline. (YouTube)
- 2019‑10‑12:
Pointer-based data structures in SPARK Ada.
- 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:
You cannot cURL under pressure.
- 2019‑10‑12:
Fibers under the magnifying glass.
- 2019‑10‑12:
How to speed up the Rust compiler some more in 2019.
- 2019‑10‑12:
The new function prototype for objc_msgSend.
- 2019‑10‑11:
How Monzo's security team handles secrets.
- 2019‑10‑11:
BPF at Facebook (and beyond).
- 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‑11:
8 papers that were rejected before winning a Nobel prize.
- 2019‑10‑10:
Build systems à la carte.
- 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:
Logs were our lifeblood. Now they're our liability.
- 2019‑10‑09:
jtc: JSON manipulation and transformation tool.
- 2019‑10‑09:
Defining types in the Shen programming language.
- 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‑10‑01:
The failed political promise of Silicon Valley.
- 2019‑09‑30:
The asymmetry of Internet identity.
- 2019‑09‑30:
Let me automate that for you: removing pain points from data pipeline setup.
- 2019‑09‑30:
A computer built from NOR gates: inside the Apollo Guidance Computer.
- 2019‑09‑30:
Small world with high risks: a study of security threats in the npm ecosystem.
- 2019‑09‑30:
Before the East India Company.
- 2019‑09‑30:
Predictive CPU isolation of containers at Netflix using a MIP solver.
- 2019‑09‑30:
MiniZinc high-level solver-independent constraint satisfaction and optimization modelling language.
- 2019‑09‑30:
SCIP solver for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP).
- 2019‑09‑30:
MIP formulations and linearizations quick reference.
- 2019‑09‑30:
Cbc: open-source mixed integer linear programming solver.
- 2019‑09‑29:
JSON for modern C++.
- 2019‑09‑29:
Text rendering hates you.
- 2019‑09‑29:
Representing and editing JSON with Google Sheets.
- 2019‑09‑29:
Mainstream adoption and Agile's second chasm.
- 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:
Advanced SQL: window frames.
- 2019‑09‑26:
Using PostgreSQL row level security to make large companies more secure.
- 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:
Parallel GCC research project.
- 2019‑09‑14:
Save thousands of dollars by packing Kubernetes pods efficiently.
- 2019‑09‑14:
$1,000,000 worth of invalid EV certificates revoked.
- 2019‑09‑13:
"DevOps didn't exist when I started as a developer."
- 2019‑09‑13:
BLUF: make your writing more powerful with the bottom line up front.
- 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:
bic: a C interpreter and API explorer.
- 2019‑09‑12:
Efficient string copying and concatenation in C with memccpy().
- 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:
Why Ada is the language you want to be programming your systems with.
- 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:
Quantum INTERCAL.
- 2019‑09‑11:
The race to create a perfect lie detector, and the dangers of succeeding.
- 2019‑09‑11:
Why Teslas aren't the future.
- 2019‑09‑11:
Face recognition, bad people, and bad data.
- 2019‑09‑11:
A famous argument against free will has been debunked.
- 2019‑09‑10:
Uber's path of destruction.
- 2019‑09‑10:
What does "it's a good start" really mean?
- 2019‑09‑10:
A guide to Aussie slang.
- 2019‑09‑10:
American phrase book.
- 2019‑09‑10:
The tale of the missing semaphore.
- 2019‑09‑10:
How to chair an academic committee.
- 2019‑09‑10:
Strategies for fast lexical analysis.
- 2019‑09‑10:
Myths about USB-C.
- 2019‑09‑10:
A checklist for empirical evaluation, against replication difficulties in computer science.
- 2019‑09‑10:
Put down that banana, beekeeper.
- 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:
DNS-over-HTTPS privacy and security concerns.
- 2019‑09‑07:
Thoughts on presenting a talk.
- 2019‑09‑07:
Does Sean Bean really die more than other actors?
- 2019‑09‑07:
From mind control to murder: a deadly fall revealed the CIA's MK-Ultra secrets.
- 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:
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:
An introduction to D3.js.
- 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:
Active learning is more effective, but students don't think so.
- 2019‑09‑05:
Universal adversarial triggers for attacking and analyzing NLP.
- 2019‑09‑05:
Why you need plpgsql_check if you write stored procedures for PostgreSQL.
- 2019‑09‑05:
Thunderbolt 3 cables longer than 0.5m generally don't support USB 3.1 speeds.
- 2019‑09‑05:
The most gender-switched names in the US.
- 2019‑09‑04:
Why does CD digital audio have a 44.1 kHz sample rate?
- 2019‑09‑04:
pspg: table-aware pager for PostgreSQL.
- 2019‑09‑04:
What happened to Hadoop?
- 2019‑09‑04:
Semantic validation in Rust.
- 2019‑09‑04:
Teardown of a failed Linux LTS Spectre fix.
- 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:
AssemblyScript: a TypeScript to WebAssembly compiler.
- 2019‑09‑04:
A static compiler for the TypeScript programming language to Thumb machine code.
- 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:
Tired of Stack Overflow.
- 2019‑09‑02:
Linkers: a 20 part series.
- 2019‑09‑02:
Beginner's guide to linkers.
- 2019‑09‑02:
The GNU configure and build system.
- 2019‑09‑02:
An introduction to deterministic builds with C/C++.
- 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:
What to do once you admit that decentralizing everything never seems to work.
- 2019‑08‑31:
Linux pressure stall information (PSI): better load averages.
- 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:
Report on December's CenturyLink network outage.
- 2019‑08‑26:
Complicated and complex systems in safety management.
- 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:
What the Code of Hammurabi can teach us about software liability.
- 2019‑08‑25:
Enabling a permanent revolution in internet architecture.
- 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:
About GNU readline.
- 2019‑08‑23:
Why does developing on Kubernetes suck?
- 2019‑08‑23:
The crystal growers who sparked a revolution in graphene electronics.
- 2019‑08‑23:
The origins of JavaScript sandbox realms.
- 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:
The web browser monopoly.
- 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:
A look at HS2's huge Old Oak Common station.
- 2019‑08‑21:
Calculus is deeply irrational.
- 2019‑08‑21:
Kaspersky in the middle: what could possibly go wrong?
- 2019‑08‑21:
The answer to "Will you mentor me?" is "No."
- 2019‑08‑21:
Where do interrupts happen?
- 2019‑08‑21:
The financialization of the American elite.
- 2019‑08‑21:
How Rust optimizes async/await.
- 2019‑08‑21:
Ten simple rules for responsible referencing.
- 2019‑08‑21:
"Patent troll" is opinion, not defamation.
- 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:
Runtime configuration reloading in Rust.
- 2019‑08‑15:
Parsing Rust strings into slices.
- 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:
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:
Best practices for code review.
- 2019‑08‑13:
Paged Out! a new experimental free magazine about programming.
- 2019‑08‑13:
The rule of 140.
- 2019‑08‑13:
Top seven myths of robust systems.
- 2019‑08‑13:
R13Y: are NixOS builds reproducible?
- 2019‑08‑13:
Banana-killing Panama disease TR4 has arrived in Latin America.
- 2019‑08‑13:
IndieWeb link sharing.
- 2019‑08‑13:
Await in Rust.
- 2019‑08‑13:
The horror of Microsoft Teams.
- 2019‑08‑12:
Extended Validation TLS certificates are really really dead.
- 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:
H3+: the molecules that made the universe.
- 2019‑08‑10:
H2 in space explains dark matter and redshift.
- 2019‑08‑10:
Kepler's forgotten ideas about symmetry help explain spiral galaxies without the need for dark matter.
- 2019‑08‑10:
Porting Unix to the IBM Series-1 minicomputer.
- 2019‑08‑10:
Game of Trees: an implementation of git for OpenBSD.
- 2019‑08‑10:
Swift ExpressibleBy protocols: What they are and how they work.
- 2019‑08‑10:
Parallelism in PostgreSQL.
- 2019‑08‑10:
Measuring DNS qname minimization.
- 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:
Understanding Rust through AVL trees.
- 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:
A formal investigation of diff3.
- 2019‑08‑07:
Recording 660fps video on a $6 Raspberry Pi camera.
- 2019‑08‑07:
10 years of seL4: still the best, still getting better.
- 2019‑08‑07:
Arend: a theorem prover based on Homotopy Type Theory.
- 2019‑08‑07:
C-mera: Lisp macros for metaprogramming C-like languages.
- 2019‑08‑07:
The last working Olivetti mainframe sits in a Tuscan high school.
- 2019‑08‑07:
Fact check: What you may have heard from Elsevier about the dispute with UC.
- 2019‑08‑07:
Don't underestimate grep based code security scanning.
- 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:
Vectorized emulation: hardware accelerated taint tracking at 2 trillion instructions per second.
- 2019‑08‑06:
Pwnie award nominations.
- 2019‑08‑05:
Switching from Common Lisp to Julia.
- 2019‑08‑05:
All the best engineering advice I stole from non-technical people.
- 2019‑08‑05:
Rust language cheat sheet.
- 2019‑08‑04:
Elsevier threatens others for linking to Sci-Hub but does so itself.
- 2019‑08‑04:
Dissecting a dweet: Lorenz attractor.
- 2019‑08‑04:
Securely issuing HTTP requests from the cloud.
- 2019‑08‑04:
A technical analysis of the Capital One AWS S3 hack.
- 2019‑08‑04:
Using PostgreSQL full text search with Golang.
- 2019‑08‑04:
What's new in PostgreSQL 11: built-in web search.
- 2019‑08‑04:
Mastering PostgreSQL full-text search and phrase 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 discussion of the origins of UNIX filesystem permissions.
- 2019‑08‑01:
Inquiry into the implications for the UK of the proposal to end seasonal clock changes in the EU.
- 2019‑08‑01:
A brief guide to a few algebraic structures.
- 2019‑08‑01:
In Australia, one cat seems to have destroyed an entire bird sanctuary.
- 2019‑08‑01:
Rome's border walls were the beginning of its end.
- 2019‑07‑31:
Golang experience report: generics in Kubernetes.
- 2019‑07‑31:
Thoughts on package dependencies and scaling trust.
- 2019‑07‑31:
After the warming. [1989] (YouTube)
- 2019‑07‑31:
LoRaWAN distance world record: 766km at 25mW.
- 2019‑07‑31:
Container security: a developer guide.
- 2019‑07‑31:
ANTLR: an informal introduction.
- 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:
Use plaintext email.
- 2019‑07‑24:
How (not) to sign a JSON object.
- 2019‑07‑24:
Notes on a smaller Rust.
- 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:
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:
Standby in production: scaling PostgreSQL for a large classified ads site.
- 2019‑07‑24:
Unblocking second-generation smart meters.
- 2019‑07‑24:
Python anti-patterns.
- 2019‑07‑24:
How the retweet ruined the Internet.
- 2019‑07‑24:
Lisp code for the textbook "Paradigms of Artificial Intelligence Programming".
- 2019‑07‑24:
Norvig and Pitman tutorial on good Lisp programming style.
- 2019‑07‑24:
Pascal Costanza's highly opinionated guide to Lisp.
- 2019‑07‑24:
A Common Lisp style guide.
- 2019‑07‑24:
Algebraic effects for the rest of us.
- 2019‑07‑24:
Facebook: Mark Zuckerberg's Ponzi scheme.
- 2019‑07‑24:
Mitchell Feigenbaum (1944-2019), 4.66920160910299067185320382...
- 2019‑07‑24:
Composable multi-threaded parallelism in Julia.
- 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:
Satellite images show vast swaths of the arctic on fire.
- 2019‑07‑21:
The little-known Soviet mission to rescue the dead space station Salyut 7.
- 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:
A plan to mine the world's research papers.
- 2019‑07‑19:
Amateur radio digital communications 44.0.0.0/8 partial sell-off.
- 2019‑07‑19:
DataSpill: browser extensions slurped up browsing histories from 4M users.
- 2019‑07‑19:
The challenges of single toggle buttons.
- 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‑18:
Analysis of the Galileo satellite navigation outage.
- 2019‑07‑17:
QuickJS: Fabrice Bellard's JavaScript engine.
- 2019‑07‑17:
Indexing documents for full text search in PostgreSQL.
- 2019‑07‑17:
Not so fast: the performance of WebAssembly vs. native code.
- 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:
Certificate flooding, SKS and GnuPG issues, and the Sequoia pgp-in-Rust project.
- 2019‑07‑17:
What is unsafe Rust?
- 2019‑07‑17:
How to speed up the Rust compiler in 2019.
- 2019‑07‑17:
Stream combinators implemented using for await syntax in 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:
Minisign, based on libsodium, compatible with OpenBSD signify.
- 2019‑07‑17:
The PGP problem.
- 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:
Ownership and borrowing in the D programming language.
- 2019‑07‑16:
Cookies: what does 'good' look like to the UK ICO?
- 2019‑07‑16:
Why did we wait so long for the bicycle?
- 2019‑07‑16:
A summary of USB-C cable features.
- 2019‑07‑15:
There are 6 kinds of USB-C cables.
- 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‑12:
International typography on the Web: language support matrix.
- 2019‑07‑12:
ARPANET: the subnet IMPs.
- 2019‑07‑12:
Fuzzing DNS zone parsers.
- 2019‑07‑11:
Lexical differential highlighting.
- 2019‑07‑11:
How to read the international phonetic alphabet.
- 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:
Python consumes a lot of memory; how to reduce the size of objects?
- 2019‑07‑10:
Impact of A1 and A2 microSD card application performance class.
- 2019‑07‑10:
Raspberry Pi 4 microSD card performance comparisons.
- 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‑09:
The Riemann Hypothesis says 5040 is the last.
- 2019‑07‑09:
Some Dockerfile best practices.
- 2019‑07‑08:
Tips for reviewing code you don't like.
- 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:
Why the Raspberry Pi 4 is incompatible with some USB-C chargers.
- 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:
How FZF and ripgrep improved my workflow.
- 2019‑07‑05:
The good voting systems agreement.
- 2019‑07‑05:
What is the female stress response and why is it interesting?
- 2019‑07‑05:
Why not to use two axes on a chart, and what to use instead.
- 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:
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:
Strongly TypeScript Vue.
- 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:
NetBSD on the last G4 Mac mini (and making the kernel power failure proof).
- 2019‑06‑30:
jass: share secrets using SSH keys.
- 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:
The spycraft revolution.
- 2019‑06‑24:
Raspberry Pi 4.
- 2019‑06‑24:
Before you use a password manager.
- 2019‑06‑24:
How to avoid dangerous counterfeits on Amazon.
- 2019‑06‑24:
What happens after Amazon's domination Is complete? Its bookstore offers clues.
- 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:
C, Fortran, and single-character strings.
- 2019‑06‑22:
A liquid helix model helps explain the dribbly teapot effect.
- 2019‑06‑22:
The typestate pattern in Rust.
- 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:
Teaching a cheap Dell ethernet switch new tricks.
- 2019‑06‑13:
How to design for the web in 2019.
- 2019‑06‑13:
Adding static type checking to Julia in 100 lines of code.
- 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:
A compilation of Kubernetes failure/horror stories.
- 2019‑06‑12:
RAMbleed: reading bits in memory without accessing them.
- 2019‑06‑12:
Matrix 1.0 and the Matrix.org foundation.
- 2019‑06‑12:
Missions to Mars during the 2020 minimum energy launch window.
- 2019‑06‑12:
"1984" at seventy: why we still read Orwell's book.
- 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:
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:
Brython: Python 3 in the browser.
- 2019‑06‑03:
Uh-oh .io: Question mark over trendy TLD as UN condemns British treatment of Chagos.
- 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:
Metadata is the biggest little problem plaguing the music industry.
- 2019‑06‑02:
A DIY microhydro plant.
- 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:
Why Intel Ice Lake AVX512 is important: a bit-basher's perspective.
- 2019‑05‑30:
Cake or death: AMP and the worrying power dynamics of the web.
- 2019‑05‑30:
runtypes: runtime validation for static types in TypeScript.
- 2019‑05‑30:
io-ts: runtime types for IO decoding/encoding in TypeScript.
- 2019‑05‑30:
Announcing TypeScript 3.5.
- 2019‑05‑30:
WhatDoTheyKnow Pro helps TBIJ get the whole picture on council land sell-off.
- 2019‑05‑30:
The author of uBlock on Google Chrome's proposal to cripple ad blockers.
- 2019‑05‑30:
Google's IPv6 traffic stats: will 28% deployment really be the limit?
- 2019‑05‑30:
Google goes ahead with ad-blocker crackdown, except for paid-up enterprise Chrome users.
- 2019‑05‑30:
Goroutine local storage.
- 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:
Thinking with Types: type-level programming in Haskell.
- 2019‑05‑26:
Higher-order type-level programming in Haskell.
- 2019‑05‑26:
Self-distancing: what it is and how you can use it to make better decisions.
- 2019‑05‑26:
Is SpaceX's Raptor the king of rocket engines?
- 2019‑05‑25:
CSS rules that will make your life easier.
- 2019‑05‑25:
The lingua franca of LaTeX.
- 2019‑05‑25:
MIDI 2.0, MIDI-CI, profiles, and property exchange.
- 2019‑05‑24:
Extending the slit-scan video special effect technique.
- 2019‑05‑24:
How to ruin a perfectly good container.
- 2019‑05‑24:
Creating C/C++ APIs in Rust.
- 2019‑05‑24:
The definitive guide to running EC2 spot instances as Kubernetes worker nodes.
- 2019‑05‑24:
A Kubernetes any% speedrun.
- 2019‑05‑24:
Website popularity rankings: an extensive analysis.
- 2019‑05‑24:
Hobbling Huawei: the 5G risks of China's tech giant.
- 2019‑05‑24:
LEGO Braille bricks.
- 2019‑05‑23:
Animagraffs: animated infographics about everything.
- 2019‑05‑23:
507 mechanical movements.
- 2019‑05‑23:
When the AWS DNS resolver drops packets because you hit the query quota.
- 2019‑05‑23:
Visualizing PostgreSQL vacuum progress.
- 2019‑05‑23:
Analysis of various tricky Rust code.
- 2019‑05‑23:
Efficiently searching in-memory sorted arrays: revenge of the interpolation search?
- 2019‑05‑23:
Exploring new frontiers for Git push performance.
- 2019‑05‑23:
Stupid git tricks: Combining two files into one while preserving line history.
- 2019‑05‑22:
The physical kilogram is officially dead.
- 2019‑05‑22:
It's a trap-ezoid: CSS Shapes aren't what you'd expect.
- 2019‑05‑22:
ads.txt specification for authorized ad resellers.
- 2019‑05‑21:
Heroines of chaos: Ellen Fetter and Margaret Hamilton.
- 2019‑05‑21:
Make Linux fast again: when you don't need sidechannel vulnerability protection.
- 2019‑05‑20:
Star Wars Vader vs Kenobi, reimagined.
- 2019‑05‑20:
A tale of query optimization in PostgreSQL.
- 2019‑05‑20:
Fixing an XSS vulnerability in the Haskell search engine Hoogle.
- 2019‑05‑20:
IBM 360 Model 20 rescue and restoration.
- 2019‑05‑19:
When male runners lose to women.
- 2019‑05‑19:
Virtual DOM is pure overhead.
- 2019‑05‑19:
Using Ed25519 signing keys for encryption.
- 2019‑05‑18:
Abusing SECURITY DEFINER functions in PostgreSQL.
- 2019‑05‑18:
Black, hot superionic ice may be nature's most common form of water.
- 2019‑05‑17:
The 2019 Linux storage, filesystem, and memory-management summit.
- 2019‑05‑17:
WireGuard on OpenBSD.
- 2019‑05‑17:
The story male editors kept killing.
- 2019‑05‑17:
Pointedly confusing: a longstanding sizeof() bug in Microsoft C.
- 2019‑05‑17:
dnsfire: a proof-of-concept DNS-driven firewall enforcer.
- 2019‑05‑17:
Writing a procedural puzzle generator.
- 2019‑05‑17:
Fundamental design principles for non-designers.
- 2019‑05‑16:
The 3.5% rule: a threshold of success for non-violent protest.
- 2019‑05‑16:
A report from Google's AMP advisory committee meeting.
- 2019‑05‑15:
Things you might not be using in Python 3, but should.
- 2019‑05‑15:
Going Critical: diffusion models, disease, and knowledge.
- 2019‑05‑13:
A horrifying globalThis polyfill in universal JavaScript.
- 2019‑05‑12:
Linux iptables processing flowchart.
- 2019‑05‑12:
The fully general system for learning to do hard things.
- 2019‑05‑12:
Trial of overhead electric lines for HGVs in Germany.
- 2019‑05‑12:
The peculiar blindness of experts.
- 2019‑05‑11:
OCaml has some shiny new monadic and applicative syntax.
- 2019‑05‑11:
Shenandoah GC in production: an experience report.
- 2019‑05‑11:
Announcing GraalVM 19.
- 2019‑05‑11:
2D graphics on modern GPU.
- 2019‑05‑11:
From collisions to chosen-prefix collisions, applied to full SHA-1.
- 2019‑05‑10:
Agnotology and epistemological fragmentation.
- 2019‑05‑10:
Compile-time coprocessor codegen with Rust macros.
- 2019‑05‑10:
It's time to break up Facebook.
- 2019‑05‑10:
Fourier synthesis vector CRT character generator.
- 2019‑05‑10:
PostScript and Interpress: a comparison. (1985)
- 2019‑05‑10:
Why are 2D vector graphics so much harder than 3D?
- 2019‑05‑09:
Inside the recovery from the Firefox add-on certificate expiry failure.
- 2019‑05‑09:
For better computing, liberate CPUs with a garbage collection coprocessor.
- 2019‑05‑09:
Post-mortem and remediations for matrix.org's April security incident.
- 2019‑05‑09:
When dates became regular and universal, it changed history.
- 2019‑05‑08:
JSMpeg: an MPEG1 decoder in JavaScript for low-latency streaming.
- 2019‑05‑08:
How C array sizes become part of a library's ABI.
- 2019‑05‑08:
Google Ads malware seen in the wild.
- 2019‑05‑08:
Brian Kernighan interviews Ken Thompson. (YouTube)
- 2019‑05‑08:
Ted Chiang returns with an awe-inducing collection "Exhalation".
- 2019‑05‑08:
pg_auto_failover: Open source extension for high availability of PostgreSQL.
- 2019‑05‑08:
Dealing with software collapse / rot.
- 2019‑05‑08:
Securing network time.
- 2019‑05‑08:
Surprisingly Turing-Complete.
- 2019‑05‑08:
Securing cookies with cookie prefixes.
- 2019‑05‑08:
Building a URL shortener with only AWS Lambda.
- 2019‑05‑08:
css-only-chat: A truly monstrous async web chat using no JS whatsoever on the frontend.
- 2019‑05‑07:
How Cloudflare serves up hate online.
- 2019‑05‑07:
Halving metrics ingestion latency by (briefly) forking the Golang compiler.
- 2019‑05‑07:
How Rust solves dependency hell.
- 2019‑05‑07:
ups: an X11 debugger for C.
- 2019‑05‑06:
May 1968: a chronology of events in France and internationally.
- 2019‑05‑06:
Low-latency typing with pleasure.
- 2019‑05‑06:
Rust await syntax considerations.
- 2019‑05‑06:
A final proposal for await syntax in Rust.
- 2019‑05‑06:
The existential crisis plaguing online extremism researchers.
- 2019‑05‑06:
Lithium-ion batteries from Amazon are exploding.
- 2019‑05‑05:
How twisted graphene became the big thing in physics.
- 2019‑05‑04:
Unraveling the JPEG.
- 2019‑05‑04:
Legit: an esoteric programming language encoded in a git commit graph.
- 2019‑05‑04:
Don't do this with PostgreSQL.
- 2019‑05‑03:
Enforcing compile-time permission checking with TypeScript brands.
- 2019‑05‑03:
Generic returns in Rust.
- 2019‑05‑03:
Mathematical jargon failures.
- 2019‑05‑02:
The myth of the impartial machine.
- 2019‑05‑01:
The search for McLaren's extra pedal.
- 2019‑05‑01:
YouTube's conspiracy to kill IE6.
- 2019‑05‑01:
What we're learning about how the sector understands "digital".
- 2019‑05‑01:
GIN indexes in PostgreSQL.
- 2019‑04‑29:
The weirdest JavaScript syntax.
- 2019‑04‑29:
Too simple to be simple.
- 2019‑04‑29:
Why isn't 1 a prime number?
- 2019‑04‑29:
The saddest thing about the integers: you can't tune a piano.
- 2019‑04‑28:
The structure of a programming language revolution.
- 2019‑04‑28:
Forget privacy: you're terrible at targeting anyway.
- 2019‑04‑28:
Psychology of human misjudgment.
- 2019‑04‑27:
Stop memset()ing structures.
- 2019‑04‑27:
A woman's work: the inside story.
- 2019‑04‑27:
Turing completeness, weird machines, and muddled terminology.
- 2019‑04‑27:
Open-sourcing F14: Facebook's memory-efficient hash tables.
- 2019‑04‑26:
Ireland blocks the world on data privacy.
- 2019‑04‑26:
Making the DNS more private with QNAME minimisation.
- 2019‑04‑25:
Extensibility, XML Vocabularies, and XML Schema.
- 2019‑04‑24:
Getting started with qemu.
- 2019‑04‑24:
First debris pieces from the Indian ASAT test of 27 March catalogued.
- 2019‑04‑24:
A 'blockchain bandit' is guessing private keys and scoring millions.
- 2019‑04‑24:
Past the tipping point: the persistence of firefighting in product development.
- 2019‑04‑23:
Consoles of IBM System/360 mainframes.
- 2019‑04‑23:
When workers control the code.
- 2019‑04‑23:
(Right to Left (The Mirror World
- 2019‑04‑23:
TLS guidelines from NCSC-NL.
- 2019‑04‑23:
Egg Clock, with photochromic paint and a laser. (YouTube)
- 2019‑04‑23:
An overview of the C++ lifetime safety proposal.
- 2019‑04‑23:
Lifetime safety: preventing common dangling pointer errors in C++.
- 2019‑04‑23:
Modern C++ won't save us.
- 2019‑04‑22:
Windows CreateProcess() is accidentally quadratic.
- 2019‑04‑22:
Generating fractals with Postgres.
- 2019‑04‑22:
Is everything an MLM?
- 2019‑04‑22:
Some internet outages predicted soon as BGP '768k Day' approaches.
- 2019‑04‑22:
Hardening SSH with 2FA.
- 2019‑04‑22:
Facial recognition is the plutonium of AI.
- 2019‑04‑22:
Optimize What? Silicon Valley is full of the stupidest geniuses you'll ever meet.
- 2019‑04‑21:
The antique toaster that's better than yours. (YouTube)
- 2019‑04‑21:
Computus, antisemitism, and the early christian debate over easter.
- 2019‑04‑21:
Defeating Racket's separate compilation guarantee.
- 2019‑04‑20:
Fairylog: a Racket DSL for generating Verilog.
- 2019‑04‑20:
BYD, the world's biggest electric car maker.
- 2019‑04‑20:
New features in Fortran 2018.
- 2019‑04‑20:
What is Infocom ZIL anyway?
- 2019‑04‑19:
12 nice Rust libraries you should try.
- 2019‑04‑19:
Custom allocators in C++.
- 2019‑04‑18:
Neopentylglycol: a competitive solid refrigerant.
- 2019‑04‑18:
Adventures in reverse engineering Broadcom NIC firmware.
- 2019‑04‑18:
Thundering herds and cached promises.
- 2019‑04‑18:
Microsoft Windows Tiles vulnerable to a subdomain takeover attack.
- 2019‑04‑17:
Let's Encrypt will transition to their own root CA in July.
- 2019‑04‑17:
Post-surgical deaths in Scotland drop by a third, with the help of a checklist.
- 2019‑04‑17:
From the MCU to Star Wars: in praise of poorly built worlds.
- 2019‑04‑17:
RFC 8546: the wire image of a network protocol.
- 2019‑04‑17:
Nearly every sport except long-distance running is fundamentally absurd.
- 2019‑04‑16:
A look at IBM/360 core memory.
- 2019‑04‑16:
More DoH.
- 2019‑04‑15:
Convenient and idiomatic conversions in Rust.
- 2019‑04‑14:
A wander through a weird landscape to the heart of compilation.
- 2019‑04‑14:
Moving to a provenance-aware memory object model for C: a proposal for C2x.
- 2019‑04‑14:
Autonomous precision landing of space rockets.
- 2019‑04‑13:
Languages I want to write.
- 2019‑04‑13:
Automated testing of Rust examples in README files.
- 2019‑04‑13:
Value categories and references to them in C++.
- 2019‑04‑13:
Stable half-pixel filtering for video codecs.
- 2019‑04‑12:
A novel compact VLF antenna for communicating where other radios fail.
- 2019‑04‑11:
Using 6 page and 2 page documents to make organizational decisions.
- 2019‑04‑11:
Visibility of IPv4 and IPv6 prefix lengths.
- 2019‑04‑11:
EU agencies falsely report more than 550 archive.org URLs as terrorist content.
- 2019‑04‑10:
Mysterious safety-tampering malware infects a second critical infrastructure site.
- 2019‑04‑10:
Network boot to the rescue, with UEFI and IPv6.
- 2019‑04‑10:
Building the System/360 mainframe nearly destroyed IBM.
- 2019‑04‑10:
NVMM: NetBSD virtual machine manager.
- 2019‑04‑10:
A fork() in the road.
- 2019‑04‑09:
Amazon shoppers misled by 'bundled' star-ratings and reviews.
- 2019‑04‑09:
Facebook's ad targeting algorithm is inherently biased.
- 2019‑04‑08:
Most people do not expect Google to track their activities so pervasively.
- 2019‑04‑08:
Codecademy vs. the BBC Micro.
- 2019‑04‑08:
Angst about DNS privacy and DoH / DoC.
- 2019‑04‑08:
Types for programming and reasoning.
- 2019‑04‑08:
Compiling C to WebAssembly using clang/LLVM and WASI.
- 2019‑04‑07:
How poor public transport explains the UK's productivity puzzle.
- 2019‑04‑07:
Most browsers do not let you turn off hyperlink auditing third-party click tracking.
- 2019‑04‑07:
Fast directory listing on Linux.
- 2019‑04‑05:
Writing six-pagers at Amazon.
- 2019‑04‑05:
"Problems" with git format-patch and Gmail.
- 2019‑04‑05:
Using grub to patch the bios so Windows will boot with 16 GB of RAM in a motherboard that doesn't support it.
- 2019‑04‑04:
Idiomatic monads in Rust.
- 2019‑04‑02:
From gnuplot to Matplotlib and Pandas.
- 2019‑04‑01:
Mailchimp's Mandrill outage due to PostgreSQL XID wraparound.
- 2019‑04‑01:
Learning from The Economist's errors in data visualisation.
- 2019‑04‑01:
A parser for the TLS data description language used in the IETF RFCs.
- 2019‑03‑31:
Why are economists giving Piketty the cold shoulder?
- 2019‑03‑31:
Transparent huge pages: measuring the performance impact on a large JVM application.
- 2019‑03‑31:
Making chip packaging simpler.
- 2019‑03‑31:
RaptorQ (RFC6330) performance optimization in Rust.
- 2019‑03‑30:
The day the dinosaurs died.
- 2019‑03‑30:
Common statistical tests are linear models, or, how to teach stats.
- 2019‑03‑30:
DEC VT100 raster CRT typography.
- 2019‑03‑29:
Five super helpful Rust things that you might not have been told about.
- 2019‑03‑29:
mal: make a lisp.
- 2019‑03‑29:
The filter bubble is actually a decision bubble.
- 2019‑03‑28:
Lucet: Fastly's native WebAssembly compiler and runtime.
- 2019‑03‑28:
Stoicism's appeal to the rich and powerful.
- 2019‑03‑28:
The phantom builder in Rust.
- 2019‑03‑27:
Appl still hasn't fixd its MacBook kyboad poblm.
- 2019‑03‑27:
Some reasons why ASN.1 BER/CER/DER and other TLV encodings are bad.
- 2019‑03‑27:
From L3 to seL4: what have we learnt in 20 years of L4 microkernels?
- 2019‑03‑27:
An Intel programmer's impressions of ARM SIMD programming.
- 2019‑03‑27:
Sum-of-three-cubes problem solved for stubborn number 33.
- 2019‑03‑27:
A commentary on Arthur Whitney's b compiler.
- 2019‑03‑27:
Unexpected DNSKEY query growth around the 2018 root zone KSK rollover.
- 2019‑03‑26:
European parliament votes to delegate summer time rules to member states.
- 2019‑03‑26:
An experimental DNS-over-QUIC to UDP proxy.
- 2019‑03‑26:
Moral crumple zones: The future of designing autonomous systems will involve ethnographers.
- 2019‑03‑26:
Moral crumple zones: cautionary tales in human-robot interaction.
- 2019‑03‑25:
Gravitational lensing: a new Einstein cross is discovered.
- 2019‑03‑25:
In defense of YAML.
- 2019‑03‑25:
Hexagonal cross stitch.
- 2019‑03‑24:
What has your microcode done for you lately?
- 2019‑03‑24:
On the S-Box of GOST Streebog and Kuznyechik.
- 2019‑03‑24:
Pyre: Facebook's static type checker for Python.
- 2019‑03‑24:
PyType: Google's static type analyzer for Python.
- 2019‑03‑24:
KaTeX: the fastest math typesetting library for the web.
- 2019‑03‑24:
Symbols and functions available and not available in KaTeX.
- 2019‑03‑24:
PyRight: a static type checker for Python written by Microsoft in TypeScript.
- 2019‑03‑23:
Maybe you want Nomad rather than Kubernetes.
- 2019‑03‑23:
A Julia interpreter and debugger.
- 2019‑03‑23:
SRE case study: http load balancer confusion caused by broken back end web server.
- 2019‑03‑22:
Under the hood of the new ARIN web site.
- 2019‑03‑22:
So you want your app/website to work in China...
- 2019‑03‑21:
Computer latency at human scale.
- 2019‑03‑20:
Hacking JSON Web Tokens.
- 2019‑03‑20:
The pneumatic clock network in Paris, 1880-1927.
- 2019‑03‑20:
International space station docking standard.
- 2019‑03‑20:
How to take back control of /etc/resolv.conf on Linux.
- 2019‑03‑20:
CVE-2019-6454: systemd (PID1) crash with specially crafted unprivileged D-Bus message.
- 2019‑03‑20:
When pigs fly: optimising bytecode interpreters.
- 2019‑03‑20:
Optimizing a 350 line pathtracer in Rust From 48s to 5s.
- 2019‑03‑20:
Hardware debugging with JTAG on a Raspberry Pi.
- 2019‑03‑20:
Neo-Nazis bet big on Bitcoin (and lost).
- 2019‑03‑18:
IPv6 address unmasking via UPnP.
- 2019‑03‑18:
Meritocracy doesn't exist, and believing it does is bad for you.
- 2019‑03‑17:
Questions on the future of Open Source.
- 2019‑03‑17:
The 15 most famous transcendental numbers.
- 2019‑03‑17:
Nile shipwreck discovery proves Herodotus right, after 2,469 years.
- 2019‑03‑17:
On the hunt for Japan's elaborate, colorful utility access covers.
- 2019‑03‑17:
What is Amazon?
- 2019‑03‑17:
Unicode TOFU: detect changes to strings over time that might be spoofing.
- 2019‑03‑17:
Association of cognitive function with carbon dioxide exposure in office workers.
- 2019‑03‑17:
A gallery of early computers, 1940s - 1960s.
- 2019‑03‑16:
DNS timeline.
- 2019‑03‑16:
Analytical methods for mapping a circular disc to a square.
- 2019‑03‑16:
Repairing brass instruments with magnets.
- 2019‑03‑16:
William Jones: the man who invented π.
- 2019‑03‑15:
XXH3: a new speed-optimized hash algorithm.
- 2019‑03‑15:
What causes Ruby memory bloat?
- 2019‑03‑15:
Gwern's law: ads cost you 10% of your traffic.
- 2019‑03‑14:
Porting PuTTY to Windows on Arm.
- 2019‑03‑14:
A curious case of intermittent test failures due to slow SSD TRIM.
- 2019‑03‑14:
On the past, present, and future of COBOL.
- 2019‑03‑13:
Alice 4: a tablet dedicated to old SGI demos.
- 2019‑03‑13:
Fast / accurate floating point division with known divisor.
- 2019‑03‑13:
Generating bit combinations with Gosper's hack.
- 2019‑03‑13:
RFC 8555 ACME: universal encryption through automation.
- 2019‑03‑13:
GoDaddy, Apple, and Google misissue >1 million certificates with short serial numbers.
- 2019‑03‑13:
'The Left Hand of Darkness' at fifty.
- 2019‑03‑13:
Bugs and fixes for boot delays due to lack of random entropy on Linux.
- 2019‑03‑12:
Tips for a JavaScript-free web frontend.
- 2019‑03‑12:
Researchers find critical backdoor in Swiss online voting system.
- 2019‑03‑12:
Font shaping is Turing complete.
- 2019‑03‑10:
Usability improvements in GCC 9.
- 2019‑03‑10:
Lvalue min and max in C++.
- 2019‑03‑08:
Theranos: How a broken patent system sustained its decade-long deception.
- 2019‑03‑07:
A Golang malformed HTTP POST mystery.
- 2019‑03‑07:
Why do remote meetings suck so much?
- 2019‑03‑07:
Orchestrating false beliefs about gender discrimination.
- 2019‑03‑07:
Gender imbalances in the world's leading orchestras.
- 2019‑03‑07:
The precarious effort to continue traditional soy sauce production in Japan.
- 2019‑03‑06:
Automated tools discriminate against Black American language.
- 2019‑03‑06:
Keeping CALM: when distributed consistency is easy.
- 2019‑03‑06:
Why American rail construction costs are so high.
- 2019‑03‑06:
Mathgen: Randomly generated mathematics research papers.
- 2019‑03‑04:
Remote code execution and Domain Admin privileges due to a typo in PHP.
- 2019‑03‑04:
A quick look at QUIC.
- 2019‑03‑04:
What part of "No!" doesn't the DNS understand?
- 2019‑03‑04:
TLS in F*: Generating C code that people actually want to use.
- 2019‑03‑04:
Near misses, and how to avoid catastrophe.
- 2019‑03‑04:
The birthday paradox: on Jupiter, and beyond!
- 2019‑03‑04:
The MBA myth and the CEO cult.
- 2019‑03‑04:
Discrete robot motion planning in a continuous domain.
- 2019‑03‑03:
Understanding real-world concurrency bugs in Golang.
- 2019‑03‑03:
Debugging the Postgres query planner.
- 2019‑03‑03:
Memory Models: a case for rethinking parallel languages and hardware.
- 2019‑03‑03:
Not quite so broken TLS.
- 2019‑03‑03:
Lower bounds for the cost of multiplication via network coding.
- 2019‑03‑02:
Your database migrations are bad and you should feel bad.
- 2019‑03‑02:
Millions of binaries later: a look into Linux hardening in the wild.
- 2019‑03‑02:
OpenSSL future architecture plans.
- 2019‑03‑01:
DigiCert in-addr.arpa X.509 certificate mis-issuance.
- 2019‑03‑01:
Casper's clever little nightlight.
- 2019‑03‑01:
NASA is planning a space station in a weird lunar orbit.
- 2019‑03‑01:
Transparent logs for skeptical clients.
- 2019‑03‑01:
Formally specifying user interfaces.
- 2019‑03‑01:
Twitter (un)official API keys.
- 2019‑03‑01:
Reconstructing Twitter's firehose.
- 2019‑03‑01:
re2c: a free and open-source lexer generator for C and C++.
- 2019‑03‑01:
Hyperscan: a fast multi-pattern regex matcher for modern CPUs.
- 2019‑03‑01:
University of California terminates subscriptions with Elsevier in support of open access.
- 2019‑03‑01:
The other wrapping-the-Earth problem.
- 2019‑03‑01:
Git over FTP.
- 2019‑02‑28:
A deep dive on the recent widespread DNS hijacking attacks.
- 2019‑02‑28:
The surprising subtleties of zeroing a register.
- 2019‑02‑28:
We need Chrome no more.
- 2019‑02‑28:
PostgreSQL BRIN indexes: performance for big data with minimal storage.
- 2019‑02‑28:
The current state of open source backup management for PostgreSQL.
- 2019‑02‑28:
ExSpectre: hiding malware in speculative execution.
- 2019‑02‑27:
The soothing promise of our own artisanal Internet.
- 2019‑02‑27:
Content moderation has no easy answers.
- 2019‑02‑27:
Why women are underrepresented in clinical trials.
- 2019‑02‑27:
The 1979 Delft cycle plan.
- 2019‑02‑27:
Running a bakery on Emacs and PostgreSQL.
- 2019‑02‑26:
Thunderclap: vulnerabilities in IOMMU protection against untrustworthy peripherals.
- 2019‑02‑26:
The unscalable deadlock-prone thread pool.
- 2019‑02‑26:
Normalization of deviance.
- 2019‑02‑26:
Sisterhood of Cycling: the radical roots of the bicycle.
- 2019‑02‑26:
Type systems and logic.
- 2019‑02‑25:
Vim anti-patterns.
- 2019‑02‑25:
Stabilizer: statistically sound performance evaluation.
- 2019‑02‑24:
A meta approach to implementing programming languages.
- 2019‑02‑24:
How does the measles vaccine protect against other infectious diseases?
- 2019‑02‑24:
Stressing the elements: "illegal" Lego builds.
- 2019‑02‑24:
Enquire: discover C limits.h and float.h machine and compiler properties.
- 2019‑02‑24:
The cost of abstraction.
- 2019‑02‑24:
PostgreSQL on Linux fsync failure fixed.
- 2019‑02‑24:
The magical thinking of guys who love logic.
- 2019‑02‑23:
Varieties of polymorphism in Haskell.
- 2019‑02‑23:
Why does Julia work so well?
- 2019‑02‑23:
How not to measure computer system performance.
- 2019‑02‑22:
Gordon Ramsay's approach to food helped my family of autistic eaters.
- 2019‑02‑22:
Password managers: under the hood of secrets management.
- 2019‑02‑22:
Finally tagless, partially evaluated.
- 2019‑02‑21:
TSMC's photoresist contamination incident: $550 million in lost revenue.
- 2019‑02‑21:
COI: chat-over-IMAP.
- 2019‑02‑21:
Delta Chat: chat-over-email.
- 2019‑02‑21:
Patent exhaustion and open source.
- 2019‑02‑21:
Exploitation from malicious PCI Express peripherals.
- 2019‑02‑21:
simdjson: Parsing gigabytes of JSON per second.
- 2019‑02‑21:
How to get rid of sponsored Facebook posts.
- 2019‑02‑20:
Lessons from six software rewrite stories.
- 2019‑02‑20:
Mathematics, morally.
- 2019‑02‑20:
Vector instructions are better then SIMD instructions.
- 2019‑02‑20:
Maybe 'Oumuamua is an interstellar snowflake.
- 2019‑02‑19:
AWS Nitro system.
- 2019‑02‑19:
3264 conics tangent to five conics.
- 2019‑02‑19:
Linux kernel DNS resolver module.
- 2019‑02‑19:
Why a grape turns into a fireball in a microwave.
- 2019‑02‑18:
ASCII art in comments in code.
- 2019‑02‑18:
Spectre is here to stay: An analysis of side-channels and speculative execution.
- 2019‑02‑18:
Machine-learning in science is producing results that are misleading and often completely wrong.
- 2019‑02‑18:
Differential privacy: an easy case.
- 2019‑02‑18:
Dropgangs: darknet markets using systems of dead drops.
- 2019‑02‑18:
Encrypted databases, searchable encryption, and the ever-expanding leakage function.
- 2019‑02‑18:
Operable software: on simplicity, complexity, and observability.
- 2019‑02‑18:
How GitLab used delayed replication for disaster recovery with PostgreSQL.
- 2019‑02‑18:
Towards an understanding of technical debt.
- 2019‑02‑18:
The log/event processing pipeline you can't have.
- 2019‑02‑18:
LD_PRELOAD: the hero we need and deserve.
- 2019‑02‑17:
The joy of standards.
- 2019‑02‑17:
You probably don't need a single-page application.
- 2019‑02‑17:
Mesh: compacting memory management for C/C++ applications.
- 2019‑02‑17:
The rest of the world always knew Churchill was a villain.
- 2019‑02‑16:
Information related to #dns on freenode.
- 2019‑02‑16:
The Single Rotation rule: a remarkably simple and rich reversible cellular automaton.
- 2019‑02‑15:
The complicated economy of Open Source software.
- 2019‑02‑15:
Don't get clever with login forms.
- 2019‑02‑15:
Dudle: online event coordination and survey application. (A Free alternative to Doodle.)
- 2019‑02‑15:
Computing extremely accurate quantiles using t-digests.
- 2019‑02‑15:
Tubes vs. transistors: a comparative study.
- 2019‑02‑15:
Lessons from Google's geographical GDPR goof.
- 2019‑02‑15:
Logical difficulties in modern mathematics.
- 2019‑02‑15:
Why do the Northern and Southern Lights differ?
- 2019‑02‑15:
Making a Menger sponge in stained glass.
- 2019‑02‑14:
How white space killed an enterprise app, and why data density matters.
- 2019‑02‑13:
A history of the Network Information Center.
- 2019‑02‑13:
Is email making professors stupid?
- 2019‑02‑12:
The curious case of disappearing buses.
- 2019‑02‑12:
Kubernetes ndots 5 and long DNS search path.
- 2019‑02‑11:
None of my web projects want to be single page applications.
- 2019‑02‑11:
1839 woven portrait of Jacquard: an important image from the early history of computing.
- 2019‑02‑11:
CVE-2019-5736: Linux container breakout.
- 2019‑02‑11:
A century of Noether's theorem.
- 2019‑02‑11:
Chronos: a secure selection and filtering mechanism for NTP.
- 2019‑02‑11:
Laziness does not exist, but unseen barriers do.
- 2019‑02‑11:
The New Systems Engineer.
- 2019‑02‑11:
Fact-checking Facebook was like playing a doomed game of Whack-A-Mole.
- 2019‑02‑11:
Questions for a new technology.
- 2019‑02‑11:
Make the web boring.
- 2019‑02‑11:
The future of public access to Castle Mound.
- 2019‑02‑11:
How do we know the history of extreme poverty?
- 2019‑02‑10:
Five things that scare me about AI.
- 2019‑02‑10:
DasKeyboard lights show blood sugar changes using my body's REST API.
- 2019‑02‑10:
What PostgreSQL developers know about fsync() errors.
- 2019‑02‑10:
Oh god, it's raining newsletters.
- 2019‑02‑10:
Checking firewall equivalence with Z3.
- 2019‑02‑09:
Building a RISC-V PC.
- 2019‑02‑09:
A new Python kernel for Jupyter.
- 2019‑02‑08:
Reflecting on a failure to build a billion-dollar company.
- 2019‑02‑08:
Move fast and migrate things: how Benchling automated migrations in Postgres.
- 2019‑02‑08:
Downgrade attack on TLS 1.3 and vulnerabilities in major TLS libraries.
- 2019‑02‑08:
Faster remainders when the divisor is a constant: beating compilers and libdivide.
- 2019‑02‑08:
HTML, CSS and our vanishing industry entry points
- 2019‑02‑07:
The big DNS privacy debate at FOSDEM.
- 2019‑02‑07:
FOSDEM 2019: a new view from the NOC.
- 2019‑02‑07:
What happened to the 100,000-hour LED bulbs?
- 2019‑02‑06:
The Earth and the far side of the moon photographed by radio amateurs.
- 2019‑02‑06:
A simple explanation for the existence of adversarial examples with small Hamming distance.
- 2019‑02‑06:
Previous: a NeXT emulator.
- 2019‑02‑06:
Vulnerability postmortem: A curious case of convexity confusion in Skia.
- 2019‑02‑05:
There and Snack Again: How to eat everything in the Lord of the Rings.
- 2019‑02‑05:
Analysis: Why the UK's CO2 emissions have fallen 38% since 1990.
- 2019‑02‑04:
A 6502 assembly language monad in Haskell.
- 2019‑02‑04:
Ten rules for a better conference name badge.
- 2019‑02‑04:
Debugging Emacs or: how I learned to stop worrying and love DTrace.
- 2019‑02‑04:
Asterius: A Haskell to WebAssembly compiler.
- 2019‑02‑03:
A brief history of the UUID.
- 2019‑02‑03:
Using BGP to calculate fastest paths around the London Underground.
- 2019‑02‑03:
All late projects are the same.
- 2019‑02‑03:
The death of transit and the future Internet.
- 2019‑02‑03:
RustPython: A Python Interpreter written in Rust.
- 2019‑02‑03:
Machine learning leads mathematicians to undecidable problem.
- 2019‑02‑03:
The Soviet license plate game and Kolmogorov complexity.
- 2019‑02‑02:
Bats and dolphins evolved echolocation in the same way.
- 2019‑02‑02:
The cloud skills shortage and the unemployed army of the certified.
- 2019‑02‑01:
How many .com domain names are unused?
- 2019‑01‑30:
The day I fell in love with fuzzing.
- 2019‑01‑30:
Lock-free Rust: Crossbeam in 2019.
- 2019‑01‑30:
The 26,000-year astronomical monument at the Hoover dam.
- 2019‑01‑30:
Lessons learned scaling PostgreSQL database to 1.2bn records/ month.
- 2019‑01‑29:
How a teenage 'Fortnite' player found Apple's FaceTime bug. It was so hard to report!
- 2019‑01‑28:
JVM issue: concurrency is affected by changing the system time!
- 2019‑01‑28:
The story of Squeak/Pharo, a practical Smalltalk written in itself.
- 2019‑01‑28:
Abusing 2FA to maintain persistence after a password change.
- 2019‑01‑28:
World's oldest periodic table chart found in St Andrews.
- 2019‑01‑28:
Smoothsort demystified.
- 2019‑01‑28:
A SQL to C compiler in 500 lines of code.
- 2019‑01‑28:
Outperforming LAPACK with Python and LLVM.
- 2019‑01‑27:
tinykaboom: how to ray-trace an explosion.
- 2019‑01‑27:
The legacy of Firefox OS.
- 2019‑01‑27:
PostgreSQL backend flowchart.
- 2019‑01‑27:
Why is it so hard to detect a key up event on Linux?
- 2019‑01‑26:
MDT9100 Motorola mobile data terminal.
- 2019‑01‑26:
Special cases are a code smell.
- 2019‑01‑26:
JMAP: it's like IMAP but not really.
- 2019‑01‑26:
Why do Americans claim to be more religious than they are?
- 2019‑01‑26:
It's time to move on from two phase commit.
- 2019‑01‑26:
websocketd: WebSockets the Unix way.
- 2019‑01‑26:
websocat: a command-line client for WebSockets.
- 2019‑01‑25:
Women on the pill don't need a period.
- 2019‑01‑25:
Oxford scientists successfully recreated a famous rogue wave in the lab.
- 2019‑01‑25:
How much maintenance_work_mem does PostgreSQL need?
- 2019‑01‑24:
How to make the Chord DHT correct.
- 2019‑01‑24:
Why don't people use formal methods?
- 2019‑01‑24:
'The goal is to automate us': welcome to the age of surveillance capitalism.
- 2019‑01‑24:
How LiveJournal pioneered then lost blogging.
- 2019‑01‑23:
pg_permission: Inspecting your PostgreSQL access controls.
- 2019‑01‑23:
Ghostscript vulnerability: subroutines within pseudo-operators must themselves be pseudo-operators.
- 2019‑01‑23:
proc-macro-rules: macro-rules pattern matching inside Rust procedural macros.
- 2019‑01‑23:
A lifetime of systems thinking.
- 2019‑01‑22:
Remote code execution vulnerability in Debian `apt`.
- 2019‑01‑22:
Accounting machines, the IBM 1403, and why printers standardized on 132 columns.
- 2019‑01‑22:
HTML5 input types: where are they now?
- 2019‑01‑22:
Build better forms by not taking away affordances.
- 2019‑01‑22:
UTC time scales and leap second support in the Koka programming language.
- 2019‑01‑21:
Advanced Mac Substitute: a 68k Mac emulator.
- 2019‑01‑20:
Kubernetes failure stories.
- 2019‑01‑20:
An obituary of Karen Sparck Jones, who pioneered natural language processing.
- 2019‑01‑20:
The archetype of the haunted house: Winchester Mystery House.
- 2019‑01‑20:
A history of Algol 68-R.
- 2019‑01‑20:
MySQL client allows MySQL server to request any local file.
- 2019‑01‑19:
AWS EC2 instance price guide.
- 2019‑01‑18:
Introduction to TLA+ model checking on the command line.
- 2019‑01‑18:
Is C++ fast?
- 2019‑01‑18:
History of IEEE P1003.1 POSIX time.
- 2019‑01‑18:
The malign incompetence of the British ruling class.
- 2019‑01‑18:
How SMS set back the mobile internet by ten years.
- 2019‑01‑18:
Why is storage on Kubernetes so hard?
- 2019‑01‑18:
The route of a text message.
- 2019‑01‑17:
CSRG Archive, now on DVD with extra non-BSD software.
- 2019‑01‑17:
The heterosexual tragedy of Top Gun.
- 2019‑01‑17:
The need for sustainable open source projects, like FRR.
- 2019‑01‑17:
Isle Of Man is the first place in the British Isles to decriminalise abortion.
- 2019‑01‑17:
Amazon Aurora: avoiding distributed consensus for IO, commits, and membership changes.
- 2019‑01‑17:
More than you really wanted to know about patch.
- 2019‑01‑17:
Crisis on the High Plains: the loss of America's largest aquifer, the Ogallala.
- 2019‑01‑17:
A Pratt parser in TypeScript.
- 2019‑01‑17:
A cascading failure of distributed systems in a large Kubernetes cluster.
- 2019‑01‑16:
Battle of the axe men: who really built the first electric rock 'n' roll guitar?
- 2019‑01‑16:
Field notes from an American in London.
- 2019‑01‑16:
Gettier cases: the relevance to programming of a three-page paper that shook philosophy.
- 2019‑01‑15:
A workflow for maintaining feature branches and submitting patches to PostgreSQL.
- 2019‑01‑15:
Stepping away from Sass.
- 2019‑01‑14:
The mysterious, stubborn appeal of mass-produced fried chicken.
- 2019‑01‑14:
Porting 30K lines of code from Flow to TypeScript.
- 2019‑01‑14:
The rise and demise of RSS.
- 2019‑01‑14:
Getting an IBM AS/400 midrange computer on the Internet.
- 2019‑01‑14:
Designing resilient systems with retries.
- 2019‑01‑14:
Courier and Dropbox's migration to gRPC.
- 2019‑01‑13:
Sail ISA model of ARM-v8.5-a can boot Linux.
- 2019‑01‑12:
The second GPS week number rollover is coming in April.
- 2019‑01‑12:
Crochet relays.
- 2019‑01‑12:
The Embroidered Computer.
- 2019‑01‑12:
Spurious correlations.
- 2019‑01‑12:
The holes in the map: England's unregistered land.
- 2019‑01‑11:
The early history of F#.
- 2019‑01‑11:
Factoring polynomials is not a shortcut to breaking RSA.
- 2019‑01‑11:
Earth's magnetic field is acting up and geologists don't know why.
- 2019‑01‑11:
How you can organize your GitHub repositories.
- 2019‑01‑11:
Tony Hoare's proposal for record handling in ALGOL. (1965)
- 2019‑01‑11:
Deriving traits in Rust with procedural macros.
- 2019‑01‑11:
Find the hard work you are willing to do.
- 2019‑01‑10:
The painful price of becoming Jackie Chan.
- 2019‑01‑10:
AWS gives open source the middle finger.
- 2019‑01‑10:
Why people in cities walk fast.
- 2019‑01‑10:
The disappearing Windows DNS debug log.
- 2019‑01‑09:
Looking back at the Berkeley Postgres project.
- 2019‑01‑09:
An analysis of lapis lazuli in medieval dental plaque illuminates the forgotten history of female scribes.
- 2019‑01‑09:
How cartographers for the U.S. military inadvertently screwed up international geoIP locations.
- 2019‑01‑09:
Using TypeScript transforms to enrich runtime code.
- 2019‑01‑09:
Think Sci-Hub is just downloading PDFs? Think again.
- 2019‑01‑09:
Notes on test-case reduction.
- 2019‑01‑08:
DHCP is hard: a story in five bugs.
- 2019‑01‑08:
The FRRouting protocol suite: a descendent of Zebra and Quagga.
- 2019‑01‑08:
The dangers of PostgreSQL streaming across versions of glibc with different collation orders.
- 2019‑01‑08:
OneDev: git hosting and code review in Java.
- 2019‑01‑08:
Emulating a buffer overflow for fun and profit in StarCraft: Remastered.
- 2019‑01‑07:
How to make sure your talk doesn't suck.
- 2019‑01‑07:
libeatmydata: disable fsync and speed up your tests!
- 2019‑01‑07:
SQL is no excuse to avoid DevOps.
- 2019‑01‑07:
Huawei unveils the highest-performance ARM-based CPU.
- 2019‑01‑07:
Why SRE documents matter.
- 2019‑01‑07:
Atomic clocks: it is important that they keep good time. (part 2)
- 2019‑01‑07:
Atomic clocks: it is important that they keep good time. (part 1)
- 2019‑01‑07:
Why isn't bamboo wood more popular?
- 2019‑01‑07:
The state of software security in 2019
- 2019‑01‑07:
A history of soap.
- 2019‑01‑07:
ARM Memory Tagging: how it improves C/C++ memory safety.
- 2019‑01‑06:
Hints and principles for computer system design.
- 2019‑01‑06:
Hints for computer system design.
- 2019‑01‑06:
The verified CakeML compiler backend.
- 2019‑01‑06:
The evolutionary mystery of left-handedness.
- 2019‑01‑06:
Mapping and visualization by Scott Reinhard.
- 2019‑01‑05:
Why is Maxwell's theory so hard to understand?
- 2019‑01‑05:
Towards a better Pythagorean cup.
- 2019‑01‑05:
LEGO Porsche crashing in slow motion at 1000 fps . (YouTube)
- 2019‑01‑04:
We'll never know whether monorepos are better.
- 2019‑01‑03:
Some common CSS problems.
- 2019‑01‑03:
Monorepos: Please don't!
- 2019‑01‑03:
How 'magic angle' graphene is stirring up physics.
- 2019‑01‑03:
Programmer as wizard, programmer as engineer.
- 2019‑01‑03:
Chip design at Apple in the 1980s.
- 2019‑01‑03:
Exploiting the Math.expm1 typing bug in V8.
- 2019‑01‑03:
caro: if jq and xargs had a baby.
- 2019‑01‑02:
POLA would have prevented the npm event-stream incident.
- 2019‑01‑02:
STAMPing on the npm event-stream compromise.
- 2019‑01‑02:
How 'Spider-Man: Into the Spider-Verse' was animated.
- 2019‑01‑02:
Fixing the nargs() subroutine on a PDP-11 with split I/D address space.
- 2019‑01‑02:
Be Moore Like Chuck.
- 2019‑01‑01:
Travels with Smalltalk.
- 2019‑01‑01:
The 4th annual Tucker awards for excellence in swearing.
- 2019‑01‑01:
Let's Encrypt looking forward to 2019.
- 2019‑01‑01:
The Vimes boots theory: further reflections.