Articles

Software engineering lessons from production, raw and honest from the heart — almost 20 years of them. Jump to a year in the sidebar, or browse categories.

February 2022

A new VSCode extension makes state machines shine on a team

When you grok state machines, a new world of computational beauty and software design opens in front of your eyes. Things that used to be hard become easy. The impossible becomes possible. And you turn into that annoying team member.

Be their shit umbrella

because if you go to bat for the team, the team goes to bat for you

Immutability isn't free

Or how we took an API endpoint from 16s to 3s.

Why mentoring matters

Here's a funny video about Ivane, a construction worker with amazing productivity and work ethic. Imagine what Ivane could do if someone showed him how to use his tools 😱

How I used indie hacking to sponsor my own greencard

The longest project of my life

January 2022

Quick tip for system design interviews

What are system design interviews for anyway?

How to add Typeform as a Gatsby source

Every year I ask readers if they're enjoying my newsletter. Then fail to use those responses 😅 This year I said heck it and built a /testimonials page that shows everyone's feedback raw from Typeform. Here's how.

Why other people's code looks weird

Are you an organizer or a searcher? What about your team?

What is the goal of engineering?

How can you know you're succeeding if you don't know where you're going?

Wow API Gateway v2 is fast

A story of how my performance hunch was totally wrong and the answer that sped up an AWS Lambda 33%

Try to work for a brand

Brand helps your career in subtle ways.

The quickest way to fail a tech interview

No it's not a wrong answer or floundering with algorithms. Not even being nervous or shy or having a language barrier. Culture fit is the least of your worries if you make this mistake.

What to do when bugs are whack-a-mole

What do you do when every bug you fix creates 5 new bugs? You could laugh and move on, or realize it's a sign of bigger issues

Using DynamoDB Streams with the Serverless Framework

DynamoDB Streams are a convenient way to react to changes in your database. And surprisingly easy to use 🥳

December 2021

How I stopped chasing mice in 2021

How a focus on long-term games changed my approach to everything and calmed down my life

The Passion Paradox

burnout doesn't work the way you think

pg-mem and jest for smooth integration testing

The cult of TDD leads you down a dark and stormy path towards brittle code with a false sense of security. But there is a better way. A sweet spot between unit and heavy integration.

A mental framework that helps you code faster

What slows you down the most when you're coding or doing software engineering? I think it's how fast you make decisions

Datalist, the pure HTML typeahead you didn't know about

If you ever want to build a searchable typeahead field, `<datalist>` can do that for you. On all browsers. Across devices. Standards compliant. With no JavaScript. 🤯

When it’s okay to work overtime

Not all overtime is bad overtime

Why null checks are bad

Every null or undefined check doubles the number of tests you need 😱

Small choices can wreck your codebase

wanna see the strangest looping construct I've found in production code?

November 2021

Better tooling won't fix your API

RESTful APIs are like Agile – everyone does it differently and if it isn't working, it's your fault for doing it wrong. 🤨

What to expect in senior level interviews

Interviews are terrible. Stressful, time-intensive, loosely correlated with on the job performance. They're the least terrible way we have to hire.

Getting from junior to senior

The difference in salary between a junior and senior engineer can be orders of magnitude. Many multiples at least. But what's the difference in mindset that gets you there?

How defensive coding leads to bloat

Defensive coding is an important lesson and over time and engineers it leads to massive bloat, if you're not careful.

Your job as an engineer is to make yourself unnecessary

You can use React Query for slow computation, not just API

You can use the ergonomics of React Query for any slow operation and it's wonderful.

Balancing serious sidehustles and full-time work

Erik, the author of Developer Hegemony and founder of Hit Subscribe, invited me to chat about balancing sidehustles and full-time work

Finding unresolved promises in JavaScript

JavaScript is a fantastic server-side language because it's async. That also makes it tricky. 💩 What happens when you swallow errors? Forget to resolve promises? Or run into a number of other anti-patterns