Every project falls somewhere on a spectrum between extremes of short-term, get-it-done-ism and eternal, future-proofed longevity. Unfortunately, while you may have a ballpark sense for where a project fits on this spectrum at the outset, each user story needs its own consideration. Working out the right tradeoffs for each of these stories is the project.
On a current project, we wanted to hoist page state out of a useReducer hook into a query string of the URL. We saw this as a continual need for the project going forward, so we wanted a convenient way to build new pages that stored their state in the URL’s query string. To do […]
For the last few years, we’ve been using a universal TypeScript platform including TypeScript, GraphQL, React, and Express. Having TypeScript on both the client and the server (including command-line utilities and background worker processes) has transformed how we go about ensuring the quality of the software we build. When compared to other stacks we’ve used, […]
Early in my career, I prided myself on my technical skill. I was pretty fast at writing pretty good code. I conceived more efficient algorithms more quickly than many of my peers. I took creative approaches to expressing ideas in code that were at least interesting, if (with the benefit of hindsight) not necessarily as […]
Your backlog is an imperfect, always changing, self-fulfilling prophecy for how your software will be built. Not only that, but at a software consultancy like Atomic, it’s also a prophecy for how the engagement will end and deliver on your brand promise. All this to say: Tending to the backlog is one of the most […]
I'm super excited to be giving a talk about TypeScript at Strange Loop this year! The talk, “Understanding TypeScript's Structural Type System,” covers some of the deeper and most exciting ideas at the heart of TypeScript's namesake feature. You can get an overview from the slides. (I'll post a link to the video once it's […]
Successful product delivery requires us to navigate overlapping, competing concerns across a broad spectrum of execution dimensions, all tied together via our tech lead role. This role is complex and multifaceted, requiring the people who hold it to balance a variety of needs and interests.
If you’re like me, you always learn something new on a project, but it’s usually incidental. Your focus is on writing code, and the learning just kind of… happens. I’m here to tell you that you’re wasting a great opportunity. Your colleagues have a lot to teach you—and a lot to learn from you. A […]
One super common problem on TypeScript projects is figuring out how to validate data from external sources and tie that validated data to TypeScript types. In these situations, you generally have a few options: Define types and validations separately, and type them together with Type Guards. Use an internal DSL such as io-ts to build […]
After launching a new Node.js app we built as part of a recent redesign for a high-volume site, we found some performance problems occurring every five minutes: