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.
#projects
1 min read
- #a-pattern-language(8)
- #dayjob(3)
- #flowthru(2)
- #games(12)
- #homelab(3)
- #site(14)
- #teaching(4)
- #undergrad(11)
Recent Posts
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)
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'.
Work Resume
— The PDF copy of my day-to-day resume.
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"
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 5; Lace of Country Streets
— 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.
APL: Pattern 1; Independent Regions
— 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*.
APL: Pattern 2; The Distribution of Towns
— 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.
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.
APL: Pattern 0; Introduction
— Can graphs be libertarian? Authoritarian? Annotations for the introductory portion of the 1977 book A Pattern Language.
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.
About Me
— The ultimate CAPTCHA: proof that I am a human, and how to get in contact with me!
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.
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.
Review: Season of Rhythm
— 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.
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.
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.
Caveat Lector: Reader Beware
— 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.
Quantitative Analysis of Markets & Organizations
— 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.
Breaking Ground on Digital Gardening
— 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.
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.
Kickoff: Season of Rhythm
— "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.
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.
How to Write a Resume in Typst
— A beginner-friendly and guided resume starter for Typst users! Great for anybody looking to easily maintain and adapt their resume to new applications.
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
Breaking Ground on Digital Gardening
— 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.
About Me
— The ultimate CAPTCHA: proof that I am a human, and how to get in contact with me!
APL: Pattern 1; Independent Regions
— 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*.
Quantitative Analysis of Markets & Organizations
— 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.
Work Resume
— The PDF copy of my day-to-day resume.
APL: Pattern 2; The Distribution of Towns
— 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.
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.
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.
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.
Review: Season of Rhythm
— 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.
GPTinglish: Unnatural Language Processing
— The only market crashing is the market for sanitized language. Stay human. Embrace typos.
Caveat Lector: Reader Beware
— 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.
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.
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"
APL: Pattern 5; Lace of Country Streets
— 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.
APL: Pattern 0; Introduction
— Can graphs be libertarian? Authoritarian? Annotations for the introductory portion of the 1977 book A Pattern Language.
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.
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.
Kickoff: Season of Rhythm
— "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.
How to Write a Resume in Typst
— A beginner-friendly and guided resume starter for Typst users! Great for anybody looking to easily maintain and adapt their resume to new applications.
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.