The Curious Engineer

Cory House

2022–2026

1,339 posts

← 2012–2021

2026 46

May 2026

  1. I thought AI would lead to worse code
  2. My personal site has been on Wordpress for 14 years
  3. Hot take: 🌶️ An agent should be generating nearly all code today
  4. Problem: How do I quickly tell AI exactly which elements I want to change
  5. In 2026, many dev teams still fail to get the basics right

April 2026

  1. Teammate wanted to try Claude's new expensive ultrareview but didn't have access
  2. Wild realization: AI means I shouldn't write *any* code anymore
  3. The acceleration from AI is unbelievable
  4. Pet peeve: Projects where many files are named index
  5. Problem: AI generates code that doesn't match our formatting and linting...
  6. Dev team red flags 🚩 “We do Scrum” “We do Git flow” “We use <insert...
  7. Ya know how in a job interview you can tell if someone is a good candidate...
  8. Been building a new Next.js app over the last few weeks and I'm happy to say...
  9. I thought AI would lead to more slop
  10. The near future: AI generates code
  11. Today at a conference, I asked a room of 250 developers this question: "If...
  12. 4 weeks of coding by 4 developers and over 1,000 unit tests that pass in...
  13. I’ve never been great at regex
  14. This is so slick
  15. I used Windows for 20+ years
  16. I see many people running multiple agents simultaneously
  17. The problem with an immature IT org is it tends to repel the people who are...

March 2026

  1. Just learned a team at Microsoft is doing code reviews *after* merge
  2. I’ve spent 8+ hours a day building with Claude Code and Opus over the last...
  3. Y'all out there running multiple agents at once scare me
  4. Problem: HTTP status codes in code aren't type safe and require looking them...
  5. Bun test is crazy fast, but unfortunately we just switched back to Vitest
  6. Rule: If the prompt is likely to be longer than the code change, I should...
  7. Even in the age of AI, I can do many tasks more quickly manually than via...

February 2026

  1. One of the most common reasons I leave GitHub Copilot is to try a new model...
  2. Using Codex today instead of Claude Code
  3. My big frustration with skills is they're not consistently invoked
  4. Excellent post
  5. Problem: Generating code via AI may lead to skill atrophy and code I don't...

January 2026

  1. I keep improving my agentic feedback loop
  2. Prediction: Frameworks will start shipping official skills
  3. Problem: You want to share a skill with people using different agents, not...
  4. Woah, Vercel just released the React Best Practices skill
  5. You've probably heard of the BDD testing style, using Given, When, Then
  6. Problem: Our team uses many different AI coding tools, so where do we put...
  7. Problem: “you could have AI write/maintain your traditional E2E tests, but i...
  8. With agent instructions files like http://CLAUDE.md, it's tempting to add...
  9. Problem: I’d like to be able to check on or work with my laptop’s Claude or...
  10. Last month I enjoyed "Advent of Claude: 31 Days of Claude Code"
  11. Problem: In Claude Code, when should I create a custom slash command vs a skill
  12. Problem: I want Claude to use Chrome

2025 177

December 2025

  1. AI is an accelerator
  2. Some people run multiple coding agents at once
  3. Problem: I want to run multiple agents at once
  4. Problem: You want to hide a component, but still preload data and remember...
  5. My biggest beef with Scrum: The sprint time box creates an arbitrary deadline

November 2025

  1. I don't need stand-ups, sprints, retrospectives, or a scrum master
  2. Problem: You want to enable a few specific VS Code settings for everybody
  3. I'm reviewing a codebase with over 750 uses of optional chaining
  4. Software development is simpler than it sounds
  5. "LLMs are trained on other people's code"
  6. I talk money with my developer friends
  7. Custom directives are getting out of control
  8. A few years ago I led a team of developers creating reusable software...

October 2025

  1. Just visited The Netherlands for the first time to speak at Techorama
  2. Problem: People forget to remove feature flags
  3. If I’m unhappy with the code AI generates, it’s probably my fault
  4. Two important points: 1
  5. Is Vibe coding effective
  6. I'm watching the Remix Jam stream and this little moment is interesting
  7. In TypeScript, I don't use screaming case for consts - it's needless because...
  8. People often separate React component logic via a hook
  9. > In sprint planning > Team has 19 story points in the sprint and a...
  10. "Test in prod”

September 2025

  1. "Because I said so." Early in my career, I asked my team lead why we had to...
  2. In the last week both Cursor and Copilot announced a new CLI
  3. Problem: Using coding with agents, it's annoying to constantly check back to...
  4. Imagine your team only had two environments: 1
  5. Problem: I want to learn while coding in a new tech
  6. Anyone using a Macbook Air as their dev machine
  7. I’m a fan of Tanstack and excited for Tanstack Start
  8. My 6-step approach to learning: 1
  9. Just implemented a feature using GitHub spec-kit
  10. Just found awesome-copilot
  11. Problem: Too many feature flags
  12. General rule: Feature flags should default *off* for new features
  13. New version of VS Code chat automatically selects the appropriate LLM model...
  14. A big difference between Tanstack Query and Tanstack DB: Tanstack Query is...
  15. How I handled React state over 10 years: 2014: Class state 2016: Redux 2018:...

August 2025

  1. How I routed in React over 10 years: 2014: React Router 2016: Next page...
  2. A portion of the React community seems to enjoy hating on Vercel
  3. Problem: LLMs may be trained on old docs and thus suggest outdated APIs
  4. Many apps are basically Excel in the browser
  5. "Solid is better than React." Sure
  6. Spending more time with Tanstack DB this week and it's finally clicking
  7. Claude's init command is impressive
  8. So I'm using Tanstack Router on another new project and I gotta say it again...
  9. I enjoy having my own an app that’s just for experiments
  10. Each time I open up an old JS project, I get dozens of breaking changes when...
  11. How I've fetched in React over 10 years: 2014: Fetch in componentDidMount...
  12. If you give a junior dev a vague task, you’ll probably get bad results
  13. I’m eager to see how LLM usage changes when the venture capital money dries up
  14. I think sync engines are the future
  15. How I’d pick a router in React in 2025: 1
  16. Wild story of working with Claude I just heard from a friend: I was coding...
  17. Theory: The fewer long-lived environments the better
  18. I'm curious - Who's doing development with just two environments

