Five Years of Full-Stack Development: What I'd Tell My Younger Self
From early career missteps to building enterprise systems — the lessons that took the longest to internalize.
All of my long-form thoughts on programming, leadership, product design, and more, collected in chronological order.
From early career missteps to building enterprise systems — the lessons that took the longest to internalize.
WASM has matured past the hype. Here are the specific use cases where it's genuinely the right tool.
A deep dive into a codebase I inherited — what the debt looked like, how we quantified it, and the refactor roadmap.
What I'm watching: edge-first architecture, AI-native apps, and whether the JavaScript ecosystem finally consolidates.
A reflection on how AI tooling, new frameworks, and shifting client expectations reshaped software engineering this year.
AI-assisted coding is changing how fast developers ramp up. How I've adapted my documentation and onboarding approach.
Switching from senior IC to founder means thinking differently about every technical decision. Here's what shifted.
Concrete techniques — list virtualization, navigation optimizations, JS thread offloading — that actually move the needle.
With Shopify Functions maturing, here's a decision framework for when to extend natively vs. build a full custom app.
An honest retrospective on using RSCs in a real enterprise app — the wins, the footguns, and the caching surprises.
Patterns I've repeated across multiple high-growth clients — from schema design to API contracts to team handoffs.
New frontier models ship with longer context, better code generation, and tool use improvements — practical implications for product builders.
After a year of agent frameworks (LangChain, AutoGPT, crew.ai), here's an honest assessment of what's production-ready.
At some scale, serverless platforms become a bottleneck. A practical look at when and how to make the move.
The JSI/Fabric/TurboModules new arch is now default in RN 0.74+. Here's what the upgrade actually looks like.
With tRPC, Prisma, and Zod maturing together, going all-in on TypeScript across the stack finally makes sense.
A personal audit of the tech choices made this year — what worked, what didn't, and what I'd do differently.
Next.js 15 shipped with breaking changes around caching and async APIs. Here's a migration rundown from the trenches.
Reflections on integrating AI (LLMs, embeddings, search) into real products — and where most teams go wrong.
With Zustand, Jotai, and React Query maturing, here's an honest breakdown of when to reach for what.
Hydrogen's evolution toward Remix-based architecture changes how enterprise Shopify stores should be built.
A practical look at end-to-end type safety, and when tRPC makes sense over a traditional REST API layer.
Apple's WWDC 2024 introduced on-device AI. A look at what this means for React Native and iOS-adjacent development.
With GPT-4o dropping in May 2024, here's how to think about integrating real-time AI into web and mobile products.
React 19 was announced with Server Actions, the new compiler, and the use() hook — here's what it means for your Next.js apps.
I've migrated three enterprise apps from Pages Router to App Router. The routing change is the easy part. The hard parts are caching behavior that will surprise you, subtle Server/Client component bugs, and convincing a team mid-sprint.
The architectural choices that seem fine on day one — navigation libraries, state shape, module structure — become load-bearing walls you can't move. Here's what I'd lock in early based on building apps that actually shipped.
Three years of building high-revenue Shopify stores taught me that the hard problems aren't technical — they're about API rate limits at 2am, metafield hell, and clients who want everything in one theme. The real lessons.