Blog
Posts on software development, careers, and craft.
In poorly-structured companies, the hardest part of software development is...
In poorly-structured companies, the hardest part of software development is overcoming the barriers to actually writing code. Common barriers: ❌ Mi...
3 things I can influence: 1
3 things I can influence: 1. My physical health (via exercise and diet) 2. My mental health (via my relationships, my habits, and the content I con...
It's fascinating how differently I view a problem after a good night's sleep
It's fascinating how differently I view a problem after a good night's sleep. Today I woke up and immediately solved a problem that stumped me yest...
When something is hard to type in TypeScript, I often find that’s a sign I...
When something is hard to type in TypeScript, I often find that’s a sign I should rethink my data structures and function signatures. So TypeScript...
On React components, I prefer false defaults for boolean props
On React components, I prefer false defaults for boolean props. Why? Because I can set the prop with less code. <Modal show={false} /> 👎 <...
Early in my career, I pushed back on unfamiliar tasks
Early in my career, I pushed back on unfamiliar tasks. I said “I don’t know how to do that. I’ve never done that before.” Then I realized: In devel...
Toyota dealer wanted $470 to change the spark plugs
Toyota dealer wanted $470 to change the spark plugs. (Transverse mounted V6, so rear bank is tricky). Took a couple hours, but I just finished the...
A reminder on why the industry started rendering on the client: Partial page...
A reminder on why the industry started rendering on the client: Partial page loads Instant client-side routing Animated interactions and transition...
Just joined a TypeScript project
Just joined a TypeScript project. I noticed an opportunity for refactoring. In JS, I’m more hesitant to change code. Even with tests, I fear missin...
3 skills that make coding easier: Organization - Recognizing and grouping...
3 skills that make coding easier: Organization - Recognizing and grouping related items Naming - Describing things clearly, yet succinctly Decompos...
My son (12) has learned JavaScript over the last 2 years
My son (12) has learned JavaScript over the last 2 years. He struggles with picking good variable names. This leads to confusion about what his cod...
Regex are hard to write, and even harder to read
Regex are hard to write, and even harder to read. A technique that helps: 1. Declare the regex as a well-named const. 2. Write automated tests on t...
I don’t ask if I can write tests
I don’t ask if I can write tests. I don’t ask if I can spend time refactoring before I commit. I don’t ask if I can make the UI accessible. I don’t...
6 techniques for managing large datasets in React: 1.Pagination 2.Lazy...
6 techniques for managing large datasets in React: 1.Pagination 2.Lazy loading / Infinite scroll 3.Windowing 4.Eliminate needless renders 5.Impleme...
Two questions that changed my life: 1
Two questions that changed my life: 1. What would you do if you didn’t have to work? 2. How can you start doing some of that now?
As a kid, I looked at exotic cars and thought “It would be awesome to own...
As a kid, I looked at exotic cars and thought “It would be awesome to own that!” As an adult, I look at exotic cars and think “that would be outrag...
If a team has no automated tests, it's hard to get started
If a team has no automated tests, it's hard to get started. Why? Because there are many decisions to make: Testing lib Where to store tests Mocking...
5 skills of successful developers: Communication - Clear writing, speech,...
5 skills of successful developers: Communication - Clear writing, speech, and code. Organization - Logically groups and names things. Curiosity - L...
I'm working on two similar projects
I'm working on two similar projects. One is written in plain JS. The other in TypeScript. In JS, I finish coding sooner. But, then I spend more tim...
Just joined a project
Just joined a project. The app requires 10 manual steps before I can start coding each day. 👎 Before building my first feature, I'm automating the...
I buy a new laptop every 1-2 years
I buy a new laptop every 1-2 years. Here’s why: 1. It makes me money. 2. It’s a business tax deduction. 3. Buying a fast machine is like buying tim...
Today I’m thankful for: A healthy family
Today I’m thankful for: A healthy family. ❤️ A career I still enjoy after 20 years. 👨💻 My courses have been watched by over 800k devs. 🎉 A succ...
On React's useEffect Hook: "I try to describe the effects I write by saying...
On React's useEffect Hook: "I try to describe the effects I write by saying “when [dependencies] change do this” to myself. If this sentence contai...
My favorite benefit of going independent: freedom
My favorite benefit of going independent: freedom. I pick my projects. I pick my equipment. I pick when and where I work. So when I work, I’m happi...
One of the most persistent rules of software: Adding more people to a late...
One of the most persistent rules of software: Adding more people to a late project makes it later. Why? Because adding people adds overhead: -Stop...
TIL the browser's built-in form validation features are surprisingly robust
TIL the browser's built-in form validation features are surprisingly robust. 1. Declare attributes like required, min, max, minLength, maxLength, a...
9 things that I've found improve development team velocity: - Mock APIs -...
9 things that I've found improve development team velocity: - Mock APIs - Static types - Fast CI builds - Fast feedback loops - Small, focused tick...
6 Signs a Dev Team is Out of Control
“We don’t have time to write tests.” “We don’t have time for code reviews.” “We don’t have time to set up a CI server.” “We don’t have time to automate deploys.…
6 signs a dev team is out of control: We don't have time to write tests
6 signs a dev team is out of control: We don't have time to write tests. We don't have time for code reviews. We don't have time to set up a CI ser...
Many companies use Confluence, Dropbox, etc for project docs
Many companies use Confluence, Dropbox, etc for project docs. I prefer a http://README.md, stored in the repo. Easy to find Can link to local files...