I’m a person who likes to package up my work and slap a bow on it, so a lot of what I do will be framed as projects. Some of these may be literal repositories of code within my personal and CGC GitHub organizations, other work — particularly around data analytics and visualizations and economics research will be published as notes and articles on this site.
— Urban development has the high ground over agricultural and ecological preservation — and it should! *A Pattern Language* annotations on Pattern 4: Agricultural Valleys (2 min read)
— How dense is too dense? How sparse is too sparse? Annotations for A Pattern Language's proposals for the density of metro-adjacent country streets for agriculture, recreation, and preservation. (3 min read)
— Home isn't where the heart is — it's a single node on a very, very large graph. Annotations for the "Independent Regions" pattern of *A Pattern Language*. (10 min read)
— How close is too close? How far is too far? *A Pattern Language* annotations related to the statistical, economic, and ecologic concerns in balancing how dense human habitats ought to be. (5 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. (1 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)
— Annotations for Greiner's 1972 paper "Evolution and Revolution as Organizations Grow", about the structural composition of organizations at different sizes and requirements.
— 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)
— 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.
(9 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'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)
— Looking back at my year-long attempt to build up long-lasting habits.
A retrospective on routines, remote work transitions, and learning the art of slow-and-steady. (7 min read)
— 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.
— 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)
— I'm embracing being wrong on the internet in an effort to learn in public.
A disclaimer on digital gardening, dead pixels, and the fear of terminal online-ness.
(3 min read)
— My time at the University of Utah was longer than I'd planned, cut shorter than expected by COVID-19.
I was very lucky to have mentorship to push me across the finish line.
(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)
— "Fight or flight" is a rough way to treat white-collar life. My Season of Rhythm is dedicated to
transitioning from constant sprints to slow-and-steady.
(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)
— 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)
— 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 first foray into network visualization: messy graphs, abject terror.
Early data viz experiments searching for supply loops. Bad graphs; interesting questions.
(2 min read)