The Philosopher Developer
all the posts
2024
What are engineers for?
When sophistication is required
2023
The 100-mile chainsaw
What you need to hear
On ice cubes and hot soup
Plan for the best
Adventures in AI
The men on the beach
2022
Leaky bucket, overflowing bucket
The case for writing your own promo
2021
Communication is an outcome
Thoughts on fixing burnout
Modesty is a luxury
On reducing tension
2020
Focus time is not petty cash
What can I do to help?
What is a spike?
2019
Software that explains itself
The case for promoting over hiring
Advice vs. guidelines
The Pit of Success
Putting more thought into dependencies
2018
The rolling cultural deployment
Don't make me think
The business goal
Information intoxication
The house with many rooms
Published in 60 minutes
When the golden rule goes wrong
Big rocks and small rocks
2017
Working on Bitbucket is awesome
Pride is a weakness
2016
The Talking Down Epidemic
2015
The self-healing chain
2014
Should we write our own tests?
Artificial constraints and the pursuit of mastery
Forests and treebuilders
Applications are different
I demand smarter tools
2013
Expertise and perfectionism can be a deadly mix
The absence of disproof is not proof
Carousels, context, and judgment
Problem obsession
Hero culture vs. Borg culture
Introducing Lazy.js
Rethinking priority
In defense of global state
People are not resources
Risk aversion and software development
Charts made dead simple with HighTables
Am I an engineer?
Automating yourself
Your brain is a liability
Unbreaking DataMapper
Making YAML safe again
A/B testing and irreducible complexity
2012
Optimize for comprehensibility
The universe is a one-way function
Cannibalizing yourself on purpose
Brushing up on C.S. - Part 1: Algorithmic Complexity
A magical optimization of the += operator with strings
To start over or continue
The trouble with stop-the-line CI
The littlest Ruby debugger
The Optimizing Mind
The trick to good ballpark estimates
Am I being obnoxious?
Being agile with continuous integration
2011
Ghost clicks in jQuery Mobile
We're all going to die because you don't know what a binary tree is
About that jQuery Mobile trick: Correction
A little jQuery Mobile trick
Not solved here syndrome
How I discovered a bug in the C# compiler, part 2
How I discovered a bug in the C# compiler, part 1
Sometimes the best strategy is to retreat
A boy can dream...
How to build a thread-safe lock-free resizable "array"
Tempted by LINQ? Stop and think
Multithreading and multitasking
Resolution: the need for a terminating condition
White angels & black devils
2010
String manipulation in .NET: Epilogue
Are strings REALLY immutable in .NET?
What's annoying about SortedList
.IndexOfKey
The difference between converting and unboxing: read my mind, compiler!