popular
Mistakes engineers make in large established codebases
How I use LLMs as a staff engineer
recent
The future of AI is Ruby on Rails
March 20, 2025
Engineers should state the obvious
March 20, 2025
The good times in tech are over
March 16, 2025
Refactoring to understand and "vibe coding"
March 15, 2025
What's next after the AI bubble bursts?
March 8, 2025
Model Context Protocol explained as simply as possible
March 8, 2025
Great software design looks underwhelming
March 7, 2025
Value over replacement in software engineering
March 1, 2025
Building your sense of what's important at a tech company
March 1, 2025
Knowing where your engineer salary comes from
March 1, 2025
Paths through the space of all possible solutions
February 26, 2025
How I know I'm working with a strong engineer
February 23, 2025
Advice for prompting reasoning models
February 23, 2025
Weak engineering managers
February 22, 2025
Using LLMs effectively isn't about prompting
February 21, 2025
To avoid being replaced by LLMs, do what they can't
February 15, 2025
Thinking like a LLM
February 15, 2025
Engineers who won’t commit
February 10, 2025
Good engineers are right, a lot
February 6, 2025
How I use LLMs as a staff engineer
February 4, 2025
Why does AI slop feel so bad to read?
February 1, 2025
Are DeepSeek's new models really that fast and cheap?
January 31, 2025
Why AI labs offer so many different models
January 28, 2025
What did DeepSeek figure out about reasoning with DeepSeek-R1?
January 26, 2025
Playing politics is how senior engineers protect their team
January 26, 2025
Working fast and slow
January 25, 2025
Why are big tech companies so slow?
January 24, 2025
Protecting your time from predators in large tech companies
January 19, 2025
Thinking clearly about software
January 18, 2025
Giving pushback to leadership
January 16, 2025
Crushing JIRA tickets is a party trick, not a path to impact
January 14, 2025
Writing a tech blog people want to read
January 10, 2025
What it's like working for American companies as an Australian
January 10, 2025
What makes strong engineers strong?
January 9, 2025
Is it cynical to do what your manager wants?
January 8, 2025
Ratchet effects determine engineer reputation at large companies
January 5, 2025
Mistakes engineers make in large established codebases
January 2, 2025
Glue work considered harmful
December 16, 2024
How I got promoted to staff engineer twice
December 28, 2024
What can strong engineers do that weak engineers can't?
December 27, 2024
Why some engineers get trusted with high-impact work
December 22, 2024
Grifters, believers, grinders, and coasters
December 2, 2024
I don't know how to build software and you don't either
November 20, 2024
How I ship projects at big tech companies
November 9, 2024
Talking to ChatGPT costs 5ml of water, not 500ml
October 28, 2024
MCTS and LLMs: what's the big deal?
June 17, 2024
From hours to seconds: AI tools to detect animal calls
April 25, 2024
Porting and hacking Llama2.c for fun and profit
November 26, 2023
How LLMs work
November 26, 2023
Building LLM-driven agents
November 26, 2023
Acing the coding challenge
December 25, 2020
Acing the design interview
January 1, 2021
Blockchain explained simply
April 20, 2021
Building multiplayer games with socket.io and HTML5 Canvas
July 29, 2020
Blockchain for beginners
July 29, 2020
What kind of work I want
September 6, 2021
Keep incidents boring
April 20, 2021
Learning incident response with problem sets
September 3, 2021
Writing good technical explanations
December 25, 2020
Avoiding worry driven development
September 11, 2020