JimmyVanVeen.com

Outrunning the Bear: A Realistic Guide to Starting Your Web Development Career (September 4, 2025)

In the age of AI, developers don't need to outrun the bear (AI taking our jobs)—we just need to be harder to replace than others. While AI excels at writing code and debugging, it fails at navigating organizational dynamics, owning consequences, and understanding unwritten requirements. The developers who will thrive are those who master the "human layer"—leveraging AI as a tool while focusing on messy legacy systems, institutional knowledge, and unsexy but irreplaceable work like bug triage and team building. The key isn't coding better than AI, but providing value beyond writing functions: being accountable, bridging technical and non-technical worlds, and functioning effectively within an organization.

Don't Do Things The Hard Way, Just Do Hard Things: A Developer's Philosophy (March 25, 2025)

This blog post explores the crucial distinction for developers between "doing hard things" and "doing things the hard way." It argues for a pragmatic approach grounded in values, emphasizing that while tackling genuinely challenging problems is essential for growth and delivering value ("doing hard things"), there's no inherent virtue in choosing unnecessarily complex or difficult methods ("doing things the hard way"). Instead, developers should prioritize efficiency, leverage sensible shortcuts, and focus on user needs, strategically applying their efforts to solve real problems and build robust, user-centric software. The ultimate goal is to achieve meaningful outcomes and build resilience by tackling necessary complexities effectively, rather than creating artificial difficulty for its own sake.

Replacing TSDX with TSUP and TSC (February 15, 2023)

TSDX is a popular development tool that provides many useful features, including hot reloading, testing, and bundling. However, as of September 2021, the TSDX project is no longer being actively maintained, which means that users will not receive updates or bug fixes. As a result, it may be necessary to find alternatives for developing and building TypeScript libraries. In this blog post, we will cover how to replace TSDX with `tsc` for type definitions and `tsup` for code transpilation in TypeScript libraries.

Applying Types to createAsyncThunk (January 21, 2023)

This blog post explains how to apply types to the createAsyncThunk function from Redux Toolkit. It covers the understanding of the arguments that the function takes and creating types for the payload, meta, and error of the async thunk. By applying types to the `createAsyncThunk` function, it ensures type safety and better intellisense when working with async actions in your Redux store.

Conditional Prop Types (May 14, 2020)

In React, props are the lifeblood of an application. PropTypes are an industry standard way to enforce types within those props. What should you do when a given prop is required in order to use a sibling prop? Well, conditional Prop Types of course! I'll explain how I solved this problem at work in this blog post.