Mostly tech. Subscribe through RSS.
-
The Best Emacs Microfeature
5 June, 2024 · Why I keep using Emacs in 2024.
-
The Design Space of Wikis
2 June, 2024 · An exploration of the design space of wikis.
-
Type Inference Was a Mistake
29 March, 2024 · On type inference as an academic computer science lab leak.
-
Thoughts on LLM Agents
5 January, 2024 · Entropy, criticality, and complexity classes of cellular automata.
-
You Need More Constraints
30 July, 2023 · A checklist of useful SQL constraints.
-
Type Systems for Memory Safety
22 July, 2023 · A survey of type systems for memory safety.
-
Why Checked Exceptions Failed
15 July, 2023 · Programming language features are never orthogonal.
-
Test Against Reality
8 July, 2023 · Against mocking.
-
Test Autodiscovery is a Silver Bullet
24 June, 2023 · To encourage good practices, make them frictionless.
-
Second-Class References
12 June, 2023 · On Graydon's Rust, Val, and mutable value semantics.
-
Depth-First Procrastination
9 June, 2023 · When subgoals recur infinitely.
-
Why Lisp Syntax Works
5 June, 2023 · On uniform vs. specific syntax.
-
Sketch of a Post-ORM
2 June, 2023 · A better way to interact with databases.
-
Language Pragmatics Engineering
30 May, 2023 · On best practices and gradient descent.
-
What is a Software Engineer?
27 May, 2023 · Blake, Newton, Turing.
-
Typing Persian in Emacs
25 May, 2023 · A tutorial introduction to farsi-transliterate-banan.
-
Language Tooling Antipatterns
14 May, 2023 · We will build a tower of Webpack wrappers to reach heaven.
-
Return Reasons, Not Booleans
11 May, 2023 · A short post on a consequence of Boolean blindness.
-
NixOS for the Impatient
7 May, 2023 · Using NixOS for a more tractable computing setup.
-
How Capabilities Work in Austral
5 May, 2023 · A walkthrough of Austral's capability-based security features.
-
Two Years of OCaml
30 April, 2023 · My thoughts on OCaml after two years of building a compiler with it.
-
Dependency Resolution Made Simple
23 April, 2023 · Resolving dependencies with a homebrew SAT solver.
-
My Experience with Bupropion
18 April, 2023 · Autism, antipsychotics, and the striatum.
-
The Best of Orion’s Arm
16 April, 2023 · Summarizing ten thousand years of future history.
-
Effective Spaced Repetition
10 April, 2023 · “To flash conviction on the mind.”
-
Spaced Repetition is Checkpointing for Learning
6 April, 2023 · Effective autodidactism for the scatterbrained.
-
Design of the Austral Compiler
9 March, 2023 · A high-level walkthrough of the Austral bootstrapping compiler.
-
The Gallery of Sand
5 March, 2023 · Sampling image space with DALL-E.
-
And Yet It Understands
22 February, 2023 · In high-dimensional vector spaces, numerical optimization is omnipotent.
-
Building a DIY Clozemaster
19 February, 2023 · Replacing Duo the owl with a simple Python script.
-
Shells are Two Things
1 February, 2023 · Command languages and scripting languages are and should be different things.
-
How Austral’s Linear Type Checker Works
29 January, 2023 · A walkthrough of Austral's linearity checker algorithm.
-
Better XML Editing for Emacs
13 January, 2023 · Improving completion in nXML mode.
-
A Brief Defense of XML
6 January, 2023 · On the difference between markup and data exchange languages.
-
Roam, Twenty Years Before Roam
3 January, 2023 · Wikipedia has had bidirectional links for twenty years and nobody noticed.
-
Introducing Austral: A Systems Language with Linear Types and Capabilities
28 December, 2022 · Introducing a new programming language.
-
Unbundling Tools for Thought
26 December, 2022 · Disparate thoughts on personal information management after traversing the hype cycle.
-
Astronomical Calculations for Hard SF in Common Lisp
19 December, 2022 · Hard SF worldbuilding with the HYG database, Dijkstra's algorithm, and Lisp.
-
You’re Not Going Anywhere
20 November, 2022 · Twitter, Dante, and the World State.
-
Simplicity and Survival
2 September, 2022 · How do programming languages survive indefinitely?
-
First Impressions of Mochi
17 August, 2022 · Mochi is a new multi-platform spaced repetition app.
-
Lessons from Writing a Compiler
5 July, 2022 · Collected tips from building the Austral compiler.
-
Signed Integers are Asymmetrical
11 October, 2021 · An edge case in integer safety.
-
Reading a File in OCaml on Windows
12 September, 2021 · Adventures in officially unsupported architectures.
-
Languages are not Ecosystems
2 September, 2021 · The size of language ecosystems obscures the inherent design problems of programming languages.
-
Parsing with Menhir, Part I: Forth
26 August, 2021 · A tutorial on parsing Forth with Menhir.
-
Parsing with Menhir
25 August, 2021 · A tutorial series on parsing with the Menhir parser generator for OCaml.
-
Linear Types and Exceptions
7 August, 2021 · On the incompatibility of linear types and traditional exception handling.
-
Compiling LLVM IR to Binary
10 November, 2019 · A note to my future self.
-
Forth and Complexity
7 November, 2019 · On the unsustainable complexity of modern computing.
-
The Uselessness of the Accept-Language Header
6 November, 2019 · Old man yells at cloud.
-
Linear Types and Safety
6 January, 2019 · An example of hardening an API using linear types.
-
A Bibliography of 2018
28 December, 2018 · Every paper I read this year.
-
FreeBSD with Encrypted ZFS and X11 on a Laptop
24 August, 2018 · My installation notes.
-
Portable Backups with Duplicity and GnuPG
17 August, 2018 · Managing on-site Duplicity backups with a secure GPG key.
-
A Case Study in Propositional Logic
13 May, 2018 · Design decisions, and using types to prevent illegal states.
-
Calling C from MLton
5 April, 2018 · A tutorial on MLton's foreign function interface.
-
February Updates
28 February, 2018 · Changes in this website for February 2018.
-
Libraries: The Database Engineering Perspective
22 February, 2018 · Evolving a schema for libraries one counterexample at a time.
-
The Twelve Islanders Problem
10 February, 2018 · A brain teaser implemented in OCaml.
-
Inheritance and Disjunctions
16 December, 2017 · A case study in porting a compiler.
-
A Wishlist of Zero-Cost Abstractions
5 March, 2017 · A wishlist of language features, their use cases, and how they affect language complexity.
-
Using LMDB from Common Lisp
7 April, 2016 · Announcing an LMDB binding, and a tutorial.
-
State of the Common Lisp Ecosystem, 2015
25 August, 2015 · The state of Common Lisp's library ecosystem, from the perspective of a contributor.
-
Common Lisp with Travis and Coveralls
7 June, 2015 · How to set up Travis CI and Coveralls.io with a Common Lisp project.