Feed

  1. #5 — September 2025


    | petemillspaugh.com
  2. DHH Is Way Worse Than I Thought


    | jakelazaroff.com
  3. Danger Gently


    | chriscoyier.net
  4. Breaking “provably correct” Leftpad


    | lukeplant.me.uk
  5. Case Study: How Proton uses Rust to build secure cross-platform applications for millions of people


    | kerkour.com
  6. Email outage


    | kerkour.com
  7. Winning a bet about “six”, the Python 2 compatibility shim


    | sethmlarson.dev
  8. Subtest grouping in Go


    | rednafi.com
  9. A Strong Reference to Weak References in Python


    | blog.codingconfessions.com
  10. How to find a domain for your startup


    | petemillspaugh.com
  11. Welcoming CERN to Have I Been Pwned


    | troyhunt.com
  12. Weekly Update 471


    | troyhunt.com
  13. GZipped files and streams may contain names


    | sethmlarson.dev
  14. Strongbacks


    | chriscoyier.net
  15. New Blog Post: " A Very Early History of Algebraic Data Types"


    | buttondown.com
  16. My GitHub account has been blocked. Edit: Solved. Thank you all!


    | kerkour.com
  17. Microwaves


    | chriscoyier.net
  18. Implementing automatic TLS for Pingoo: Here is what it takes to build a secure internet


    | kerkour.com
  19. HIBP Demo: Querying the API, and the Free Test Key!


    | troyhunt.com
  20. Compiling Python to Run Anywhere


    | blog.codingconfessions.com
  21. Send a Song


    | chriscoyier.net
  22. Flies


    | chriscoyier.net
  23. What's a UUID, and what do you use that for?


    | bitecode.dev
  24. Weekly Update 470


    | troyhunt.com
  25. Ongoing Tradeoffs, and Incidents as Landmarks


    | ferd.ca
  26. Let the domain guide your application structure


    | rednafi.com
  27. Is Zig's New Writer Unsafe?


    | openmymind.net
  28. Have I Been Pwned Demos Are Now Live!


    | troyhunt.com
  29. De la mystification de la Grande Idée


    | ploum.net
  30. Seven Years of Firecracker


    | brooker.co.za
  31. Announcing Pingoo: The fast and secure Load Balancer / API Gateway with built-in service discovery, WAF and bot management (in Rust)


    | kerkour.com
  32. What Makes System Calls Expensive: A Linux Internals Deep Dive


    | blog.codingconfessions.com
  33. In response to a developer asking about systems


    | notes.eatonphil.com
  34. Test state, not interactions


    | rednafi.com
  35. Devotions on 1 Thessalonians 1, August 2025


    | lukeplant.me.uk
  36. Weekly Update 469


    | troyhunt.com
  37. SCREAM CIPHER (“ǠĂȦẶAẦ ĂǍÄẴẶȦ”)


    | sethmlarson.dev
  38. Infinite Precision CVSS Calculator


    | sethmlarson.dev
  39. Many Hard Leetcode Problems are Easy Constraint Problems


    | buttondown.com
  40. Protecting Rust against supply chain attacks


    | kerkour.com
  41. A simple clustering and replication solution for Postgres


    | notes.eatonphil.com
  42. À la recherche de l’humanité perdue…


    | ploum.net
  43. Strong Eventual Consistency - The Big Idea behind CRDTs


    | lewiscampbell.tech
  44. Weekly Update 468


    | troyhunt.com
  45. Early return and goroutine leak


    | rednafi.com
  46. Everything is a []u8


    | openmymind.net
  47. What's up Python? Astral never stops, JetBrains gives us insights


    | bitecode.dev
  48. The Angels and Demons of Nondeterminism


    | buttondown.com
  49. Extracting NES & N64 ROMs from Zelda Collector's Edition


    | sethmlarson.dev
  50. SQL needed structure


    | scattered-thoughts.net
  51. Analytics query goes 6x faster with EDB Postgres Distributed's new analytics engine


    | notes.eatonphil.com
  52. #4 — August 2025


    | petemillspaugh.com
  53. Untitled


    | chriscoyier.net
  54. The Millspaugh method


    | petemillspaugh.com
  55. 0054: zest namespaces, store tags after payloads, go allocation probe, everyones got one, pprof labelguns, go value types, go perf probe, tpde, anyblox, books


    | scattered-thoughts.net
  56. Une vie sans notifications


    | ploum.net
  57. Centralia Old-Time Campout 2025


    | chriscoyier.net
  58. Talk: Почему компьютеры не умеют считать? @ Podlodka


    | tonsky.me
  59. Weekly Update 467


    | troyhunt.com
  60. Lifecycle management in Go tests


    | rednafi.com
  61. Finding Bugs in a Coding Agent with Lightweight DST


    | wickstrom.tech
  62. Logical Duals in Software Engineering


    | buttondown.com
  63. Home Assistant + Ubiquiti + AI = Home Automation Magic


    | troyhunt.com
  64. Building a Plugin System for Rust: Native Libraries vs Scripting Language vs WebAssembly vs Rules Engine


    | kerkour.com
  65. I tell you what I want, what I really, really want


    | bell.bz
  66. Titles matter


    | joshcollinsworth.com
  67. Pas de médaille pour les résistants


    | ploum.net
  68. Weekly Update 466


    | troyhunt.com
  69. The kids are alright


    | bitecode.dev
  70. Chalk Font Kid


    | chriscoyier.net
  71. I'm too dumb for Zig's new IO interface


    | openmymind.net
  72. Sapir-Whorf does not apply to Programming Languages


    | buttondown.com
  73. Launching MDN's new front end


    | developer.mozilla.org
  74. This Blog Will Make You a Better Programmer


    | hamvocke.com
  75. Arc Troopers: Adventures in Async Rust


    | bitbashing.io
  76. The Important Things in Life


    | hamvocke.com
  77. Weekly Update 465


    | troyhunt.com
  78. Basic Type System Terminology


    | lewiscampbell.tech
  79. How to Leverage the CPU’s Micro-Op Cache for Faster Loops


    | blog.codingconfessions.com
  80. Dynamo, DynamoDB, and Aurora DSQL


    | brooker.co.za
  81. Maintainers of Last Resort


    | words.filippo.io
  82. Set up a single-node EDB Postgres Distributed cluster on Ubuntu


    | notes.eatonphil.com
  83. Replacing Makefile with Invoke for Cross-Platform Python Tasks


    | safjan.com
  84. That 16 Billion Password Story (AKA "Data Troll")


    | troyhunt.com
  85. Cross-Site Request Forgery


    | words.filippo.io
  86. Lessons learned from implementing SIMD-accelerated algorithms (ChaCha20 / ChaCha12) in pure Rust


    | kerkour.com
  87. Get Pwned, Get Local Advice From a Trusted Gov Source


    | troyhunt.com
  88. Just a nice shell script


    | bitecode.dev
  89. Weekly Update 464


    | troyhunt.com
  90. LLMs as Parts of Systems


    | brooker.co.za
  91. What even is distributed systems


    | notes.eatonphil.com
  92. Key Derivation with ChaCha20 (or ChaCha12)


    | kerkour.com
  93. Choice is important with stuff like highlighting


    | bell.bz
  94. Software books I wish I could read


    | buttondown.com
  95. ChaCha12-BLAKE3: Secure, Simple and Fast authenticated and committing encryption for any CPU


    | kerkour.com
  96. We shouldn’t have needed lockfiles


    | tonsky.me
  97. Welcoming Guardio to Have I Been Pwned's Partner Program


    | troyhunt.com
  98. The hiring test that defeated AI


    | bitecode.dev
  99. Everyone's got one


    | scattered-thoughts.net
  100. Your Own Newspaper, Or Not


    | chriscoyier.net
  101. Getting Started with Randomised Testing


    | lewiscampbell.tech
  102. Pixel data from encoders to decoders


    | developer.mozilla.org
  103. Big O vs Hardware: Better Complexity ≠ Better Performance


    | blog.codingconfessions.com
  104. Gateway pattern for external service calls


    | rednafi.com
  105. What's up Python? Unpacking in Comprehensions, Android Wheels, and uv is a big boy now...


    | bitecode.dev
  106. Go Assembly Mutation Testing


    | words.filippo.io
  107. Stack traces for Postgres errors with backtrace_functions


    | notes.eatonphil.com
  108. The $200 Yamaha


    | chriscoyier.net
  109. 2000 words about arrays and tables


    | buttondown.com
  110. The Signal Protocol Explained #2: Implementing the Double Ratchet Algorithm in Rust


    | kerkour.com
  111. Using OpenAI Python SDK with Local Ollama Models (and When to Opt for Alternatives)


    | safjan.com
  112. I deleted Bluesky, Mastodon and LinkedIn off my phone


    | bell.bz
  113. Implementing a Key Encapsulation Mechanism (KEM) with X25519


    | kerkour.com
  114. Why I’m not letting the juniors use GenAI for coding


    | lukeplant.me.uk
  115. Programming Language Escape Hatches


    | buttondown.com
  116. Impact of AI on Tech Content Creators


    | chriscoyier.net
  117. What "Parse, don't validate" means in Python?


    | bitecode.dev
  118. The Signal Protocol Explained #1: Implementing the Post-Quantum Extended Diffie-Hellman (PQXDH) Protocol in Rust


    | kerkour.com
  119. Celebrating 20 years of MDN


    | developer.mozilla.org
  120. Building a Multi-Notebook Report with Quarto


    | safjan.com
  121. TAG Bulletin: Q2 2025


    | blog.google
  122. x86 Assembly Exercise #1: Toy kill Program (Solution)


    | blog.codingconfessions.com
  123. The EU can be shut down with a few keystrokes


    | bitecode.dev
  124. Go allocation probe


    | scattered-thoughts.net
  125. Maybe writing speed actually is a bottleneck for programming


    | buttondown.com
  126. NIH Is Far Cheaper Than The Wrong Dependency


    | lewiscampbell.tech
  127. Zig's new Writer


    | openmymind.net
  128. screencasting.com


    | chriscoyier.net
  129. Understanding Registers and Data Movement in x86-64 Assembly


    | blog.codingconfessions.com
  130. Rust is a great fit for the agentic era


    | kerkour.com
  131. A Programmer’s Guide to x86-64 Assembly (Series Overview)


    | blog.codingconfessions.com
  132. Gaslight-driven development


    | tonsky.me
  133. #3 — July 2025


    | petemillspaugh.com
  134. Encrypting Files with Passkeys and age


    | words.filippo.io
  135. Brett Cannon on Python, humans... and packaging


    | bitecode.dev
  136. Setting Up an SDL3 Mac App in XCode 16


    | journal.stuffwithstuff.com
  137. Store tags after payloads


    | scattered-thoughts.net
  138. The Creative Act by Rick Rubin


    | petemillspaugh.com
  139. Pure Rust cryptography is better than raw performance


    | kerkour.com
  140. The 4 pillars of Rust's superiority


    | kerkour.com
  141. How to Mount a Balcony Awning


    | solar.lowtechmagazine.com
  142. Logic for Programmers Turns One


    | buttondown.com
  143. You Should Run a Certificate Transparency Log


    | words.filippo.io
  144. What's up Python? Mypy gets better, uv faster, FastApi easier, Emscripten formal...er


    | bitecode.dev
  145. Podcast: Datomic: самая рок-н-рольная БД @ Тысяча фичей


    | tonsky.me
  146. The Framework 12 is the Thinkpad X220 we deserve in 2025


    | raphaelkabo.com
  147. Logical Quantifiers in Software


    | buttondown.com
  148. Why This Python Performance Trick Doesn’t Matter Anymore


    | blog.codingconfessions.com
  149. Flags for discoverable test config in Go


    | rednafi.com
  150. Want to meet people, try charging them for it?


    | notes.eatonphil.com
  151. Statically checking Python dicts for completeness


    | lukeplant.me.uk
  152. New zine: The Secret Rules of the Terminal


    | jvns.ca
  153. Downgrade or Upgrade Your Python Version with uv


    | safjan.com
  154. Lecture: Queueing theory on a cocktail napkin


    | blog.danslimmon.com
  155. Rust: A programming language that grows with you, your career and your projects


    | kerkour.com
  156. You can cheat a test suite with a big enough polynomial


    | buttondown.com
  157. Debugging memory leaks in Postgres, jemalloc edition


    | notes.eatonphil.com
  158. Career advice, or something like it


    | brooker.co.za
  159. Homomorphically Encrypting CRDTs


    | jakelazaroff.com
  160. Making System Calls in x86-64 Assembly


    | blog.codingconfessions.com
  161. How to Dress and Undress your Home


    | solar.lowtechmagazine.com
  162. Beyond Coverage - Building Truly Complete Test Suites with GitHub Copilot


    | safjan.com
  163. Solving LinkedIn Queens with SMT


    | buttondown.com
  164. Introduction to embedded development with Rust: Overview of the ecosystem


    | kerkour.com
  165. Using `make` to compile C programs (for non-C-programmers)


    | jvns.ca
  166. The Gap Through Which We Praise the Machine


    | ferd.ca
  167. One Law to Rule Them All: The Iron Law of Software Performance


    | blog.codingconfessions.com
  168. AI is a gamechanger for TLA+ users


    | buttondown.com
  169. Record broken; Broken record


    | petemillspaugh.com
  170. it took a big cup


    | j3s.sh
  171. Advanced Testing and Determinism


    | lewiscampbell.tech
  172. Systems Fun at HotOS


    | brooker.co.za
  173. What's up Python? Faster CPython cancelled, a new installer and yet another type checker


    | bitecode.dev
  174. 0053: consulting, go tips, benchmark_mode, niri, linkrot, sea of nos, llm outsourcing, books


    | scattered-thoughts.net
  175. Consider Knitting


    | journal.stuffwithstuff.com
  176. What does "Undecidable" mean, anyway


    | buttondown.com
  177. Talk: Local-first is not going to win, but that’s okay @ Local-First Conf


    | tonsky.me
  178. Debugging X86-64 Assembly with GDB


    | blog.codingconfessions.com
  179. Access Control Syntax


    | journal.stuffwithstuff.com
  180. Cheerleading


    | notes.eatonphil.com
  181. You probably don't need a DI framework


    | rednafi.com
  182. Debugging memory leaks in Postgres, heaptrack edition


    | notes.eatonphil.com
  183. How to securely encrypt your sensitive data with envelope encryption and KMS in Rust


    | kerkour.com
  184. Kitchen Confidential by Anthony Bourdain


    | petemillspaugh.com
  185. Finding hard 24 puzzles with planner programming


    | buttondown.com
  186. Announcing Markdown Ninja: Open Source alternative to Substack, Mailchimp and Netlify


    | kerkour.com
  187. Good Performance for Bad Days


    | brooker.co.za
  188. LLM Memory


    | grantslatton.com
  189. Building (and Breaking) Your First X86 Assembly Program


    | blog.codingconfessions.com
  190. Petit manifeste low-tech


    | ploum.net
  191. TAG Bulletin: Q1 2025


    | blog.google
  192. Modeling Awkward Social Situations with TLA+


    | buttondown.com
  193. Comment l’université tue le livre (et les intellectuels)


    | ploum.net
  194. Knowledge creates technical debt


    | lukeplant.me.uk
  195. Pour une poignée de bits…


    | ploum.net
  196. Claude Code


    | grantslatton.com
  197. Write the most clever code you possibly can


    | buttondown.com
  198. How to build small and secure Docker images for Rust (FROM scratch)


    | kerkour.com
  199. Color models for humans and devices


    | developer.mozilla.org
  200. The System-Level Foundation of Assembly


    | blog.codingconfessions.com
  201. Podfox: World's First Container-Aware Browser


    | val.packett.cool
  202. The Flying Pig Marathon 2025: race notes


    | petemillspaugh.com
  203. What's up Python? Python in hardware, lock file support and a new type checker


    | bitecode.dev
  204. Words & shwords


    | petemillspaugh.com
  205. The worst nightmare of small entrepreneurs happened. Products access postmortem.


    | kerkour.com
  206. The Business Case for Vanilla JS


    | lewiscampbell.tech
  207. VSCode workspace shortcuts with .desktop files on Linux


    | lovergne.dev
  208. Differential Coverage for Debugging


    | research.swtch.com
  209. Solution-space Taste


    | grantslatton.com
  210. Requirements change until they don't


    | buttondown.com
  211. The next big thing in Python


    | bitecode.dev
  212. Sorting Algorithm: The Game


    | grantslatton.com
  213. Burn your title


    | notes.eatonphil.com
  214. Preventing accidental struct copies in Go


    | rednafi.com
  215. Transactions are a protocol


    | notes.eatonphil.com
  216. Dédicace à Trolls & Vélo et magie cycliste


    | ploum.net
  217. Decomposing Aurora DSQL


    | brooker.co.za
  218. The Halting Problem is a terrible example of NP-Harder


    | buttondown.com
  219. Avoiding memory fragmentation in Rust with jemalloc


    | kerkour.com
  220. I’ve been to 38 US states


    | petemillspaugh.com
  221. À la recherche de l’attention perdue


    | ploum.net
  222. Go 1.24's "tool" directive


    | rednafi.com
  223. Concurrency in Haskell: Fast, Simple, Correct


    | bitbashing.io
  224. Building a Tell-Tale Heart with an Adafruit Prop-Maker FeatherWing


    | raphaelkabo.com
  225. Using Eleventy and S3 to build a personal photo blog


    | raphaelkabo.com
  226. Binary Arithmetic and Bitwise Operations for Systems Programming


    | blog.codingconfessions.com
  227. Capturing console output in Go tests


    | rednafi.com
  228. Default styles for h1 elements are changing


    | developer.mozilla.org
  229. Your mileage may vary: Training for a marathon on a vegan diet


    | petemillspaugh.com
  230. The Business of Being a Writer by Jane Friedman


    | petemillspaugh.com
  231. De l’utilisation des smartphones et des tablettes chez les adolescents


    | ploum.net
  232. Zig's new LinkedList API (it's time to learn @fieldParentPtr)


    | openmymind.net
  233. How to implement cryptographically-secure API keys in Rust


    | kerkour.com
  234. Solving a "Layton Puzzle" with Prolog


    | buttondown.com
  235. On David Foster Wallace


    | petemillspaugh.com
  236. Typo Minimizing Keyboard


    | grantslatton.com
  237. A Fresh Coat of Paint


    | hamvocke.com
  238. The Curve is Bending


    | grantslatton.com
  239. Understanding Computer Organization from First Principles


    | blog.codingconfessions.com
  240. Graph Search Algorithm: The Game


    | grantslatton.com
  241. The blissful zen of a good side project


    | joshcollinsworth.com
  242. A rough survey of compilation, recompilation, and compile-time evaluation


    | scattered-thoughts.net
  243. An incredible week for Markdown Ninja


    | kerkour.com
  244. What's up python? Less perf, no sugar and more bugs


    | bitecode.dev
  245. Architecting and building medium-sized web services in Rust with Axum, SQLx and PostgreSQL


    | kerkour.com
  246. Trading ambition for presence


    | petemillspaugh.com
  247. [April Cools] Gaming Games for Non-Gamers


    | buttondown.com
  248. Don’t Sweat the Small Stuff by Richard Carlson


    | petemillspaugh.com
  249. Deferred teardown closure in Go testing


    | rednafi.com
  250. Things that go wrong with disk IO


    | notes.eatonphil.com
  251. Allocator.resize


    | openmymind.net
  252. Betteridge's Law of Software Engineering Specialness


    | buttondown.com
  253. How, as an indie author, I have fought and won against the piracy of my books


    | kerkour.com
  254. Black Hat Rust Promotion


    | kerkour.com
  255. Phil Eaton on Technical Blogging


    | notes.eatonphil.com
  256. One or Two? How Many Queues?


    | brooker.co.za