Studio
Writing
Travel
- Bosnia and Herzegovina
- Serbia
- London
- Scotland Roadtrip
- Part I: Aberdeen, British Royalty, and Expensive Castles
- Part II: Inverness, Loch Ness, and Booking-less
- Part III: Isle of Skye
- Part IV: Oban, Fingal’s Cave, and Car Troubles
- Part V: Glasgow Terminus
- Edinburgh
- Paris
- Lyon
- Aix-en-Provence
- Montpellier
- Slovenia
- Croatia
- Crete
- Naxos
- Athens
- Seattle in May
- Madrid
- Basque Country
- Peneda-Gerês National Park
- Douro Valley
- Córdoba
- Granada
- Nerja
- Málaga
- Seville
- Porto
- Lisbon
- Washington, D.C.
Design
- Misclicking Live Search
- Who Has Been Speaking?
- The Power of Lists
- Force Click for Layer Selection
- Fixing Mobile Page Layouts
- Don't Justify Web Text
Programming
- Building an ECS in TypeScript
- What is an ECS?
- Why build an ECS? Why TypeScript?
- A TypesScript ECS in 99 Lines of Code
- Tests
- Deeper Dive: Entities
- Deeper Dive: Components
- Dirty Component Optimization
- Aspects
- Deeper Dive: Systems
- Sparking Joy with Python
Creating & Thinking
- Cultural Wisdom
- Appropriate Quality
- Creative Reading
- Use Examples
- Deeply Knowing
- Creative Friction
- Paralysis
Health
Projects
weatherspread FallgateSoftware
My helper scripts, configs, and instructions for setting up new environments.
I think dotfiles (named because they often start with a dot, like .bashrc
) are a fun window into someone’s work environment. (And probably a time capsule of when they started working with unix-esque systems.) My favorite trick is to name custom scripts starting with a comma.
A simple Desktop-only app for calorie counting and meal planning.
I wrote this to use it myself. You can read much more about it in my post on Calorie Counting × Meal Planning.
A tiny tool to find git repositories on your computer and tell you if any are dirty or unpushed.
I wrote this to use it myself. Over time, it’s also expanded to check other directories on your computer for any files that aren’t expected, and offer to delete them. These two functionalities are part of an effort to have things backed up at all times, so a hard drive failing is no big deal.
My helper functions for python.
I add this tiny library as a dependency to all my projects. It contains little functions I kept writing over and over. There’s very little here—probably a positive testament to Python—but I like the idea of having a personal helper library so much I couldn’t resist including it.
You might also be interested in checking out my research software.
Sketches
Blog
In Praise And Critique of Digital Gardens My Media Snapshot Sleeper Train to Sapa Blank Screen Manifesto Get the Picture Just Moving and Making Climate and Schedule Infrastructure Writing vs Blogging Rewrites and replants Hot The Distant Rumble of Change Smaller PostsGarage
The garage is a new experiment in "working with the garage door up." I develop inter-linked micro notes that evolve over time. They're written for me but posted publicly here. Read more in What is the garage? The following is an index of all the current entires in the garage.
- Animating SVGs from Sketch with anime.js
- Benefits of creating prototypes that fail
- Bézier basics
- Causes and conditions
- City maps with prettymaps
- Creation and virality
- Critiquing Internet use
- Cube confusion
- Deciding and following
- Deeper ideas in pocket
- Does k-means on an image's colors make a good palette?
- Generative voxel world editor
- Google's and Facebook's Software
- Home base feeling
- Image layout test page
- Image scroll test page
- Image size test page
- Learning to vox
- Mandelbrot
- Mo Photos Mo Problems
- New tech time budget
- Notes on fragment shaders and p5.js
- Omitting negative results precludes thinking in reverse
- On Neon White
- Personal infrastructure graveyard
- Pixi.js graphics stress test
- Producing lots of work
- Reducing creative friction: starting a new project
- Shader stress test
- Simulation: Basic street
- Small communities
- Spectators
- Spirit of discovery
- Stupid things I do constantly in Python
- Summer 2021 website goals
- Teachers are responsible for multiple perspectives
- Tension between discovery and intentional creation
- Thinking in reverse
- Tiny naming woes
- Video game graveyard
- Ways of looking
- WebP test page
- Website graveyard
- Website Redesigns
- What is the garage?
- When Lists Don't Work
- Working blocks
- Working process