¶Archive
Is this a weblog? A gemlog? I guess it depends on how you're accessing this wonderful content...
2024-10-21 Sending emails from Go
2024-09-27 sqlc: compile SQL queries, no ORM!
2024-09-19 Screen sharing a reMarkable on Linux
2024-08-15 Hosting the Unifi controller in Home Assistant
2024-07-13 Updating Cloud Key firmware manually
2024-07-13 Adopting a new USG or Gateway on an existing network
2024-05-01 Background processes in redo
2024-04-03 Swanson: Slip and slurp
2024-02-13 Let futures be futures
2024-02-09 Swanson: Bethel stacks
2024-01-30 Rust: Shared target directory
2024-01-30 Cache directory tags
2024-01-24 Continuation-passing S₀: The return
2024-01-05 Transcript of Wirth's “Closing word at Zürich Colloquium”
2023-11-15 Build script links in Rust
2023-11-07 Defining ‘cons’ with only empty quotations
2023-11-07 A simpler definition of ‘sap’
2023-11-06 The natural linear concatenative basis
2023-11-05 Closing over values
2023-11-03 Categories of instructions in a concatenative basis
2023-11-03 A linear basis for Swanson
2023-11-03 The three-element linear concatenative basis
2023-11-03 The two-element linear concatenative basis
2023-11-02 Staged stacks are just values
2023-10-13 Can you compile quotations in parallel?
2023-10-10 CSP would be a good language for property tests
2023-09-28 Is “code meant to be read more than run”?
2023-09-24 There shouldn't be any names in S₀
2023-09-23 Reflections on the final Strange Loop
2023-09-23 Stack values can be quotations
2023-09-17 Stack values cannot be quotations
2023-09-15 Stacks should be first-class
2023-08-04 Concurrency and property-based testing
2023-08-01 Backpressure, Ted Kaminski
2023-07-13 \ignorespaces in LaTeX
2023-07-12 “The looming demise of the 10× developer”, Justin Searls
2023-07-08 Resurrecting my Pinebook Pro
2023-06-29 Another tef gem on pipelines
2023-06-29 Forth, complex solutions to complex problems, generative AI
2023-06-29 Separate archive sections for reading log and posts
2023-06-12 Tail call optimization and debuggability
2021-06-14 A map of the tree-sitter ecosystem
2021-06-07 Getting started with tree-sitter
2021-01-03 Git commits and code review (revisited)
2020-12-29 Staff engineering manager
2020-12-08 Swanson: Execution model
2020-12-07 Swanson: Introduction
2018-05-31 NP-hard isn't the end of the world
2018-04-19 Clean git histories and code review workflows
2018-03-27 Introducing Network Error Logging
2017-01-17 HST: Lazy processes
¶Unmigrated
Some posts from my old blog that I haven't migrated over to the new framework yet.
2016-11-17 HST: Semantic methods
2016-11-17 HST: Refinement overview
2016-09-07 Concurrency models in CSP: Read Atomic: Internal consistency
2016-08-03 Concurrency models in CSP: Preliminaries
2016-07-28 Concurrency models in CSP: Introduction
2014-11-21 Dependency management in C
2014-05-14 Tagged releases using git flow
2014-01-07 CSP: An introduction
2010-05-13 Installing Ubuntu Lucid on a PowerPC QEMU virtual machine
2010-02-25 Parser callbacks in libpush, Part 1 — Streams
2010-02-17 Using LLVM's link-time optimization on Ubuntu Karmic
2010-02-10 Extracting setuptools version numbers from your git repository
2010-02-06 A combinator-based parsing library for C
2010-02-05 Updating graffle-export to work with OmniGraffle 5
2010-01-08 Default “scons -c” targets
2010-01-05 Exporting OmniGraffle documents from the command line
2009-12-23 “High-water mark” buffers
2009-12-21 Decentralized datatypes
2009-12-18 Simulating “make distclean” in SCons
2009-09-08 Downgrading packages in Ubuntu
2009-08-13 Using callbacks with the subprocess module
2009-08-07 Adding Disqus comments
2009-08-06 Problems with Python's subprocess.communicate method