This page is periodically updated from my reading list of blog posts and other resources I find online. This page is powered by Github issues, which you can read about in this post: Using Github Issues as a CMS. Due to the 100 item limit on the GitHub GraphQL API, this page is limited to the 100 most recent items I've added.

#Post
#111Salary negotiation
7/3/2023
#109Speed matters: Why working quickly is more important than it seems
6/14/2023
#108A system to organise projects
6/13/2023
#107The Surprising Power of Documentation
6/12/2023
#106How To Design Software Architecture For Startups
5/9/2023
#104Get your work recognized: write a brag document
4/19/2023
#103Treat your to-read pile like a river, not a bucket
3/29/2023
#102Lessons from a Pessimist: Make Your Pessimism Productive
3/20/2023
#101Powers of 10: Time Scales in User Experience
3/7/2023
#100Mary Poppendieck’s "The Tyranny of ‘The Plan"
1/10/2023
#98How to communicate effectively as a developer
10/28/2022
#97YAGNI exceptions
10/18/2022
#96How to Build Software like an SRE
10/17/2022
#9411 Laws of software estimation for complex work
9/21/2022
#93Why deadlines are pointless and what to do instead
9/20/2022
#90How to Write a Git Commit Message
9/6/2022
#87Don't Go Dark
7/20/2022
#86Technical Writing for Developers
7/20/2022
#85A guide to frontend migrations
7/18/2022
#84Publishing your work increases your luck
7/12/2022
#83Giving a Shit as a Service: A mental model for service businesses.
7/12/2022
#82Code vs. No-Code
6/26/2022
#81Kelsey Hightower on How to Become a Better Engineering Team
6/26/2022
#79When Everything is Important But Nothing is Getting Done
5/24/2022
#78Proper use of Git tags
5/24/2022
#77Shipping to Production - Approaches for shipping code to production reliably, every time.
5/24/2022
#75You probably don’t need AWS and are better off without it
4/20/2022
#74How long do software engineers stay at a job?
4/20/2022
#72Choose Boring Technology
3/22/2022
#71The Code Review Pyramid
3/22/2022
#70My guiding principles after 20 years of programming
3/22/2022
#69How To Do Less
3/14/2022
#67No capes: the perils of being a hero-engineer
3/2/2022
#66Writing Maintainable Code is a Communication Skill
2/27/2022
#65Things You Should Never Do, Part I
2/27/2022
#64Overengineering can kill your product
2/27/2022
#63Programmer’s emotions
2/27/2022
#62Do-nothing scripting: the key to gradual automation
2/27/2022
#61Sharing our Engineering Career Framework with the world
2/27/2022
#60A Practical Guide to Writing a Software Technical Design Document
2/27/2022
#59Reduce code complexity: Guard clauses
2/27/2022
#58How to Remember What You Read
2/27/2022
#57Testing in the Twenties
2/27/2022
#56Google Tag Manager, the new anti-adblock weapon
2/27/2022
#55Reddit Interview Problems: The Game of Life
2/27/2022
#54Backpedal of the Day: Type Keys
2/27/2022
#53Our Engineering Principles and Best Practices
2/27/2022
#52Understanding UUIDs, ULIDs and String Representations
2/27/2022
#51Bad engineering managers think leadership is about power, good managers think leadership is about competently serving their team
2/27/2022
#50A day in the life of a professional software engineer
2/27/2022
#4910 Software Engineering Laws Everybody Loves to Ignore
2/27/2022
#48What is engineering enablement
2/27/2022
#47Why Senior Developers Are Leading the Great Resignation Movement
2/27/2022
#46Polyglot Programming and the Benefits of Mastering Several Languages
2/27/2022
#45Willingness to look stupid
2/27/2022
#44Tips On Prioritizing Tech Debt In A Healthy Way
2/27/2022
#43Your Team is Not "Them"
2/27/2022
#42Researchers Defeat Randomness to Create Ideal Code
2/27/2022
#41How to build an effective working group
2/27/2022
#40Will Nix overtake Docker?
2/27/2022
#39Why flow matters more than passion
2/27/2022
#38Only One Deliverable Matters
2/27/2022
#37The Problem With Hero’s In Software Development
2/27/2022
#36Write code that's easy to delete, and easy to debug too.
2/27/2022
#35Measuring Software Complexity: What Metrics to Use?
2/27/2022
#34Five Books that Changed My Career as a Software Engineer
2/27/2022
#33My Personal Creed of Employment
2/27/2022
#32How to mentor software engineers
2/27/2022
#31Manipulating AST with JavaScript
2/26/2022
#30Embracing Impostor Syndrome
2/23/2022
#29What makes writing more readable?
2/23/2022
#28Everything is Build vs Buy, Even the Cloud
2/23/2022
#27How to be useless
2/23/2022
#2615 Technical Leadership Qualities That I Try to Emulate
2/23/2022
#24An incomplete list of skills senior engineers need, beyond coding
2/23/2022
#22The Pragmatic Pragmatic Programmer
2/23/2022
#21No code reviews by default
2/23/2022
#20Write Shitty Code - why you should and feel good about it
2/23/2022
#19ARE WE REALLY ENGINEERS?
2/23/2022
#18'Positive deviants': Why rebellious workers spark great ideas
2/23/2022
#17Software development topics I've changed my mind on after 6 years in the industry
2/23/2022
#16The software apocalypse is coming
2/23/2022
#14Developers, your manager is likely clueless
2/23/2022
#13Traditional companies are losing because they mismanage software engineers
2/23/2022
#12Developing engineering talent
2/23/2022
#11Writing Matters: How to improve your written communication skills
2/23/2022
#10The Boring Technology Checklist
2/23/2022
#9Death, Taxes, and Database Migrations
2/23/2022
#8Three things that are limiting your impact as an engineer
2/23/2022
#7How to build microservices with Node.js
2/23/2022
#6Monitoring Performance with the PageSpeed Insights API
2/23/2022
#4Three things that are limiting your impact as an engineer
2/22/2022