-
Why Portland
-
User research as a barometer of software design
-
Assorted thoughts about abstraction
-
Code quality and rule consequentialism
-
Reflections on Connect Developers
-
Conversation as path traversal
-
Onboarding and taxi driving
-
What are pure functions?
-
Anxiety and computer architecture
-
Tentative Anger
-
Using blinders to help you see things for what they are
-
My current thinking on money and low carb diets
-
Impressive vs honest signaling
-
Classes often aren't the simplest tool for the job
-
Appropriately Gray Products
-
How much should we value life?
-
A Brief Review of The Scout Mindset
-
When Programmers Don't Understand Code, Don't Blame The User
-
A Qualitative and Intuitive Explanation of Expected Value
-
When writing triggers memory reconsolidation
-
Believing vs understanding
-
Preparing for ambition
-
Happy paths and the planning fallacy
-
Code as a closet
-
Bad names make you open the box
-
Don't feel bad about not knowing basic things
-
Taking the outside view on code quality
-
Naming and pointer thickness
-
Code quality interviews
-
Call stacks in everyday life
-
Bayes' theorem, plausible deniability, and smiley faces
-
Think like an educator about code quality
-
The best frequently don't rise to the top
-
The best things are often free or cheap
-
Using obscure features of a programming language
-
Five examples
-
Code isn't the only thing that needs to be maintained
-
Thoughts on Mustachianism
-
Conversation, event loops, and error handling
-
Give it a google
-
Why I love stand up comedy
-
Bad reductionism
-
Debugging the student
-
Writing to think
-
Big O, little n
-
Overview of heaps
-
Overview of tries
-
Dynamic programming with fibonacci numbers
-
Things I don't understand about basketball
-
Economic potential energy
-
The thinking behind the Startups In Depth podcast