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.
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.
— Garden-inspired development as a non-sinister, people-centric way to think about post-LLM software development (23 min read)
— A brief side-rant about the burrito-style economics of junior-level software engineering (3 min read)
— How to install Quartz Annotator, a plugin for displaying highlights and annotations of PDF documents (2 min read)
— Installation & configuration for a Quartz 5 plugin offering Buttondown Subscription integration. (1 min read)
— A plugin for richer, stylized OG images on Quartz 5 sites. (1 min read)
— An enhanced post listing component for Quartz 5 sites (1 min read)
— An enhanced graph explorer for Quartz 5 sites (3 min read)
— A light Quartz v5 plugin that allows for more customization of the site's Backlinks feature (1 min read)
— An improved tag list plugin for Quartz 5 sites. (1 min read)
— A Quartz v5 plugin for MDX content with Preact components on site pages (2 min read)
— A small Quartz 5 plugin for viewing GitHub source code for site pages. (1 min read)
— A Quartz 5 plugin for privacy-conscious PostHog analytics (1 min read)
— A Quartz 5 plugin for additional SEO optimization options (2 min read)
— Odds-and-ends social media cards for Quartz 5 sites (1 min read)
— An improved tag page for Quartz 5 sites (1 min read)
— A library plugin for Quartz 5 sites to integrate plugin styling into the central style system (1 min read)
— Tag-based exploration component for Quartz 5 sites (1 min read)
— A Quartz 5 library plugin for rich tag metadata cross site components (1 min read)
— The PDF copy of my day-to-day resume.
— 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. (23 min read)
— Watch a human cope about bots taking his job in real time. Is he cooked? Find out tonight in Season of Systems: Week 11! (6 min read)
— 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). (8 min read)
— 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" (10 min read)
— 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" (40 min read)
— 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. (4 min read)
— 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. (3 min read)
— 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. (0 min read)
— 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. (12 min read)
— 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. (3 min read)
— Discover the probability distributions of different dice roll combinations (1 min read)
— What *is* the advantage of rolling with advantage? Exploring dice roll combinations and probability convolutions. (8 min read)
— 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. (10 min read)
— 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. (8 min read)
— 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. (6 min read)
— I may not have any control about how AI affects me, but I can at least make a policy for how I use it. (3 min read)
— 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. (8 min read)
— Articles for the data and engineering consulting practice Chaotic Good Computing, as well as personal notes by Spencer Elkington.
— 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. (1 min read)
— $70/mo/seat? Just using live AWS may be cheaper. An evaluation of LocalStack as a testbed for Account Factory Terraform. (5 min read)
— Why do we do what we do? "Egoboo." Exploring economic models of OSS contributions beyond altruism and ego. (15 min read)
— 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. (7 min read)
— 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. (2 min read)
— The only market crashing is the market for sanitized language. Stay human. Embrace typos. (7 min read)
— 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. (4 min read)
— TODO. (1 min read)
— Why I stopped hoarding 60%-done drafts and started publishing messy thoughts instead. Embracing digital gardening, from-chaos-to-cultivated, and a healthy dose of imperfection. (3 min read)
— 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. (2 min read)
— 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. (2 min read)
— Stop reprocessing your entire dataset every time new data arrives. A practical guide to Spark Structured Streaming with code examples and cost logic. (9 min read)
— 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. (8 min read)
— 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. (11 min read)
— Set up continuous integration to auto-update your resume everywhere. Overleaf, GitHub, and LaTeX automation for the perpetually disorganized. (6 min read)
— The obligatory "Hello!" post to suss out what this site will be. Python examples as unnecessary as the post itself. (1 min read)
— Stable matching, optimal stopping, and Bachelor analysis - visualized with some care. (1 min read)
— People problems are the hardest engineering problems. A consult on thinking out-of-the-box to explain morale problems in small companies. (2 min read)
— 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. (1 min read)
— A HackTheU 2019 project for real-time live captioning using remote microphones. (2 min read)
— A first foray into network visualization: messy graphs, abject terror. Early data viz experiments searching for supply loops. Bad graphs; interesting questions. (2 min read)
— Implementing QuickSort in Scratch. Its only real-world accomplishment? Wearing out my mouse's scroll bar. (1 min read)
— An educational waveform visualizer written in everybody's favorite programming language: Scratch. (1 min read)
Weekly updates about any new notes!