Writing on software, AI, games, and cities.

I'm Michael, a software engineer in Victoria, British Columbia. I love software, art, games, and cities.

The Rise of Highly Personal Software · 3 min · Development / AI
I Miss Using Em Dashes · 1 min · AI / Culture & Writing
The Singular Devotion of Oppenheimer and the Cost of Absolute Loyalty · 5 min · Culture & Writing / Games
Evaluating AI Systems: From Criteria to Pipelines · 10 min · Development / AI
Are We Sacrificing Developer Skills for AI Convenience? · 4 min · Development / AI
Nanaimo's Missing Middle (opens Strong Towns Nanaimo in a new tab) · Strong Towns Nanaimo · Urbanism
Narrow Lanes Are Safer (opens Strong Towns Nanaimo in a new tab) · Strong Towns Nanaimo · Urbanism
Nanaimo in Motion (opens Strong Towns Nanaimo in a new tab) · Strong Towns Nanaimo · Urbanism
BC Eliminates SF Zoning (opens Strong Towns Nanaimo in a new tab) · Strong Towns Nanaimo · Urbanism
You Don't Need a License to Walk (opens Strong Towns Nanaimo in a new tab) · Strong Towns Nanaimo · Urbanism
Test Driven Game Development · 4 min · Development / Games
Installing Custom Proton Builds On Linux · 1 min · Development / Games
Abandonware: Preserving the Now for Tomorrow (opens Uppercut in a new tab) · Uppercut · Culture & Writing / Games
Common Python Design Patterns · 16 min · Python / Development
Fighting Game Mega Mix · 66 min · Culture & Writing / Games
Simulating Dynamic Web Interactions · 6 min · Python / Development
Speed of Python's set() vs {*} · 5 min · Python / Development
Implementing Playlist Shuffle in Python · 15 min · Python / Development