2025-09
Software Team Taboos
Strategies for talking about those things that nobody wants to talk about
2025-07
Spike, Revert, TDD
A pattern for practicing TDD when you don't know where to start
2025-06
Adopt, Adapt, or Ignore
A pattern for sharing inventions between autonomous teams
2025-04
Type Narrowing in TypeScript
When the API gives us too much info and we don't want to know about it
2025-03
So DRY it's SCORCHED
How to tank your maintainability by over DRYing your code
2025-03
Readability Requires Editing
How ease of inline/extract refactoring impacts the inevitable readability of our code
2025-02
A Mental Model for Reactive Programming
From City Water Supply to My Kitchen Sink
2025-01
Generating Angular Service Spies
Reducing Keystrokes and Supporting Refactoring
2025-01
Continuous Learning Through Coding Games
Coding Microsites and How We Use Them
2024-10
PowerShell Script: What Changed While I Was On Vacation?
Listing all the git changes across many repos from certain authors in the last week
2024-09
Solving Hard Problems Without Luck
Thirty-One Alternatives to Guessing What To Do Next
2024-09
In Favor of Single-Team Ownership
An argument for independent software teams
2024-08
Angular Testing Patterns
ng On Init, ng On Changes, and mock components
2024-06
Split Pipe
a Refactoring Pattern for RXJS
2024-06
Adapter vs Facade vs Bridge
Notes while reading Design Patterns: Elements of Reusable Object-Oriented Software
2024-05
Is a tomato a fruit or a vegetable?
On software encapsulation and tomato taxonomy
2024-04
Group By using Reduce in JavaScript
Not often useful, but when you need it it's helpful to know
2024-03
The Joy of a Low-Hazard Development Environment
Shaping our tools and processes to reduce risk in our work
2024-01
Git Squash
How to combine multiple commits
2024-01
Slingblade
When it's time to abandon your precious idea
2023-12
Sketching Wildflowers and Writing Software
Lessons from a visual artist on tackling overwhelming complexity
2023-11
Motivation Engineering
Technical strategies for tackling overwhelming lists of compiler errors
2023-11
“Jump onto the desk, Harry”
Distributed Monoliths, Harry Potter, and Half-Doing New Ideas
2023-11
Hotspot Analysis
Finding the most maintenance-worthy code in the project
2023-11
Find the Bright Spots
Notes while reading Switch
2023-11
Facilitating a first-time ensemble session
My current approach for guiding a group through their first time ensemble programming.
2023-10
Notes while reading Switch
Leading change requires more than analysis and arguments
2023-06
My Technical Approach
A mind map of things that I focus on at work
2023-06
Optimize for never hearing about this again
Approaches for increasing your tenure without collecting interruptors
2023-01
Mistakes I still make when writing software
(And what I do when I realize I've made them.)
2022-12
"Do you have any questions for me?" (2022 edition)
Questions I ask my interviewers.
2022-12
Architectural Decision Records for Intuitive Decision Makers
How to use ADRs to teach your peers, correct your mistakes early, and equip others to share ownership of what you build
2022-12
Leaders ought to clarify the problem (and not solve it)
What I do to create an environment where everyone gets to do interesting, valuable work
2022-07
Customer-Centric Iterative Project Breakdown
Describing two project archetypes: the tech-centric project breakdown, and the customer-centric alternative.
2022-04
The Natural Micromanager
I've been thinking about how we decide what to do next, and how we share that with others.
2022-03
On Estimates
Let's not take time making guesses that are more precise than their accuracy warrants.
2022-02
Written Narrative Driven Collaborative Discussions
An alternative meeting format for highly abstract or contentious discussions
2021-11
Crossing the WIP per person threshold
How we reduced WIP/person from >1.5 to <1
2021-07
Working Styles Classification
A reductive visual summary of collaborative programming terms like mobbing, pairing, and swarming
2021-04
Organic Adoption and the Build vs Buy Dilemma
An exploration of one dimension in the decision to build custom or to use an off the shelf component
2021-04
Getting Better At Writing Code For Readability
Some things that I have found helpful to grow in writing code for humans to read
2021-03
The "Just Sharing" Principle
an approach (that I've found effective) for telling folks about tools & practices
2020-12
jq cheat sheet
Notes on cool things to do with the JSON processor tool
Hobby Project Index
An inventory of my favourite side projects (for fun & learning).
2020-12
Link Shortener with Route 53 and S3
Can you make a link shortener with just a DNS? Not quite.
2020-11
Introducing Mobbing with Empathy
Mob Mentality Show (guest appearance)
2019-10
Interview Questions
Questions for job candidates to ask interviewers
2019-09
Foundational Software Development Skills
Links to resources and tutorials covering basic, (boring?), but essential skills for a software developer.
2019-09
Getting Help as a Software Developer
Troubleshooting your code and what to do when you can't
2019-06
Reading List
Books I've found helpful or want to read soon
2019-05
Git Recipe Book
Git suggestions for developers first starting on a medium/large team.
2019-05
The Active Code Reviewee
Getting the most from a quiet reviewer
2019-03
Git commit message template
To train me to write better commit messages
2019-03
Architecture Tests in JavaScript
Communicating big-picture architecture with your team with automated tests