My personal projects and professional focus has been primarily in software engineering. Being able to make things that help people, including myself, accomplish more is a joy that lights up my brain.
#engineering
1 min read
Recent Posts
Planning With Agents: Better can be Better web
— Annotations on Maggie Appleton's 2026 talk about Boundary Objects
Union types (C# reference) web
— Some quick notes on the Union type addition in C# 15, and how I can use it to make Flowthru fail-fast(er)
Writing Better Gherkin web
— A few notes on a very important, but hidden, part of the Cucumber and Gherkin documentation around Behavior Driven Development
The Wild Web
— Come with me and explore an invisible social network: IndieWeb, where the cowboy can-do attitude of Web 1.0 is alive and a-thrivin'.
You can pry my dashes from my cold, dead hands
— A bit of self-reflection on dashes in my writing to decide if LLMs have rotted my brain, or if my brain was already beyond saving from the start.
Math is Dead, and Pickles are Small
— To understand why OpenAI completely upended the world of mathematics with its proof that Navier-Stokes is not smooth in three dimensions, you must first understand that cucumbers of any size can be properly pickled.
Chipotleware
— A brief side-rant about the (former) burrito-style economics of junior-level software engineering
Software Gardening
— Garden-inspired development as a non-sinister, people-centric way to think about post-LLM software development
Security Alert: Softlock and ACE via Natural Language Overload
— I think I’ve found a pretty large CVE that has gone without a formal report, despite absolutely saturating the field of software engineering. It’s subtle and…
Lean Software Development: Prelude Notes
— Notes on the prelude chapters of Lean Software Development (2003)
Work Resume
— The PDF copy of my day-to-day resume.
Working with Valves: Understanding the Structure of "Flat" Organizations .pdf
— Many an engineer has heard tales of Valve's "flat" organization structure — what is fact, what is fiction, and how does it actually work? An annotated copy of the 2012 First Edition of Valve's Employee Handbook.
Hyperparameter verification of StcE protein folds in Pedram et al., 2023 .pdf
— The rubber hits the road on ColabFold! I hope that's rubber I'm smelling — although it may be the computer. A replication attempt of a protein fold figure in K. Pedram et al (2023).
An Annotated Guide to Hobbyist Protein Folding .pdf
— Amaze (or bore) your friends and family by picking up on a hot new hobby that's all the rage — protein folding! An annotated starter to the 2021 paper "ColabFold - Making protein folding accessible to all"
Agentic Programming as Theory Building .pdf
— Do humans have a role in software development anymore? Absolutely — but we need to rethink what it means to program. An modern review of Peter Naur's 1985 essay "Programming as Theory Building"
APL: Pattern 4; Agricultural Valleys
— Urban development has the high ground over agricultural and ecological preservation — and it should! *A Pattern Language* annotations on Pattern 4: Agricultural Valleys
APL: Pattern 3; City Country Fingers
— City, with natural stripes — or nature, with city stripes? Annotations for A Pattern Language, and tracking public opinion of where Americans want to live over the past 50 years.
Privacy Policy
— When it comes to collecting data, there's a fine line between making a good site and making an invasive product. To make this site more useful, I want to collect enough data to improve, but never enough to undermine anybody's privacy.
Ants in the Neighborhood
— Is Jane Street run by soccer-loving ants? Inconclusive. We *can* conclude that they're fans of Markov Chains, though — an invaluable tool for understanding complex data structures.
A Pattern Language, and a Beautiful Day in the Neighborhood
— The beginning of a topological review of the 1977 urban design and architecture reference book A Pattern Language, and a journey to understand Earth's greatest graph: the Earth, itself.
Quick Fix: Tone Down Obsidian List/Header Padding
— Annoyed by Obsidian Live Preview over-padding headers and aggressively indenting? Some snippets to help keep your notes from jumping around, so you can focus on actually writing them.
Dice Roll Distribution Widget
— Discover the probability distributions of different dice roll combinations
The Advantages of Advantage: Intro to Probability Convolutions
— What *is* the advantage of rolling with advantage? Exploring dice roll combinations and probability convolutions.
Quartz Widgets: Graphs, Galore!
— I killed 4 of my blogs trying to implement MDX support. Will this one be next? Using MDX with Quartz to create interactive graphs, diagrams, and demos — clear as day.
How to Run Your Own Hostage Negotiation
— LLMs: Are we doomed to die, or born to garden? I'd like to make the case that AI is less like Terminator, and more like tomatoes.
Intro to Event Storming
— Notes from learning Event Storming for domain-driven design. Thoughts on phases, color-coded chaos, and how to transition from fast pitches to full products.
AI Policy
— I may not have any control about how AI affects me, but I can at least make a policy for how I use it.
Kickoff: Season of Systems
— I'm learning to live with the systems that stole my beloved em-dash. A season dedicated to negotiating how to live with the agentic models that have turned my career upside-down.
LLMs: A Primer Presentation for Our Newest, Scariest Tool .pdf
— An engineer-focused primer on the mechanisms that drive Large Language Models. Basics on how we got here, how they work, and how to use them without feeling an apocalyptic dread.
Terraform LocalStack Testing
— $70/mo/seat? Just using live AWS may be cheaper. An evaluation of LocalStack as a testbed for Account Factory Terraform.
The Simple Economics of Open Source .pdf
— Why do we do what we do? "Egoboo." Exploring economic models of OSS contributions beyond altruism and ego.
Feeling Right, Nothing Done: Don't Be the Death of Consensus
— Classifying opinions as "strong" or "weak" to stop wasting hours in fruitless engineering debates. How consensus can beat being "right", and an open letter for the tactically apathetic.
Before You Slabtop Your Laptop: A Brief Warning
— PSA: Check if your laptop needs an LCD for POST before removing the screen. Learned this the hard way after 5 hours and a fried motherboard. Learn from my dumb mistakes.
GPTinglish: Unnatural Language Processing
— The only market crashing is the market for sanitized language. Stay human. Embrace typos.
Turning SelfControl into Self Restraint
— Building a Raycast plugin to schedule website blocks — because checking news "just one more time" destroys flow. Automate SelfControl and self control: take your laptop back.
Some initial thoughts about time tracking
— Initial thoughts on using tools like Apple Shortcuts and Timery/Toggle for tracking how I spend my time -- every minute of every day.
In Review: The (bad) 2017 Robloxaville Remaster
— How over-engineering killed a 3-month remaster of an old ROBLOX game. Looking back at the depth of Dunning-Kruger, and how good code doesn't make a good game.
The Over/Unders of Over- and Under-Engineering
— I've learned so much in my career — so why do I finish fewer projects than I used to? Over-engineering: it's easier to be bad at something on accident than on purpose.
Don't Double Down: Structured Streaming to Wrangle Data
— Stop reprocessing your entire dataset every time new data arrives. A practical guide to Spark Structured Streaming with code examples and cost logic.
Littlefield Simulator: The Art of Laziness
— Efficiency: spending six hours building a web scraper to avoid five minutes of daily work. Automating a business simulation because checking in is for chumps.
The Unbearable Weight of ROBLOX Celebrity
— Being famous online in 2009 is the highest high I'll ever reach. A love letter to the coolest dork I know, hatemail for client-side exploits, and a limitless supply of Monopoly dollars.
Say Goodbye to Untitled (5) — GitHub Actions for Resumes
— Set up continuous integration to auto-update your resume everywhere. Overleaf, GitHub, and LaTeX automation for the perpetually disorganized.
Hello, Blog! (Posts by a dummy, for other dummies)
— The obligatory "Hello!" post to suss out what this site will be. Python examples as unnecessary as the post itself.
Entries to SOME 1
— Stable matching, optimal stopping, and Bachelor analysis - visualized with some care.
Utah Office Consult .pdf
— People problems are the hardest engineering problems. A consult on thinking out-of-the-box to explain morale problems in small companies.
College Admissions and the Stability of Marriage
— My college presentation on the Gale-Shapley paper, recorded on an iPad, like a true professional. Non-market environments, matchmaking lattices, and gratitude for good professors.
Reading the Room with Beethoven
— A HackTheU 2019 project for real-time live captioning using remote microphones.
What *are* Supply Chains, Anyway?
— A first foray into network visualization: messy graphs, abject terror. Early data viz experiments searching for supply loops. Bad graphs; interesting questions.
Quicksort: Every CS Student's Favorite Algorithm, Scratched Up
— Implementing QuickSort in Scratch. Its only real-world accomplishment? Wearing out my mouse's scroll bar.
Scratch Piano Application
— An educational waveform visualizer written in everybody's favorite programming language: Scratch.
Core Posts
Software Gardening
— Garden-inspired development as a non-sinister, people-centric way to think about post-LLM software development
How to Run Your Own Hostage Negotiation
— LLMs: Are we doomed to die, or born to garden? I'd like to make the case that AI is less like Terminator, and more like tomatoes.
Agentic Programming as Theory Building .pdf
— Do humans have a role in software development anymore? Absolutely — but we need to rethink what it means to program. An modern review of Peter Naur's 1985 essay "Programming as Theory Building"
Work Resume
— The PDF copy of my day-to-day resume.
LLMs: A Primer Presentation for Our Newest, Scariest Tool .pdf
— An engineer-focused primer on the mechanisms that drive Large Language Models. Basics on how we got here, how they work, and how to use them without feeling an apocalyptic dread.
Don't Double Down: Structured Streaming to Wrangle Data
— Stop reprocessing your entire dataset every time new data arrives. A practical guide to Spark Structured Streaming with code examples and cost logic.
The Unbearable Weight of ROBLOX Celebrity
— Being famous online in 2009 is the highest high I'll ever reach. A love letter to the coolest dork I know, hatemail for client-side exploits, and a limitless supply of Monopoly dollars.
Math is Dead, and Pickles are Small
— To understand why OpenAI completely upended the world of mathematics with its proof that Navier-Stokes is not smooth in three dimensions, you must first understand that cucumbers of any size can be properly pickled.
APL: Pattern 4; Agricultural Valleys
— Urban development has the high ground over agricultural and ecological preservation — and it should! *A Pattern Language* annotations on Pattern 4: Agricultural Valleys
APL: Pattern 3; City Country Fingers
— City, with natural stripes — or nature, with city stripes? Annotations for A Pattern Language, and tracking public opinion of where Americans want to live over the past 50 years.
A Pattern Language, and a Beautiful Day in the Neighborhood
— The beginning of a topological review of the 1977 urban design and architecture reference book A Pattern Language, and a journey to understand Earth's greatest graph: the Earth, itself.
The Over/Unders of Over- and Under-Engineering
— I've learned so much in my career — so why do I finish fewer projects than I used to? Over-engineering: it's easier to be bad at something on accident than on purpose.
AI Policy
— I may not have any control about how AI affects me, but I can at least make a policy for how I use it.
GPTinglish: Unnatural Language Processing
— The only market crashing is the market for sanitized language. Stay human. Embrace typos.
College Admissions and the Stability of Marriage
— My college presentation on the Gale-Shapley paper, recorded on an iPad, like a true professional. Non-market environments, matchmaking lattices, and gratitude for good professors.
Security Alert: Softlock and ACE via Natural Language Overload
— I think I’ve found a pretty large CVE that has gone without a formal report, despite absolutely saturating the field of software engineering. It’s subtle and…
Working with Valves: Understanding the Structure of "Flat" Organizations .pdf
— Many an engineer has heard tales of Valve's "flat" organization structure — what is fact, what is fiction, and how does it actually work? An annotated copy of the 2012 First Edition of Valve's Employee Handbook.
An Annotated Guide to Hobbyist Protein Folding .pdf
— Amaze (or bore) your friends and family by picking up on a hot new hobby that's all the rage — protein folding! An annotated starter to the 2021 paper "ColabFold - Making protein folding accessible to all"
Ants in the Neighborhood
— Is Jane Street run by soccer-loving ants? Inconclusive. We *can* conclude that they're fans of Markov Chains, though — an invaluable tool for understanding complex data structures.
The Advantages of Advantage: Intro to Probability Convolutions
— What *is* the advantage of rolling with advantage? Exploring dice roll combinations and probability convolutions.
Quartz Widgets: Graphs, Galore!
— I killed 4 of my blogs trying to implement MDX support. Will this one be next? Using MDX with Quartz to create interactive graphs, diagrams, and demos — clear as day.
Kickoff: Season of Systems
— I'm learning to live with the systems that stole my beloved em-dash. A season dedicated to negotiating how to live with the agentic models that have turned my career upside-down.
Feeling Right, Nothing Done: Don't Be the Death of Consensus
— Classifying opinions as "strong" or "weak" to stop wasting hours in fruitless engineering debates. How consensus can beat being "right", and an open letter for the tactically apathetic.
Some initial thoughts about time tracking
— Initial thoughts on using tools like Apple Shortcuts and Timery/Toggle for tracking how I spend my time -- every minute of every day.
In Review: The (bad) 2017 Robloxaville Remaster
— How over-engineering killed a 3-month remaster of an old ROBLOX game. Looking back at the depth of Dunning-Kruger, and how good code doesn't make a good game.
Littlefield Simulator: The Art of Laziness
— Efficiency: spending six hours building a web scraper to avoid five minutes of daily work. Automating a business simulation because checking in is for chumps.
Hello, Blog! (Posts by a dummy, for other dummies)
— The obligatory "Hello!" post to suss out what this site will be. Python examples as unnecessary as the post itself.