July 2025

  1. Just heard of a team where non-developers (such as designers and product...
  2. AI is supposed to make us faster coders, right
  3. My preferred React stack for 2025 Package manager: Bun Starter: Vite...
  4. When learning a new tech, I like to open PRs to improve the docs
  5. I'm bullish on sync engines, but I admit there's a lot of downsides to...
  6. "Should my web app use a sync engine?" If your web app would benefit from...
  7. "Developers don't write automated tests
  8. I've found arguing is more productive when I do 3 things: 1
  9. Two related, but separate ideas: 1
  10. After 25 years of coding I've realized there is no end to learning
  11. I wish more library/framework docs had a section for “Stuff we don’t do well”
  12. I've spent the last few weeks experimenting with different local-first /...

June 2025

  1. One of my favorite uses for rest/spread is creating a new object that omits...
  2. Shots fired
  3. I've never enjoyed writing CSS, but two innovations solved that: 1
  4. What are people using instead of Storybook these days
  5. 5 types of React state, and when I use each: 1
  6. Programming isn't easy
  7. Trend I'm seeing: AI app generators are a sales funnel
  8. Problem: Choosing technologies is hard
  9. Prediction: AI will replace most web app UIs
  10. The local-first / sync engine ecosystem is far bigger than I realized
  11. Confession: The last year has been hard for me
  12. Problem: You want to run a "real" DB in the browser
  13. The weird thing about 2025
  14. Problem: ESLint is slow on large projects with complex rules
  15. This can’t be real The sign of a failing organization is when everyone knows...
  16. "Today's LLMs are like a junior developer"
  17. I bought my M1 Max Macbook Pro in October 2021
  18. This post by Dan Abramov on "Progressive JSON" helped me understand how...
  19. I love Tanstack Router's type safe search params
  20. In a React app, declaring an ErrorBoundary at the root is common, but rarely...
  21. TypeScript syntax is often inspired by JavaScript

May 2025

  1. Seeing these two side-by-side in my timeline really sums up the current...
  2. My favorite things about Europe vs the USA: 1
  3. The rumors were true - Remix is coming back and it’s not using React
  4. Problem: I want to ensure my switch statement handles all potential cases
  5. For me, LLMs work quite well as “glorified autocomplete”
  6. Problem: You have complex logic for narrowing a TypeScript type that you'd...
  7. Woah, @tan_stack just added Tanstack DB, a sync engine that works with...
  8. Local-first web apps already have a big ecosystem
  9. Four related web app problems: 1
  10. Just realized Vitest now has built in support for testing TypeScript types
  11. Vibe coding is a leaky abstraction
  12. Vibe coding is the modern version of copy/pasting code you don’t understand...

April 2025

  1. How to write bad software: Standardize nothing
  2. Just converted a small test suite from Vitest to bun:test
  3. Tweet 1914682178857795918
  4. TypeScript types can be intimidating to read
  5. Here's how I validate a URL param via Zod
  6. The fact that so many apps out there blindly trust runtime inputs is the...
  7. I validate all my runtime inputs: -Cookies -Local storage -URL params -API...
  8. Claim: "Those who can't do, teach"
  9. I'm reviewing a TypeScript codebase that's filled with type assertions like this
  10. There are many JS runtimes - Node, Deno, Bun, etc
  11. Zod is TypeScript's most popular runtime validation library
  12. So Dan Abramov's new *giant* blog post (think small book) is worth the read
  13. One of my favorite tools during a code audit is jscpd
  14. Problem: Manually creating TypeScript types is time-consuming, tedious, and...
  15. TypeScript has around 20 handy utility types - Pick, Omit, Partial, etc
  16. Just generated Playwright tests for a feature that had no tests with this...
  17. React Server Components have gotten a lot of hate recently
  18. The biggest reason I prefer working in TypeScript over typed alternatives...

March 2025

  1. I've heard people say "spelling mistakes in code are harmless"
  2. PSA 📢: This isn’t error handling
  3. Over-abstractor: A dev who immediately wants to abstract any new library...
  4. TypeScript radically improved my frontend code
  5. Just watched "React Query API Design: Lessons Learned" by @TkDodo 7 insights: 1
  6. A codebase shouldn't feel like this, but I see it a lot
  7. Problem: Unused npm dependencies
  8. Today I'm auditing a codebase for a client
  9. Problem: I want to see a list of the settings I've changed in VS Code
  10. Just read "Next.js vs Tanstack" by @gill_kyle
  11. In TypeScript, there are at least 4 ways to implement immutability
  12. Now that Node, Bun, and Deno can run TS files directly without compilation,...
  13. In TypeScript, interfaces and types are often interchangeable
  14. TypeScript is great
  15. TypeScript will soon compile 10x faster
  16. I think I finally have my phone-friendly vertical video format dialed in
  17. Wow, the speed impact of rewriting TypeScript in Go is wild
  18. In TypeScript, interfaces and type aliases can "extend" each another
  19. Tweet 1899480456975778106
  20. My M1 Mac is still wonderful
  21. My new TypeScript: Zero to Hero courses are different than any courses I've...
  22. Theory: If you know a tech well, there are probably features you try to avoid
  23. Misconception: "Separate useState is faster" Reality: When state changes,...
  24. Tanstack form was announced a day ago and everyone is excited about it...
  25. Problem: You need to convert a big JavaScript project to TypeScript
  26. TypeScript rule: The stricter we are, the safer we are

February 2025

  1. Problem: React Query’s useSuspenseQuery displays the Suspense fallback...
  2. Years ago I was a team lead at a growing startup
  3. Surprisingly, I'm using Bun instead of Node in my new TypeScript courses
  4. I was already a big fan of Tailwind, but I'm even more bullish now that AI...
  5. A full-time job sounds safe, but it’s not
  6. Docs should be honest
  7. For 25 years, I’ve specialized in frontend web development
  8. The React docs finally recommend Vite
  9. RSC is the most painful new React API in the State of React survey
  10. My recipe for feeling great: - Good sleep
  11. Why React Query
  12. Wow, just learned React Query is used about about 1 in 5 of all React apps
  13. Just presented a two day React workshop

January 2025

  1. The ending of an era: Create React App is about to be officially marked as...
  2. 2025 is going to be a big year for local first web apps
  3. This article is an excellent overview of why sync engines / local first are...
  4. Problem: TypeScript doesn't support specific string or numeric values (a...
  5. I've found the best way to learn is to teach
  6. At Codemash, a photographer saw me at lunch and asked "Is it okay if I take...
  7. People complain about complex TypeScript types, but complex types are...
  8. Everybody dreams of retiring early
  9. Problem: When the left and right side match, a TypeScript enum or const...
  10. I ❤️ TypeScript
  11. Just talked to a business owner who reduced his dev staff from 18 to 3 using...
  12. Problem: I may forget to pass an optional param in cases where it should be...
  13. One of the weirdest JavaScript features: Functions can have properties
  14. In one of my client’s apps, we centralized date formats in an enum to...
  15. Interesting
  16. In TypeScript, many people argue over when to use type vs interface
  17. I recently joined a team that’s using V0 for rapid UI prototyping
  18. Why does coding pay well
  19. V0's system prompt specifies these naming and casing rules

2024 341

December 2024

  1. In modern TypeScript, there are at least a dozen ways to narrow types
  2. Next.js and React Router 7 (RR7) have fundamentally different approaches to...
  3. What if I take my career seriously and AI replaces me
  4. In my experience, it’s rare to find someone in QA who is as good at writing...
  5. Claim: Your app is slow because it uses React/Vue/Angular instead of plain...
  6. Woah, I agree with v0’s state management preferences
  7. What I love about Tanstack start: Simplicity
  8. Problem: You want to push your changes, but skip CI because you're not done...
  9. Controversial opinion: 🌶️ I prefer for all quality checks to occur *before*...
  10. My preferred development workflow for 2024: 1
  11. Yesterday read through V0's 1600+ line system prompt
  12. Someone posted the V0 system prompt on GitHub
  13. Wow, Supabase is 🔥
  14. Tweet 1864402475723141523
  15. Hot take 🌶️: I’m not a fan of dedicated QA
  16. I’ve found the fewer environments a software team has the better
  17. I'm creating a new TypeScript project using Bun

November 2024

  1. Problem: You want to use Node with TypeScript
  2. The State of Frontend 2024 report is out
  3. Next.js and React Router 7 (RR7) have fundamentally different approaches to...
  4. React 19 is in RC React compiler is in Beta Tanstack Start is in Beta React...
  5. I often talk to developers who are thinking about going independent
  6. Tanstack Query pattern: 1
  7. Knip finds unused JS and TS code
  8. React 19 RC1 is out
  9. It's 2024 and I still see keys like this in React PRs
  10. Problem: I want to test my React app's error boundaries
  11. Tanstack query is awesome for fetching and caching data
  12. Studio setup 2.0: - Closed blinds (to control the light) - New 5600K...
  13. Mistake: Needlessly wide optional field
  14. If I can’t clearly explain why people vote differently than me, then I need...
  15. All these years I've been using "new Error" for nothing
  16. In code reviews, I've learned to watch out for many related useState calls...
  17. One of the most unkind things you can do is disparage someone else’s passion
  18. I've spent the last few weeks trying all sorts of React 19 edge cases

October 2024

  1. TypeScript has a structural type system, not a nominal type system
  2. I have a theory: 🌶️Some developers are letting their political views impact...
  3. Two popular, but conflicting programming styles: Small functions vs deep...
  4. TypeScript problem: Related object properties should either all be provided,...
  5. New React framework: One
  6. “Code should be obvious
  7. Refactoring without tests is basically this: “I changed some stuff and...
  8. I don’t ask for permission to refactor
  9. PSA: 📢 The useId hook is stable in React 18
  10. Goal: Calculate a value once per render
  11. Problem: The backend API returns poorly structured JSON
  12. Skeleton screens improve perceived load times, reduce bounce rates, and can...
  13. In the age of AI, code reviews are more important than ever
  14. New React framework: One Strongly typed file-based routes (like Tanstack...
  15. Problem: SQL is an old, leaky abstraction
  16. Perhaps the most common mistake I see in TypeScript code reviews: Needless...
  17. Just saw this performance mistake in a React code review
  18. 9 ways I’ve made money as a software dev, sorted from most enjoyable to least: 1

September 2024

  1. Problem: The backend returns a needlessly wide type
  2. Somehow I overlooked this new React 19 feature until now: Problem: I want to...
  3. These days, many old JavaScript projects have converted to TypeScript
  4. Every developer has to balance two concerns: 1
  5. React mistake: State too high
  6. Situation: A web app has no end-to-end (E2E) tests
  7. I occasionally see people using HTML entities like ' or "
  8. I’ve been happily using Vitest for quite awhile, but I just tried using Jest...
  9. 7 things I search for when I audit a TypeScript codebase: any - Use a...
  10. “I’ll add tests in an upcoming PR.” When I hear this, I push back
  11. Great advice from “A Philosophy of Software Design”
  12. I had a wonderful job, but I always dreamed of being independent

August 2024

  1. React performance mistake: Calling a function multiple times with the same args
  2. TypeScript problem: A subset of fields are optional, but should all be...
  3. Problem: I want strongly typed React search params
  4. I'm ready for AI that's pushy, like a smarter linter
  5. Problem I just saw in a code review: Using useEffect to copy URL search...
  6. Just used Cursor to eliminate a needless useEffect in a big React component
  7. I love being a software developer
  8. React is typically fast enough
  9. I care about code quality
  10. I'm tired of bad test names
  11. Problem: I want to require a specific format for a TypeScript string
  12. I’m looking forward to useActionState in React 19
  13. My philosophy: If I need an alarm or caffeine to wake up, I should go to bed...
  14. Announcement: react-switchboard Create custom dev tools for your React app
  15. I don’t normally do this but I coded over 12 hours yesterday and stayed up...
  16. I've spent the last few weeks working on a React developer tool that I think...
  17. Problem: You need to check if a value matches one of many potential values
  18. How do we accomplish this in software
  19. I’m looking for a good technical book to read on vacation
  20. The most common needless use of `let` I see: Setting an initial value,...
  21. Just realized my React Berlin talk "Managing React State: 10 Years of...

July 2024

  1. Custom DevTools are a powerful way to speed up development
  2. Problem: React Router’s useSearchParams is clunky, and not type safe
  3. Two ways to write a test: 1
  4. Storybook is useful, but the number of dependencies it drags in feels excessive
  5. Problem: You want to compare two files
  6. Problem: It’s unclear if a test is a unit, integration, or e2e test
  7. I'm creating a reusable React component that I plan to publish via npm
  8. Problem: With in-browser testing tools like Playwright, each page load takes...
  9. Problem: You want to quickly publish an npm package using TypeScript
  10. Using fetch
  11. React 19 is huge
  12. One of the most common sources of needless complexity I see in code:...
  13. Look around your team
  14. A bug I see in nearly every web app: Last in wins
  15. Forms in React 19
  16. React 19 has many new form-related features: Server actions - Call async...
  17. Problem: Sometimes a component is "too big"
  18. Work gets better when you don’t need the money
  19. How I typically handle React state today: Data fetched via HTTP: React Query
  20. An easy mistake to make: Needlessly “high” state
  21. React Query is an asynchronous state management tool
  22. I often see web apps with separate frontend and backend dev teams
  23. Problem: Choosing a React state library is hard
  24. Just learned it's easy to create beautiful warnings and notes in markdown...
  25. React's built-in state works great
  26. The New York Times just upgraded from React 16 to 18
  27. Problem: You need to manipulate a query result
  28. Code smell: Setting state twice in a row Example: Solution: Eliminate...
  29. I’m building a new React app with all the new features: React Server...

June 2024

  1. Habit: When I'm coding alone in my home office, I often narrate my work aloud
  2. Why code review is critical: If the code is confusing, it’s easiest to fix...
  3. Web app UI security in one tweet: Assume the client will -Change the URL...
  4. Just presented “Lessons from 10 years in React” at @kc_dc
  5. "I'm not convinced Zod is helping" One of my clients said this because the...
  6. Problem: When a URL param changes, React Router renders components using...
  7. I rarely use Jest or Vitest for UI testing anymore
  8. Problem: Declaring default React prop values inside the component
  9. I often help teams add tests to existing web apps via Playwright or Cypress
  10. PSA: A static production JS app shouldn’t need the node_modules folder
  11. Just spent a couple hours reviewing the “State of JS” survey results
  12. “Why validate JSON responses via Zod if the app just crashes if the schema...
  13. Problem: Related optional properties Why it’s a problem: - Needlessly...
  14. A Zod misuse I've noticed: Validating function args
  15. Naming rule: The larger the scope, the longer the name
  16. Quick story about humility: I recently met someone new at a conference dinner
  17. Sometimes initial page load speed doesn’t matter
  18. The new course is live
  19. The React 19 announcements and the existing React docs send a clear message: 1
  20. React’s docs have a gap: They provide no advice for people running...
  21. A mindset I’ve found helpful for learning: Don’t expect to understand on the...
  22. Today I'm working with an app that has too many layers of abstraction
  23. Separating unrelated concerns is helpful
  24. One of my clients is using an odd React pattern: They put only JSX in components
  25. Why use Vite instead of create-react-app
  26. How to upgrade old create-react-app app to Vite: 1
  27. Today I helped a team with a 6 year old React app
  28. Problem: React Query keeps a reference to everything that was in scope when...
  29. Adding an abstraction may help developers understand a complex app by...
  30. Problem: It’s easy to forget to remove feature flags later
  31. Situation: You want to write automated tests for a REST API
  32. 25+ ways to handle state in a React app in 2024: React: useState useReducer...

May 2024

  1. How do you name an array when the noun doesn't have a plural form
  2. A user doesn’t think about where state is stored
  3. Scenario: A modal for editing a user
  4. “Automated tests are like pouring concrete on code.” I disagree
  5. I finally switched to Arc browser a week ago
  6. Signs we should split a component: 🚩 The props are complicated and...
  7. TypeScript problem: You need to support any string value, but you’d like...
  8. React compiler is experimental, but it's safe to use...
  9. Common issue I've seen with teams that use a global state tools like Redux:...
  10. Problem: If you move files via cut and paste, Git “sees” a remove and an add
  11. Problem: I want to use a TypeScript union type, but: The list of options is...
  12. Problem: You want to initialize something only once in a React component
  13. When I feel burned out, I avoid screens
  14. Quiz: Let’s see how well we understand React Server Components
  15. Just watched @dan_abramov’s React Conf talk
  16. I love that the React ecosystem keeps innovating
  17. React's simple idea: Decompose complexity via components
  18. Wow, someone built the same site in two ways: 1
  19. Just did a short stopover in Iceland on the way to speak in London
  20. "We create a separate hook for every React component to keep the component...
  21. One of my clients creates a custom hook for *every* React component
  22. I can’t stop thinking about this quote
  23. Problem: Too many browser tabs
  24. A bad developer keeps adding complexity until it finally works
  25. React problem: I want to use a feature flag to call one of two React hooks -...
  26. Feature flag pattern: When replacing an old feature with a new feature via a...
  27. Problem: Slow pull request reviews Solutions: ✅ Pair program ✅ Open small,...
  28. Problem: We have a flaky test that keeps breaking our CI build
  29. I see some React apps using useMemo everywhere
  30. I'm creating the same app using a variety of third-party React state...
  31. I disagree with the majority here
  32. Why I prefer const over let: ✅ const provides me extra cues because const is...
  33. Rushing developers creates a downward spiral of quality
  34. In TypeScript apps, if something is hard to type, my design is probably wrong

April 2024

  1. Problem: “Duplication is often better than the wrong abstraction”
  2. “Duplicated code is often better than wrong abstraction.” “Excessive...
  3. In the last 10 years I think the change that has most improved my web...
  4. Problem: I want to show a spinner if any React Query mutations are in progress
  5. Sometimes the divide between the backend and frontend leads to massive waste
  6. Problem: Fetching in useEffect is clunky, verbose, and error prone
  7. Challenge: Name something that a software developer should *always* do
  8. Scenario: You’re using React Server Components, so you can query the DB in a...
  9. Problem: You want to find copy/pasted code
  10. Early in my career, when someone would interrupt me while coding, it would...
  11. Wanna speed up your TypeScript builds and improve your IDE's TypeScript...
  12. Accessibility mistake: Putting an aria-label on a non-interactive element
  13. Problem: You want type-safe mock responses
  14. You don’t need a service provider to do feature flags
  15. Just finished the book “What’s Our Problem” by @waitbutwhy
  16. Scenario: You're mocking HTTP calls in automated tests
  17. Problem: You want to access some React state outside of React, in plain JS/TS
  18. So much needless UI complexity stems from REST APIs that do these two...
  19. A common coding mistake: Inconsistent terms
  20. A key debugging skill: Decomposition
  21. A surprising thing about owning a Tesla: Nearly everything is automated
  22. An epidemic problem in software: Teams with missing skill sets
  23. A recipe for fast, reliable end-to-end tests (no mocks): 1
  24. Situation: A React component with 5 useEffect calls has a bug
  25. Folder pattern I’m enjoying: “Local” shared directories
  26. In TypeScript, declaring types saves me more time than it costs me: ✅Speeds...
  27. Problem: If an endpoint returns JSON with properties I don't expect, I want...
  28. Disabled input fields aren't a loading strategy
  29. Problem: Ideally, everyone is responsible for quality
  30. “Deploy daily.” It’s a wonderful goal
  31. Rule for choosing between a URL path and search param: Search params are...
  32. If the team is ignoring PRs that’s a management problem
  33. "We don't do code reviews
  34. How I get my PRs merged fast: 1
  35. Some developers, when presented with a new library, immediately say “We need...
  36. I often see aria-labels that look like an id: 🚩...
  37. React habit: Avoid putting things that only need to render once in a component
  38. Just noticed another benefit of using Zod: It draws attention to bad...
  39. Problem: For accessibility and SEO, each page should have an H1 tag
  40. I believe the pendulum shift back to server-rendering will help many teams...

March 2024

  1. There are infinite ways to write software poorly
  2. When I was a manager, some people came to me with problems
  3. When testing for expected strings, I typically assert explicit strings, not...
  4. General HTML rule: “disabled” optimizes for DX
  5. Many UI teams are making a fundamental mistake: They’re not using mocks...
  6. Sometimes, an Array.find is a sign of sloppy code
  7. Problem: You’re using msw (@ApiMocking) to mock out HTTP calls during...
  8. I rarely experience performance problems in React
  9. Early in my career I struggled with communication
  10. A developer's job in one word: communication
  11. Rule: If it's worth checking, it's worth automating
  12. A weird mistake one of my clients is making: If an invalid/inaccessible URL...
  13. "E2E tests are flaky" Yep, often true
  14. Common scenario: Separate backend and UI teams are building a web app together
  15. A developer shouldn't merely do what they're told
  16. I love how React hooks let me create a well-named, encapsulated, reusable logic
  17. Rule: A failing automated check should break the build
  18. Problem: You want to copy a JavaScript array but use a different value for...
  19. A few years ago I was excited about the idea of visual regression testing
  20. Problem: You’re testing via @testling_lib, and you want to debug what you’re...
  21. I test web apps via 3 types of tests: 1
  22. Using Prettier and ESLint
  23. Two web app testing approaches: 1
  24. I typically configure @playwrightweb to run end-to-end (E2E) and mocked...
  25. Two ways to write software: 1
  26. Problem: There are many React state libraries, so it’s hard to choose...
  27. Using TypeScript
  28. My programming style: Mostly simple pure functions, named clearly
  29. Warning: ⚠️ If you’re: 1
  30. Why I don’t use test IDs: Adding test IDs all over my markup is a bad DX
  31. In TypeScript, I’ve found throwing a runtime error is often a sign of poorly...
  32. In React, needless complexity and repeated null checks can often be...
  33. Problem: You want to query your DB via TypeScript
  34. A simple wording pattern to avoid defensiveness in code reviews: Avoid: "You...
  35. One of the most rewarding things about doing code reviews: Seeing people...
  36. When is a TypeScript union type impractical
  37. Problem: aria-labels are often implemented poorly
  38. React has over a dozen popular third-party state libraries
  39. Habit: If a function accepts two arguments of the same type, I accept an object

February 2024

  1. The longer I work in software the more enjoyable my work is
  2. I'm recommend using JSDoc comments above each property
  3. Seriously, I think @kentcdodds deserves the developer equivalent of the...
  4. Sometimes, we all have to cut corners
  5. I'm hesitant to click approve on a PR that feels highly complex
  6. "I'll add tests in a separate PR"
  7. I often see filter calls that needlessly fall back to an empty array
  8. Not trying to put Ryan on blast (I like Ryan, and Remix and React Router are...
  9. ⚠️ A tooltip on a disabled button isn’t accessible
  10. Problem: Disabled fields and buttons aren’t accessible or discoverable
  11. Developers are liars
  12. TypeScript rule: If a function requires something, the function's type...
  13. With TypeScript, I feel comfortable making big changes that would have...
  14. I'm getting tempted to use ESLint to warn on usage of useEffect
  15. I review a LOT of React code every day
  16. The risk with mocked tests: The test may not test anything
  17. General rule: The fewer mocks a test has, the more confidence the test provides
  18. Top 10 React state libraries, sorted by downloads: 1
  19. Four interesting points about React Server Components: 1
  20. I'm really enjoying the Apple Studio monitor
  21. Some of my clients try to "hide" primary keys in the UI
  22. When I see a type assertion like this in TypeScript: fish as Fish I read it...
  23. React mistake: Adding specific logic into a reusable component
  24. React-query problem: I fetched a list and I want to avoid needlessly...
  25. Just ran no-type-assertion/no-type-assertion on a large TypeScript codebase
  26. This is extremely useful, but most teams still aren’t doing it: Preview...
  27. A common case of needless state: Dialog visibility
  28. I avoid boolean function arguments
  29. Today I thought “I can do this change in one big PR
  30. Needless complexity: Using multiple terms to describe the same concept
  31. Security is important
  32. Before creating a custom hook, I search the web
  33. It blows my mind that companies expect developers to work on slow virtual...
  34. GitHub CoPilot + TypeScript is an awesome combo
  35. Doing a code review without running the code is like doing a quality check...
  36. Zod is great, but it’s for *runtime* validation
  37. Yesterday, I suggested naming functions passed to useEffect
  38. Problem: React's useEffect only specifies when code should run
  39. It's surprising how often I see pull requests with these 2 attributes: 1
  40. A giant pull request is typically a mistake
  41. Using TypeScript
  42. There are lots of ways to draw lines between junior and senior developers
  43. "Every time you remove duplication, you add coupling." - @ardalis So before...

January 2024

  1. DRY = Don’t repeat yourself
  2. “React has become complicated.” Don’t like RSC
  3. TypeScript Problem: I need a specific property, but I don’t know the exact type
  4. Me, reviewing a PR: Why are doing this weird thing
  5. Problem: I accidentally closed a tab or a file
  6. I’m not strict about types because I enjoy being strict
  7. Problem: Your code base probably contains a lot of copy/pasted code, but...
  8. Two Related Problems: 1
  9. I’ve been working in TypeScript for years and I think I’ve used “ts-ignore”...
  10. JavaScript habit: I prefer to use a "point-free" style
  11. When coding, I have at least 4 audiences: 1
  12. React’s context works great for global state that changes rarely
  13. I like RSC
  14. One of my favorite React Hook Form features: I can use a Zod schema to...
  15. For years, I’ve said “You don’t need a React form library
  16. In one of my first dev jobs, I supported activating new cell phones at...
  17. Imagine you’re building a React app
  18. How I start a new React app in 2024: Traditional SPA: Vite, Typescript,...
  19. Here's what makes @tan_stack Router special: It's the first React router...
  20. I've taught teams React with React Router for years
  21. Some developers are better than others
  22. 4 attributes of scary code: 🚩 Feels needlessly complex 🚩 Unclear intent 🚩...
  23. Naming matters
  24. Problem: In TypeScript, developers often declare needless conditionals
  25. It's fascinating how many people either love or hate this take
  26. Order isn’t natural
  27. 3 ways to share code in React: Problem: Two components have different logic,...
  28. Problem: Using a laptop on a flight is cramped and the screen is too low
  29. Nested ternaries aren’t good or bad
  30. “It's already bad, so who cares." Teams don't say this out loud, but it...
  31. Problem: Cache invalidation is hard
  32. In JavaScript, a pure function relies only on args
  33. Ways I share data between React components: I prefer: ✅ Read/write to the...
  34. Theory: We know pair programming is effective
  35. Problem: You want to know how much of your TypeScript code is type safe
  36. In TypeScript, I often prefer to use a Record over a switch statement
  37. Five terms I avoid when naming things: 1
  38. I rarely use plain “any” in TypeScript

2023 484

December 2023

  1. I run every PR as part of my code review
  2. Needless React props = needless complexity
  3. Choosing a dynamic language over a statically typed language is like...
  4. Problem: VSCode uses its built-in TypeScript version by default
  5. I spent more time with @tan_stack Router 1.0 on a long flight today
  6. Just tried @tan_stack Router 1.0
  7. For me, coding in the early 2000’s was terrifying
  8. I worried an EV would give me range anxiety
  9. A home needs housekeeping or it slowly becomes a mess
  10. Problem: We need to upgrade an npm package
  11. Some people hate nested ternaries
  12. TypeScript Problem: I want a string literal union type, but I also want to...
  13. This is what it looks like to colocate related code
  14. Problem: Code reviews delay feedback
  15. It's shocking how often teams "lie" to TypeScript
  16. Wow, I just watched @BHolmesDev implement React Server Components from...
  17. Just bought the Apple 5K Studio display The good: ✅Super bright ✅Gorgeous...
  18. A recipe for tech debt: 1
  19. Problem: Optional fields are overused in TypeScript
  20. Problem: We need to replace an old feature with a similar new feature
  21. Problem: URL search params are evaluated at runtime
  22. I work with many teams who use different languages and repos for their web...
  23. CSS Grid is powerful, but I honestly don't use it often because I'm more...
  24. In TypeScript, the narrower the type, the more safety and clarity we have
  25. When React launched in 2013, every component was a class
  26. Problem: JavaScript’s .sort mutates the array
  27. I like how React hooks centralize and encapsulate a chunk of reusable logic
  28. I often see HTTP requests that forget to do one or more of these: ✅ Show...
  29. Problem: We need to fix a production bug, but the development branch...
  30. Import paths tell a story
  31. ⚛️4 questions I ask before using useState: 1
  32. Problem: You need to switch your app’s CSS to Tailwind
  33. Code review principle: If the check can be automated, it should be automated
  34. Claim: “I need a barrel to specify the feature’s public API.” Reality: There...
  35. PSA 📢: Avoid Barrels (A barrel is a file that exports code from other...
  36. Problem: Our code has old patterns that we don’t want people to copy

November 2023

  1. Coding is writing
  2. Problem: We need to rename a DB column, but we want to avoid a breaking change
  3. Problem: End-to-end tests are often slow and brittle
  4. Simple rule: The more effort I put in, the more results I get out
  5. Making fundamental changes on a development team is hard
  6. Quick story about my lucky Thanksgiving this year
  7. I love the simplicity of React's reuse model
  8. Confession: I’ve been writing software for over 20 years, but I often learn...
  9. Problem: You want to create a reusable React dialog that manages its own...
  10. Problem: If a user experiences a client-side JavaScript error, does your...
  11. Why I don’t do TDD often: TDD commits me to an API before I know what API I want
  12. In a code review, what's an example of a "nitpick"
  13. A minor tweak I enjoy: I put the scripts section near the top of package.json
  14. Downward spiral: 1
  15. I've worked with teams that were scarred by their previous automated testing...
  16. I’ve found React.memo usage should be rare
  17. Problem: If your React app uses providers, you may have to repeat their...
  18. How I use React query: 1
  19. I've finally realized why it's hard for me to get into watching pro sports:...
  20. I often group related props into an object
  21. GitHub CoPilot saves expensive developer time by purchasing cheap AI time
  22. “I don’t have time to exercise” is counter-productive
  23. When working in @tan_stack React query, I use setQueryData instead of...
  24. React in 2023 is like the Honda Accord
  25. This talk is excellent
  26. Tests are useful, but they’re not automatically a win
  27. 3 parties that should have design input: 1
  28. Here’s why React Server Components (RSC) are a big performance win: 1
  29. Why I'm excited about React Server Components (RSC): 1
  30. The key difference between @nextjs and @remix_run: Next is a React framework
  31. A recipe for frustrating developers: 🚫 Require a slow VPN or slow remote...
  32. "This is a good suggestion, but it's outside the scope of this PR

October 2023

  1. I’m reviewing a plain JS code base
  2. I just read this variable name in a code review:...
  3. Common React mistake: Buried default 🚫 Don’t bury the default inside the...
  4. I work with multiple companies every week
  5. Locality of Behavior (LOB) Principle: The behaviour of a unit of code should...
  6. So many bad takes on this photo
  7. Problem: It’s easy to accidentally name a boolean in a way that makes it...
  8. The smaller the PR, the faster it gets merged
  9. Just learned about AutoAnimate
  10. Just presented “Creating Reusable Components…That Are Actually Reusable” at...
  11. Habit: When someone provides a detailed and helpful explanation in a pull...
  12. A simple sign that a web app isn't using URLs effectively: Tickets can't...
  13. It’s common to store the active tab like this: activeTabIndex = 0; But this...
  14. Avoid a single meeting on a problem
  15. Poll: Which boolean variable name do you prefer
  16. Problem: If a function accepts multiple parameters of the same type, we may...
  17. Can someone show me a an HTML form that uses the browser’s native validation...
  18. You’d be shocked how complex a web form can be
  19. How a developer shows empathy: Have a sense of urgency in reviewing pull...
  20. One of the hardest parts of being a developer is picking my battles
  21. One of the most satisfying discoveries as a React dev: Needless prop drilling
  22. Problem: Sometimes people export internals merely to support unit testing
  23. When I see an optional React component prop in a code review, I dig deeper: 1
  24. I love cars and I love driving
  25. Wow, this was more lopsided than I expected
  26. Just used the new "Presenter Overlay" feature on MacOS Sonoma to create a...
  27. Atomic design is great
  28. Problem: I use "test.only" to run a single test quickly
  29. Problem: Your project may be using deprecated features
  30. Concern: “Code reviews slow us down”
  31. Another reason it's important to write tests: locale
  32. In React, I group related state into one useState
  33. I’m reviewing a JavaScript code base with JS Doc comments like this above...
  34. Problem: When a user clicks a button the response may be slow
  35. I'm a big believer in code reviews
  36. One of my favorite things about owning a Tesla: The phone integration
  37. Hot take: 🌶️ If I need data “power tools” like Lodash, Underscore, Ramda,...
  38. The 5 keys to successful software: 1
  39. Some things that can’t be fully tested via automation
  40. Just audited a codebase with a REST API that returns this: { table1: []...
  41. A common mistake: "Let's abstract this in case we want to replace it later."...
  42. I'm auditing an app that's using Tailwind...with CSS modules
  43. Simple JS developer productivity tip: Fail npm start if the expected port...

September 2023

  1. Just reviewed a web page making 55 fetch calls totaling 570k of JSON
  2. Often a useEffect can be replaced by calling code when an event occurs
  3. Two related software development skills: 1
  4. React performance in one tweet: Declare state as local as possible
  5. I rarely need to do React performance optimizations
  6. Many programming practices have a sweet spot
  7. Problem: You want to easily update outdated npm packages
  8. Problem: You want to assure your web app isn’t logging messages to the...
  9. Just hit 100k followers 🤯 Here are 10 things Twitter taught me about...
  10. In late 2022, I joined a struggling team as a part-time consultant
  11. Pair programming is great
  12. ⚛️React performance tip: If your default state is expensive, put it in a...
  13. My M1 laptop is silent
  14. 📢 If you hate writing software, you may just be in the wrong role
  15. Pair programming doesn’t typically replace code reviews for one simple...
  16. CSS Modules and CSS-in-JS encourage me to think selfishly
  17. “We don’t need to do code reviews
  18. "I don't need to run the PR
  19. Problem: Disabled buttons hurt accessibility and usability
  20. Naming rule: Case acronyms as words
  21. A test naming strategy I enjoy: 1
  22. An EV is the ultimate mobile office
  23. AI coding tools like Copilot make suggestions based on what code is in the repo
  24. Two thoughts on accessibility: 1
  25. Mistake: Displaying UI features that don’t work
  26. Problem: TypeScript can't validate runtime data
  27. A common programming mistake: Forgetting to start with a verb
  28. TypeScript is a set-based language
  29. Yet another reason I run PRs as part of code reviews: I just ran a PR with...
  30. Avoid disabling from submit buttons
  31. Problem: You need to represent an empty number
  32. Bun is exciting
  33. Software developers are writers
  34. Problem: I'm working in an app that uses both Redux and React Query
  35. The Node cjs to esm transition is a mess
  36. Bun 1.0 is here and it’s shockingly compelling
  37. I just removed tests, types, linting, code reviews, and CI from my project
  38. Why is this post is getting so much buzz
  39. I understand why some teams use plain JavaScript
  40. “We don’t need types
  41. My talk "Creating Reusable Components...That Are Actually Reusable" from...
  42. Problem: The REST API I’m calling is a mess
  43. I’ve used a treadmill under my standing desk for the last 8 years
  44. I’m helping a team create their first automated tests
  45. Here’s a novel reason to write automated end-to-end tests: It motivates...
  46. Problem: You want to link to a page and highlight specific text
  47. I occasionally see companies create reusable component libraries that make...
  48. I've found it's important to run PRs so I can review the user experience
  49. Imagine your CI build took only 5 seconds

August 2023

  1. Me: "If it doesn't improve the user experience, it doesn't matter." Dev:...
  2. Problem: aria-labels are often overly broad
  3. I’m helping a team add end-to-end tests to an existing app
  4. If you work in TypeScript, this style guide by @mkosir_ is a wonderful resource
  5. Many companies are unwilling to spend a little extra money to make CI faster
  6. Some people “overdo” their job
  7. When working in TypeScript, I think in sets
  8. A common TypeScript mistake: Needless optional fields
  9. Electrician installed the Tesla wall connector today on a 60 amp breaker
  10. I just built a product catalog app with @nextjs new app folder
  11. If I were a dev manager again, here's a stat I'd track: PR comment/approval...
  12. Sometimes a simple REST API change can significantly simplify the UI
  13. 4 software delivery metrics worth tracking: 1
  14. One of my clients just did a demo of http://builder.io
  15. Okay, this is wild
  16. A problem I'm seeing on @nextjs: Sometimes I save changes, but I still see...
  17. I've been using @nextjs 13, the app folder, and React Server Components a...
  18. Some programmers are code-first
  19. Types vs tests is a false dichotomy
  20. I ❤️ pnpm
  21. Poll: Imagine your team has to build a project with either types or tests
  22. Here are the slides for "Creating Reusable Components...That Are Actually...
  23. I thought that lounge access was silly
  24. One of the most common reusable component mistakes I see: They're not...
  25. Storybook is nice, but it can be tricky to fully emulate my app's...
  26. Problem: 🚫 Your project has unused files
  27. My rule for creating reusable components: Honor HTML
  28. The most effective way to quickly learn a new tech: 1
  29. People keep talking about shadcn/ui, so I just created some reusable React...
  30. Many companies create reusable components
  31. My mindset: “I should be able to merge my work daily.” This encourages me to...
  32. Each year, I work with a few teams that are basically doing the same thing:...
  33. Problem: You’re building a big feature that will require weeks of work
  34. A pattern I've noticed: A designer ships great work, gets bored, and moves on
  35. A messy coding environment is like a messy kitchen
  36. Global state isn’t “bad”
  37. Building a web app and need global state
  38. Global variables in disguise: React Context Redux React-query Apollo Jotai...
  39. Creating components is easy
  40. The most common mistake I see with feature flags is having too many
  41. Problem: “We can’t release daily
  42. Warning: If you hire people whose job is basically "lead meetings" you may...
  43. Want to do Continuous integration (CI) and Continuous Delivery (CD)

July 2023

  1. ⚠️ Watch out: Environments encourage behaviors
  2. Problem: When a user shares or bookmarks a URL, the page doesn't show what...
  3. Problem: You want to display a dialog
  4. Things I rarely use: 🚫 Currying 🚫 Middleware 🚫 Inheritance 🚫...
  5. Some developers claim to be “over-employed” (working multiple full-time...
  6. A common TypeScript mistake I see in React code reviews: Needless useState...
  7. The most common way I see agile fail: 1
  8. Old habit: I added useful explanations in my GitHub pull requests to help...
  9. Habit: I often centralize API urls in a single file
  10. 9 ways to resolve "It works on my machine": 1
  11. Me: This PR fails on my machine
  12. Short-term thinking: We don't have time to write tests
  13. Problem: I need to fix a bug
  14. A recipe for massive technical debt: 📉 🚫 Throw a large number of...
  15. Two mistakes I see often: 1
  16. I frequently audit JavaScript projects for companies
  17. Habit: Before I make a PR comment, I ask “Could this check be automated?”...
  18. Every software shop wants to say “we’re agile”
  19. Problem: You need to apply a key to a React fragment
  20. Company: "We're agile." 5 minutes later
  21. Concern: “Asking for feedback makes me look weak or incompetent.” Reality:...
  22. Perhaps the most common mistake in software: Waiting too long before getting...
  23. Every abstraction has a cost
  24. Problem: You want to support internationalization
  25. Problem: Mock datasets tend to be bloated, unreliable, and repetitive
  26. I believe one of the most valuable things we can do in code reviews is...
  27. Anyone know of an ESLint rule that enforces naming React state properly
  28. “I don’t need Tailwind
  29. Software development is intimidating because there is no "arrival"
  30. Using "!" in TypeScript is often a hack that reduces type safety
  31. Software development is an interest of mine
  32. I thought TypeScript was a waste of time
  33. A lead who understands and is responsible for the entire system is critical
  34. “Move fast and break things.” This can be a useful mantra early in a...
  35. Good programming advice can be taken too far: DRY - “I don’t repeat...
  36. A common mistake: “I don’t like that person, so I won’t agree with anything...
  37. You don’t need to get rich to radically change your life
  38. When I’m stuck on a hard programming problem the most ineffective thing I...
  39. Confession: Years ago, my life was dominated by fear

June 2023

  1. Refactoring is rarely “necessary” or “urgent”
  2. Problem: TypeScript and ESLint display errors using a red underline, so you...
  3. I strive to use consistent names when passing React props
  4. The cascade in CSS is like inheritance in Object-Oriented programming
  5. If your frontend approach doesn’t offer a way to abstract repeated HTML,...
  6. Three misconceptions I’ve noticed among people who don’t “get” Tailwind: 1
  7. The longer I work in TypeScript, the more this is clear to me: When building...
  8. React performance problems are rare
  9. Code reviews are a powerful way to improve code quality
  10. Limiting work-in-progress is useful
  11. "Storing your unit test and the file under test in separate folders is like...
  12. Microservices provide more team autonomy than Microfrontends
  13. Just presented “React: The Most Common Mistakes in 2023” at @kc_dc
  14. I’m helping a company build a VERY big React app by composing many separate...
  15. I try to avoid introducing global state as long as I can
  16. React mistake: Declaring state too high
  17. Problem: Your web app is too big for one team to build
  18. 6 months ago, I started consulting a team with 1,300+ "any" in their TypeScript
  19. I used to think every pull request (PR) needed to be "perfect"
  20. Yesterday, one of my clients had a problem
  21. Problem: When you deploy a new version of your SPA, users with a tab open...
  22. Problem: When you deploy a new version of your SPA, users with a tab open...
  23. ⚛️ React Tip: Don't nest React component declarations
  24. Mindset that motivates me to go to the gym daily: Going to the gym is a...
  25. Goal: Allow the user to select items in a list
  26. TypeScript mistake: Needless “defensive” coding
  27. data is rarely the right variable name
  28. Problem: If we allow ESLint warnings, the number of warnings will grow over time
  29. Problem: Git pre-commit hooks are slow, which is annoying when I commit...
  30. I’ve worked on teams with high quality, reliable, comprehensive tests
  31. Just learned about Million, a new alternative React virtual DOM
  32. Problem: Sometimes people disable an ESLint rule, then forget to remove the...
  33. The URL is often underused in web apps
  34. A bug I see in nearly every web app: If someone saves a stale record, it...
  35. A weird misuse of React’s context I just found: 1
  36. Problem: Meetings are often needless, slow, expensive, and hard to schedule
  37. Problem: In React Query, a mutation often needs access to the query's key so...
  38. Reviewing code is one of the most rewarding things I do
  39. Poll: Which code do you prefer for returning totals
  40. Just refactored a React component
  41. Problem: Sometimes I make unrelated changes when working on a feature
  42. If useEffect is the answer, I'm probably asking the wrong question
  43. A well-designed REST API doesn't merely expose each DB table
  44. How I define a unit test: An automated test that tests 1 function or...
  45. I joined a struggling team in January

May 2023

  1. Problem: TypeScript optional fields reduce type safety
  2. A single monorepo for an entire company rarely makes sense
  3. Comprehensive test coverage is great
  4. Some developers love consistency too much
  5. The less experience a developer has, the harder their job is (because they...
  6. As, a consultant, I’ve learned PRs are the most effective way to create...
  7. When I audit a project, I clean up first
  8. A new reason I’m a fan of Tailwind: It’s AI friendly
  9. Web app testing tip: 1
  10. 6 signs a dev team is out of control: 1
  11. One of the hard parts of leaving a software development project: I can't see...
  12. TypeScript is the biggest improvement to my web dev experience in the last 5...
  13. Situation: Multiple teams are collaborating to create a single, big React app
  14. When you’re building a dialog, ask this: “Should users be able to share a...
  15. React: The Most Common Mistakes in 2023 I'm presenting this talk at @kc_dc...
  16. Problem: A page has multiple dialogs, but only one dialog should be...
  17. Had a lot of fun this week teaching React with TypeScript, React Query, Mock...
  18. I prefer: ✅ Static types over dynamic types ✅ Functional programming over...
  19. In JavaScript, I export on the same line as the declaration
  20. Problem: Dead code
  21. Here's the difference between amateurs and pros: My friend is a wood worker
  22. The big risk of using global state managers: Some teams think "Let's put all...
  23. A test doesn't just make sure it works
  24. React tip: Components designed for a single use should have only required props
  25. How to write reliable end-to-end tests: 1
  26. Two related signs of a mature dev team: 1
  27. Problem: JavaScript's sort method mutates the existing array
  28. A recipe for creating a TypeScript codebase that’s hard to maintain:...
  29. Another reason to avoid prefixing TypeScript interfaces with "I": It can...
  30. Many companies create needless overhead and complexity by batching deployments
  31. Technologies foster mindsets
  32. React performance tip: You probably don't need to optimize React's...
  33. React performance technique: Split a big component if some state is only...
  34. There are many ways to write unreliable software
  35. Avoid centralizing TypeScript types
  36. Before I quit my job, I did a “safe” trial run: I asked my boss for 90 days...
  37. Just got access to the GitHub Copilot Chat beta
  38. If a function accepts a boolean, consider declaring two separate functions
  39. TypeScript tip: Avoid specifying a type inside map
  40. As a React developer: If I'm copy/pasting JSX, I should probably create a...
  41. “This code seems needless, but surely it’s here for a reason
  42. I review TypeScript code daily
  43. TypeScript tip: Avoid prefixing interfaces with "I"
  44. I've seen well-functioning teams suddenly struggle just because an *extra*...

April 2023

  1. Problem: You want to reset React state when a component’s props change
  2. All developer productivity stats are flawed, and can be gamed
  3. I use @playwrightweb or @Cypress_io to write 2 types of tests: 1
  4. Measuring developer productivity with 100% accuracy is impossible
  5. Hard truth: Some devs are WAY more productive
  6. If you’ve only worked with React, Vue, Angular, etc, you might think every...
  7. Why I’m so excited about React’s server components: I can do full stack...
  8. I knew time zones were complex
  9. Problem: If you rename a file by only changing its casing, Git won't “see”...
  10. As a developer, I know I’m not a designer
  11. React tip: Avoid extracting event handlers to separate functions if they're...
  12. Why I review PR's in my IDE: It’s easier to see if files are in the right spot
  13. Challenge: Can you think of a single decision in software that has no tradeoffs
  14. Problem: If a function accepts two arguments of the same type, people may...
  15. Problem: You want to ensure environment variables are declared and...
  16. If I’m coding alone, I may skip writing tests if the project is small enough...
  17. I find GitHub CoPilot more useful for programming tasks than ChatGPT
  18. I've been coding for 20+ years
  19. Problem: You want to run multiple npm scripts at the same time
  20. Problem: A component is hard to test because it displays many different...
  21. Why I prefer const: It encourages a single, immutable declaration
  22. 10 technologies I use with nearly every React app: 1
  23. Problem: Your dev team makes spelling mistakes in code
  24. Is there an ESLint rule to warn when a "bad" variable name is used
  25. In React components, I group related items and declare things in a...
  26. Situation: You have two projects, a UI and a REST API
  27. I’m loving Playwright’s new UI mode: npx playwright test --ui It opens a UI...
  28. React-query tip: You probably don’t need initialData or presetData
  29. Problem: Your team is using VS Code, and you want to make it easy for all...
  30. Problem: With react-query, we may declare inconsistent query keys
  31. A sign you may benefit from useReducer: You're making multiple setState...
  32. Problem: A long ternary is hard to read
  33. I taught a team React this week
  34. 10 JavaScript/TypeScript features I avoid:
  35. 5 years ago, I had a full time job
  36. My new favorite VS Code extension: GitHub Pull Requests and Issues
  37. GitHub code review tip: In diff view, there’s a copy path button next to...
  38. A common mistake: Partially implementing many features
  39. Continuous integration (CI) is a spectrum
  40. Continuous integration: ✅ No PRs ✅ No branches ✅ No gating code reviews ✅...

March 2023

  1. TypeScript tip: If a type is only used by one file, colocate the type with...
  2. Problem: You want to start a new ticket, but you’re waiting for a related PR...
  3. Independence is wonderful
  4. Problem: A ticket is too big
  5. Claim: “We need sprints to break work down and hit deadlines.” Reality: We...
  6. Problem: TypeScript only exists at compile-time
  7. Problem: Feature flags are handy, but it’s easy to forget to remove them later
  8. Good news: You can deep clone objects in the browser via structuredClone
  9. Problem: You're doing a code review and have a suggested change that's hard...
  10. Around 2005, I had a job where I was paid well to do nearly nothing
  11. “I once attended a planning meeting in which it was discussed for 20 minutes...
  12. I recently joined a struggling team for part-time consulting
  13. TypeScript tip: Try to avoid optional fields
  14. Tip: Clone your repo multiple times
  15. I typically run the app when reviewing a PR
  16. TypeScript misconception: “If I need to rename a union type, the usages...
  17. Generally, prefer TypeScript union types over enums
  18. Problem: Sometimes functions are needlessly marked async
  19. Using "any" in a TypeScript library is occasionally necessary
  20. React tip: Tired of manually wrapping React components just so you can add...
  21. "I’ve been employed in tech for years, but I’ve almost never worked"
  22. Avoid Sprints
  23. Claim: “Employment is safer than independence.” Reality: A job isn’t safer
  24. A common mistake in React: Mixing fetching, formatting, logic, and JSX
  25. I quit my job a few years ago so I could be an independent consultant
  26. Problem: localStorage isn’t strongly typed
  27. Tip: Avoid AWS CodeCommit
  28. Problem: Sometimes devs accidentally reorder imports while coding
  29. Problem: A function is confusing, but you need to enhance it to support a...
  30. Problem: If you lazy load routes, React Router's loaders won't run until...
  31. Problem: You have TypeScript types, but want to use Zod too (for *runtime*...
  32. You don’t need an architect
  33. You don’t need a daily standup
  34. Avoid Sprints
  35. Problem: Sometimes people use needless curly braces around static values
  36. Some teams struggle because there’s too much friction in making improvements
  37. React-query tip: You don't have to mess with error handling on each query
  38. If managers fixate on deadlines rather than quality, the staff will too
  39. Problem: You need to make a breaking change, but can’t update all call sites...
  40. I'm working with a SPA that has a dedicated backend composed of over a dozen...
  41. To me, TypeScript is easily the most attractive language for implementing...
  42. Just learned about transform tools
  43. Problem: You’re testing in Playwright, and using Mock Service Worker (msw)...
  44. Tweet 1632038534935707648
  45. Problem: You’re using TypeScript and you don’t want to manually define types...
  46. The world is filled with code that barely works: 🚩Slow 🚩Insecure...
  47. Habit: I talk to myself while coding
  48. I've been asked to fix a broken page, inherited from an outside dev team
  49. JS arrow functions are great

February 2023

  1. If coding is hard, we're probably trying to move to fast
  2. In databases, normalization is important
  3. The problem with a team of only junior developers: Anti-patterns proliferate
  4. Habit for creating smaller PRs, sooner: Suffix branch names with "phase-x"...
  5. Automate checks that can be automated
  6. TypeScript tip: Use “never” to assure every case in a switch is handled
  7. Idea: Open a software development agency with one simple premise: “Our...
  8. Wow, just upgraded to the iPhone 14 Pro and the 120hz screen is wonderful
  9. Problem: If an app makes multiple GraphQL calls on the same page, all the...
  10. TypeScript tip: Variable names and type names should typically correspond
  11. React tip: Keep state as "low" as possible
  12. // TODO: Thing we’ll never get around to doing
  13. Trunk based development can accelerate velocity and reduce overhead
  14. The REAL reason manual testing doesn't scale: When people quit, domain...
  15. Security misconception: “We can’t put a primary key in the URL because a...
  16. Habit: When I open a PR, I review the diff myself first
  17. Tip: When naming a variable that stores a list, avoid needless suffixes
  18. Concern: Isn't deploying multiple times a day risky
  19. General rule: The fewer environments a web app has, the better
  20. Software death spiral: “We don’t have automated tests, so we need many...
  21. Just switched a large project from create-react-app to Vite
  22. Claim: "Pair programming replaces code reviews" Are you willing to drive...
  23. Tailwind tradeoffs in one tweet: Are you willing to: Learn some class names...
  24. A developer who immediately approves PRs is a liability
  25. When I teach teams React, I teach WAY more than just React: Debugging...
  26. Pre-commit hook used well: ✅ Fast ✅ Focused (Lint changed files, auto-fix) ✅...
  27. Problem: You want to assure your unit test doesn't produce console errors
  28. A key dev team role: Architect
  29. Today I woke up in Germany
  30. As an “old” developer, I’m driven by two conflicting ideas: 1
  31. Wow, just found Deno Lint, a Rust-based alternative to ESLint

January 2023

  1. Goal: Wrap React Router's Route component so I can avoid having to wrap 50+...
  2. The closer developers are to end users, the better
  3. Problem: You need to deep clone a JavaScript object
  4. Branches should ideally have a short lifetime, less than a day
  5. Unsurprisingly true: Having automated tests primarily created and maintained...
  6. I've spent the last week in the UK
  7. Ideally, onboarding a new developer on a JS project requires only 2...
  8. An epidemic problem in software development: Resume driven development
  9. One of the most wonderful benefits of public speaking: It raises the bar for...
  10. A surprising irony about working in TypeScript: The better I get at it, the...
  11. Code review habit: If a simple change is necessary, I just change it
  12. In code reviews, I’m far more impressed with surprising simplicity than...
  13. 15 reasons I enjoy @tailwindcss: 1
  14. Problem: Tailwind styles get long sometimes
  15. The big idea of BDD/Cucumber tests: “Write tests in plain English so...
  16. Concern: “Infinite scroll is bad because the user can’t ever access the...
  17. React Router 6.4 introduced loaders
  18. ⚛️ React code smell: Multiple setState calls in a row
  19. Monorepos are great…to a point
  20. Employers shooting themselves in the foot: “We don’t allow using GitHub...
  21. I don't write unit tests much anymore
  22. Pre-commit hooks are a waste of time
  23. Just switched a project from plain fetch to ky
  24. A common mistake: Types with many optional properties
  25. Problem: TypeScript errors are typed "unknown"
  26. Problem: A PR is too big and contains unrelated changes
  27. A common software development mistake: Going too wide or too narrow
  28. Tip: Don't lie to TypeScript
  29. Sometimes, a performance problem is actually a design problem
  30. Problem: You want to send messages between tabs, frames, iframes, or windows
  31. Client-side security boils down to one simple rule: Never trust the client
  32. Problem: "Our code isn't testable"
  33. A simple, but often overlooked benefit of using the URL for state: It avoids...

2022 291

December 2022

  1. Vercel converted the BBC site to @nextjs
  2. Problem: You want to re-throw a JavaScript error to provide a friendlier error
  3. 13 ways to be a lousy developer: - Don't volunteer to help others
  4. Common software dev mistakes are at the extremes: 1
  5. Tip: Store sharable state in the URL
  6. On some teams, writing good code feels like swimming upstream
  7. Problem: Your page has many DOM elements, and you want it to render faster
  8. How many records can you sort/filter/paginate in a web browser
  9. Using Cypress, but wanna try Playwright
  10. 5 types of tests: 1
  11. A unit test shouldn’t: 🚫 Call a DB 🚫 Run a browser 🚫 Make an HTTP call 🚫...
  12. Writing code involves countless architectural decisions
  13. Tip: npm scripts can reference env vars as variables: "start": "node...
  14. Wow, just asked ChatGPT to convert some old Enzyme tests to use @TestingLib...
  15. A sad irony: Some software projects fail simply because the team tried to...
  16. Console noise is a problem
  17. Problem: Changing code temporarily to support local development
  18. Claim: “React Server Components (RSC) are just PHP”
  19. ⚛️ 10 ways to fetch data in React: Next 13: React server component Next 12:...
  20. What’s a big pain point for you as a React developer
  21. Prefer SPA: Internal app Behind a login Flakey internet Heavily interactive...
  22. Server-rendering React is becoming popular
  23. Okay, @ApiMocking has become a fundamental part of my dev and testing workflow
  24. JavaScript tip: You might not need an if statement or a ternary
  25. Problem: Using an open source component library often leads to bloat and...
  26. I thought I knew Flexbox well, but I learned a few new tricks in this...
  27. 1992: Get answers in books 2002: Get answers on forums 2012: Get answers on...
  28. Problem: package.json doesn’t support comments
  29. Coding in 2002: The more effective you are at written communication, the...
  30. Modern JavaScript has over 50 operators
  31. Just learned JavaScript has logical OR assignment and logical AND assignment
  32. This resonates
  33. ⚛️ My React component unit testing strategy: Test each prop
  34. This isn’t error handling: .catch((error) => { console.log(error); });...
  35. ⚛️ 3 keys to fast React app tests: 1
  36. Yesterday I shared why I'm switching from Cypress to Playwright

November 2022

  1. I’m a big Cypress fan, so I’m shocked to say this: I just switched to...
  2. Just learned a new JavaScript array method: findLast It returns the last...
  3. I think the term "prop drilling" encourages React developers to overuse...
  4. Problem: JavaScript’s Date is lousy
  5. I just radically simplified a fetch call
  6. TypeScript tip: Many optional properties are a code smell
  7. 4 ways to handle multiple promises in #JavaScript How I choose: 1
  8. Just learned you can use underscores as separators in JavaScript numbers
  9. I just cleaned up a JS project
  10. ESLint should report *ZERO* warnings or errors on CI
  11. I have a wonderful wife and 3 healthy, amazing kids
  12. A wasteful pattern: APIs that return PascalCase JSON
  13. How to write unreadable code: Put all code in one giant function
  14. Had a wonderful time in LA this week training a team on modern React
  15. Problem: In React, it's often tricky to hunt down the component that's...
  16. I prefer building REST APIs in TypeScript
  17. Tip: Avoid explicit booleans
  18. TypeScript poll: Which approach to declaring React prop types do you prefer
  19. Common mistake: Moving to the next feature before truly finishing the...
  20. I believe in comprehensive code coverage
  21. My 3 step bug fix process: 1
  22. I’ve found it’s typically worthwhile to mock API’s for front end development
  23. How to ship a feature faster: Skip tests
  24. “We don’t do code reviews
  25. Healthy team habit: Create Architectural Decision Records (ADR) ADRs...
  26. Poll: Do you believe it’s important to validate fetch call response shapes...
  27. My definition of a TypeScript-friendly library: I don’t have to “opt-in” to...
  28. I'm trying to use @playwrightweb instead of Cypress
  29. TypeScript decision: How should a function that calls fetch be typed
  30. Claim: "I don't have time to write tests or types"
  31. Problem: A TypeScript codebase with "any" everywhere
  32. TypeScript tip: It's often helpful to access a union type at runtime
  33. My favorite thing about file-based routing: The folder structure corresponds...
  34. React should deprecate class components
  35. Yet another reason to convert your old React class components to functions:...
  36. Server rendering JS is suddenly popular
  37. Why render React Server Components
  38. I just created my first React Server Component with @nextjs 13

October 2022

  1. ⚛️10 reasons to prefer useReducer over useState: 1
  2. TypeScript tip: Sometimes a type's name conflicts with an existing identifier
  3. React in 2014: ✅Make SPAs
  4. This 7 second video from @kentcdodds may be the single most compelling sales...
  5. ⚛️ React tip: If state values are related, and must be kept in sync, create...
  6. Naming tip: "data" is rarely a good variable name
  7. A simple ruleset for handling React state: 1
  8. TypeScript tip: When migrating a web app to TypeScript, strongly type HTTP...
  9. Situation: Your team’s codebase contains an anti-pattern
  10. useCallback is often the result of a needless useEffect
  11. 4 React anti-patterns: 1
  12. Performance jargon: LCP: Largest Contentful Paint - How long it takes for...
  13. A messy codebase contains countless examples that shouldn't be copied
  14. React is usually plenty fast by default
  15. There are good reasons to create a folder
  16. React state tip: Group related state into a single useState call (via an object)
  17. In a monorepo
  18. Two places I see useEffect overuse today: 1
  19. Prediction: React's upcoming `use` hook will be overused, just like...
  20. I finally bought a Thunderbolt 4 dock
  21. React’s “use” hook in 1 tweet: Works like “await”
  22. Hiring a company to do software development is risky
  23. Naming is hard
  24. TypeScript tip: Avoid making a property optional when the property isn’t...
  25. Compiling #TypeScript is slow
  26. I’m really enjoying @turborepo
  27. One of my favorite VS Code plugins: Code spell checker
  28. I'm reviewing a React codebase that uses Redux to cache HTTP responses
  29. Code smell: Frequently checking for null/undefined
  30. TypeScript tip: Prefer type declarations to type assertions
  31. 5 ways to unit test a React component today: 1
  32. TypeScript tip: Read “extends” as "equals", “assignable to”, or “subset of”
  33. Problem: When using a third party component library, it's common to set the...
  34. React tip: Group related props
  35. Code coverage can lie
  36. React tip: Avoid using useEffect to sync state
  37. Types are tests with better ergonomics
  38. Problem: How do I find unused packages in package.json

September 2022

  1. Tailwind feels as logical as Prettier
  2. My React folder pattern: 1
  3. I've been working in React for nearly a decade
  4. Tip: Using TypeScript in VS Code
  5. I’m creating a new course
  6. Just converted a test suite from Jest to Vitest
  7. React: The Good Parts™ Core API: 1
  8. This TypeScript story sounds familiar
  9. How I test a pull request for "Robustness": I enter malformed data
  10. It’s easy to overlook issues in code reviews
  11. Wow, these GitHub Copilot stats are pretty compelling
  12. When I work in dynamic languages, I feel more stressed
  13. Tech moves fast
  14. The larger the dev team, the more important it is to have: ✅ Static types ✅...
  15. Zod question: How do you keep Zod and TypeScript in sync
  16. I just did the Zod tutorial by @mattpocockuk Wow, this is so well done
  17. In TypeScript, "any" is occasionally necessary when building reusable libraries
  18. I work with around 25 companies every year
  19. Situation: You have a big list of icons or images
  20. I hoped Web Components would take off
  21. Prefer async/await over promises or callbacks
  22. Tech I’ve learned in 2022: 1
  23. Four TypesScript code smells: 1
  24. I ❤️ React
  25. I ❤️ GitHub actions
  26. What 20’s me wanted: Stuff
  27. Years ago, I was a senior developer
  28. How I learned #TypeScript: 1
  29. Really impressed with React Router 6.4

August 2022

  1. My take on global state in React: 1
  2. Tired of writing JavaScript sort functions from scratch
  3. TypeScript tip: Consider generating types
  4. In TypeScript, you can create a custom function to check an object's type
  5. Reusable component design tip: Extend the native root element's type, and...
  6. Just learned about localforage - An npm package that makes it easy to store...
  7. Reusable component design tip: Make impossible states impossible
  8. Reusable component design tip: Honor the native HTML element's API
  9. 13 Reasons Software Development is a Unique, Amazing Career
  10. Sometimes, it's handy to render specific content in @nextjs on the server or...
  11. The React ecosystem: Dozens of state management libraries Dozens of mature...
  12. 2022 Frontend security in 1 tweet: 1
  13. Imagine a skill that empowers you to build anything you can imagine, all by...
  14. One of the most common causes of needless complexity that I see in code:...
  15. I’m creating a library for developers
  16. The larger a codebase is, the harder it is to make big changes
  17. Question: What’s the most efficient way to store JSON in the URL’s query string
  18. This is a great error message
  19. Developer productivity requires balancing two competing desires: 1
  20. I’ve spent the few weeks building a custom React devTool library
  21. Scenario: You need to store a nested JavaScript object in the URL's querystring

July 2022

  1. Software development estimates are frequently *way* off
  2. I'm enjoying working with @tailwindcss
  3. I typically bill hourly
  4. React devs are in a wonderful spot today
  5. Woah, I just learned that tsconfig.json allows comments
  6. create-react-app remains popular
  7. Bun is a big, risky bet
  8. React state management approaches have evolved a lot over the years
  9. As a JavaScript developer in 2022, I have analysis paralysis
  10. Bun isn’t merely exciting
  11. The longer I’ve been coding the more I realize: If I’m doing something...
  12. A lesson I've learned the hard way countless times: Keep changes as small as...
  13. I don’t set goals
  14. Okay, Bun looks🔥
  15. I admire that the React team is focusing on performance
  16. The smaller the dev team, the higher the output per developer

June 2022

  1. The JavaScript ecosystem is huge
  2. Microfrontends require balancing user experience (UX) with developer...
  3. Even after 20+ years of coding, I often make rookie mistakes
  4. Critique: “Remix looks like PHP”
  5. On big, fast moving teams, merge conflicts can burn a lot of time
  6. This diagram showcases what makes @remix_run special: Dataflows include the...
  7. It's live
  8. 🚨 Web developers 🚨 and are often misused
  9. Anti-pattern: Needlessly reading the URL
  10. Accessibility / UX tip: Avoid disabling buttons
  11. Developer experience (DX) matters
  12. I rarely memoize in React
  13. Great suggestion in the new React docs: Worried about the performance impact...
  14. Here are 7 ways to create a React app in 2022
  15. It's wonderful to see standards emerging for non-browser JavaScript runtimes
  16. Today I'm thinking about the tradeoffs inherent in choosing a full-featured...
  17. 2 situations to consider web components: 1
  18. Attack: “I can’t believe React doesn’t have data fetching and routing...
  19. My decision tree: Using @remix_run
  20. 🚨 React developers: 🚨 You don’t have to fetch data via useEffect
  21. Next.js supports 4 rendering approaches
  22. Solid tip
  23. SSR with React is easy with Next or Remix
  24. You probably know :hover, :focus, and :active pseudo-classes
  25. Wow, just found this huge list of free public APIs
  26. Impression: React is getting more complex
  27. Everyone is talking about server-side rendering
  28. useEffect is a last resort

May 2022

  1. Problem: Fetching in useEffect means React components render, then fetch
  2. Problem: If the user navigates away before a fetch completes, it creates a...
  3. I just read the “Web Forms” module on MDN
  4. New hosting trend: JavaScript containers 7 reasons hosts are embracing JS...
  5. Problem: People forget to write tests
  6. Tweet 1529437325792628736
  7. Why I enjoy React: I can use the parts I like, and replace the rest
  8. Tired of getting "could not resolve" errors when running npm install
  9. Problem: The React docs encourage declaring anonymous functions in useEffect
  10. Picking between px and em/rem in CSS has always confused me
  11. Here's a React hook that checks if the user's device has a rear facing camera
  12. Accessibility tip: Wrapping related form elements in a fieldset improves...
  13. I ❤️ Next and Remix
  14. PSA: React “concurrent mode” doesn’t exist
  15. Modern browsers support built-in form validation
  16. Problem: With controlled React forms, every keystroke causes the form to...
  17. Just learned about http://a11ysupport.io
  18. I’m a @Cypress_io fan
  19. Developer experience (DX) metrics: 1
  20. Common scenario: A team has two types of tests: 1
  21. React hooks tip: Prefer primitives in dependency arrays
  22. Wow - I just converted a React component library build process from Rollup...
  23. You probably don’t need CSS media queries anymore
  24. I'm a @remix_run fan
  25. 🚨 I'm writing a new course
  26. 4 options for rendering in @nextjs: 1
  27. I just learned there is a 28,000 km (17k miles) long stretch of fibre-optic...

April 2022

  1. I enjoyed this "TypeScript tips and tricks" episode with @mpocock1
  2. Lerna is unmaintained
  3. CSS Viewport height is complicated
  4. Are you unfamiliar with Edge hosting
  5. Wow, TIL why Edge servers use V8 instead of Node
  6. Many teams say "accessibility is important", but don't actually test...
  7. 3 ways to split a dev team that is too big: 1
  8. Woah, just installed Fig
  9. This CSS reset by @JoshWComeau contains a lot of thoughtful little tricks
  10. I work with dozens of teams every year

March 2022

  1. Pairing vs code reviews is often debated
  2. Just learned CSS has 5 "Layout modes": 1
  3. 20 reasons to consider @nextjs over create-react-app: 1
  4. 3 ways to scale a frontend across teams: 1
  5. My take on micro-frontends: I think it’s important to standardize on one UI...
  6. 5 reasons reusable components are harder to write than app code: 1
  7. Using Storybook
  8. Component design trick: When creating a component, I try to design the...
  9. An untrusted developer is a net loss
  10. Stop disabling copy/paste
  11. 3 technologies that are “better” than React: 1
  12. For years, I’ve been creating custom mock APIs for each app
  13. Writing tests first (TDD) is a tradeoff
  14. VS Code tip: If you're on a project with a lot of files named index, you can...
  15. Why I avoid naming files "index": 1
  16. A map object is often an elegant alternative to switch statements and...
  17. Just used esbuild-runner to speed up an app’s npm scripts, written in TypeScript

February 2022

  1. 5 key developer skills: 1
  2. Just learned about the void operator in #JavaScript
  3. Just learned about Ky, an elegant alternative to fetch or Axios
  4. Which initialization pattern do you typically prefer
  5. I don't generate mock data
  6. Habit: When declaring REST API response types via #TypeScript, I only...
  7. I often implement React components via 6 files: 1
  8. In theory, it would be nice to write JavaScript web apps that don't need to...
  9. Here's an interesting browser state solution: A database, written in JS,...
  10. 8 ways to potentially speed up JavaScript project builds: Build tools: 1
  11. An interesting new collaborative software architecture: local-first...
  12. #TypeScript type narrowing: Use a truthy condition to remove null/undefined...
  13. How I use #TypeScript with #Node today: 1

January 2022

  1. New React 18 APIs: createRoot - replaces render startTransition - for low...
  2. I believe in storing developer-oriented docs in the repo
  3. I just created a custom Link component
  4. Why software development is so satisfying: We accelerate slow processes
  5. A little code review habit I appreciate: When my teammates make a minor...
  6. Why I use a backend for frontend (BFF) for most SPAs I build: ✅ Better security
  7. Just published
  8. Just learned about devcontainers
  9. Rapid development checklist: Clear requirements Small tickets Mock APIs CI...
  10. When I started programming, I feared I could never remember it all
  11. 10 reusable component mistakes: 1
  12. To me, the best thing money can buy is freedom
  13. TIL this is valid #JavaScript: onClick?.(); I'm familiar with optional...
  14. Four frontend trends I'm seeing in 2022: 1
  15. 3 dev team tasks, ordered by priority: 1
  16. Has anyone created a comparison of @nextjs be @remix_run yet
  17. 10 reasons I recently switched an app from create-react-app to @vercel...
  18. Just switched an app from create-react-app to @vercel Next.js

← 2012–2021