Skip to content
Blog

Web & Mobile Development Tutorials

Real-world lessons from building and shipping web and mobile apps.

·8 min

TypeScript Patterns I Actually Use in Production (Not the Fancy Stuff)

Most TypeScript tutorials teach fancy generics you never need. Here are the patterns I actually use: discriminated unions, branded types, narrowing, and exhaustive checks.

TypeScriptType SafetyWeb Development
·6 min

React Forms That Do Not Suck: React Hook Form Plus Zod Is the Stack I Use

Building React forms with useState is fine for two fields. It falls apart for real forms. React Hook Form + Zod is the stack I use for everything else.

ReactReact Hook FormZod
·7 min

It Is Time to Switch From Jest to Vitest, Here's Why and How

Jest has been the standard for a decade. Vitest is faster, has native ESM support, and integrates with Vite. Here's the migration I run on client projects.

VitestJestTesting
·8 min

Next.js App Router Streaming: Stop Blocking Your Page on Slow Queries

Most Next.js apps render everything or nothing. Slow database queries make the whole page wait. Streaming with Suspense changes that. Here's how to use it correctly.

Next.jsReactSuspense
·7 min

Your React Native App Bundle Is Too Big, Here's How to Shrink It

A 50MB React Native app is a problem. Users bounce, downloads drop, especially on mobile networks. Here's the bundle size audit I run on every client project.

React NativePerformanceBundle Size
·7 min

Expo Router Is File-Based Routing for React Native (And It's Finally Good)

React Navigation's imperative config is fine for simple apps. Expo Router brings Next.js-style file-based routing to React Native. Here's how to set it up and what to watch for.

ExpoReact NativeRouting
·7 min

SwiftUI List Performance: When Your Scrolling Stutters and How to Fix It

SwiftUI List looks like UIKit UITableView but performs differently. Lazy loading, identity, diffing, and view updates all matter. Here's how to keep your lists smooth.

SwiftUIiOSPerformance
·7 min

React Native Reanimated 3 Finally Makes Sense, Here's How to Use It

Reanimated 2 was powerful but confusing. Reanimated 3 with the new worklet syntax is the animation library React Native deserved. Here's the mental model and 4 patterns I actually use.

React NativeReanimatedAnimations
·9 min

Zero-Downtime Database Migrations: The Expand-and-Contract Pattern

Most teams run migrations that lock tables and take the app down for minutes. The expand-and-contract pattern makes them safe to run in production. Here's how it works.

PostgreSQLMigrationsBackend
·7 min

PostgreSQL Connection Pooling: Why Your API Falls Over at 100 Concurrent Users

Most Node.js apps open a new Postgres connection per request and wonder why the database refuses connections at scale. Here's how connection pooling actually works.

PostgreSQLNode.jsBackend
·8 min

Practical Web Accessibility: What to Actually Fix (and What to Ignore)

WCAG has 1,000 rules. 20 of them cover 80% of real issues. Here's the practical accessibility checklist I use for client projects, focused on impact over checkboxes.

AccessibilityWCAGWeb Development
·7 min

TanStack Query Is the Last State Library Your React App Needs

Most React apps use Redux or Zustand for state that is not actually state, it is cached server data. TanStack Query handles that better. Here's how to use it.

ReactTanStack QueryState Management
·7 min

Tailwind CSS v4 Migration: What Actually Breaks (and What Got Way Better)

Tailwind v4 is a rewrite, not an upgrade. The oxide engine is faster, the config is gone, and several v3 patterns stop working. Here's the migration guide I wish I had.

Tailwind CSSCSSWeb Development
·6 min

Next.js Server Actions Are Great (Until You Use Them Wrong)

Server Actions are not a replacement for API routes. They shine for form mutations but break down for webhooks, third-party callbacks, and public APIs. Here's when to use them.

Next.jsServer ActionsReact
·8 min

I Switched From React Native CLI to Expo EAS, Here's What Changed (and What Didn't)

Expo used to be the training wheels. After EAS Build, it's the fastest way to ship native React Native apps. Here's the workflow I use for client work in 2026.

React NativeExpoEAS
·8 min

React Native Deep Linking Done Right (Universal Links + App Links, No Edge Cases)

Deep links break in the weirdest ways: they open the wrong screen, lose the query params, or do nothing on cold start. Here's a setup that actually works.

React NativeDeep LinkingiOS
·7 min

Stop Writing Snapshot Tests in React Native, Write These Instead

Snapshot tests catch typos and miss every real bug. Here's the React Native testing strategy I use: behavioral tests, MSW for APIs, and zero snapshots.

React NativeTestingJest
·7 min

SwiftUI State Management Is Confusing Until You Learn These 4 Property Wrappers

@State, @Binding, @Environment, @Observable. Most SwiftUI code I review uses the wrong one. Here's the mental model that makes it click.

SwiftUISwiftiOS
·7 min

JWT vs Sessions vs OAuth in 2026, Pick the Right One

Auth advice on the internet is mostly cargo cult. "Use JWT" was the 2018 answer. The 2026 answer is "it depends, and probably not localStorage JWT." Here's the real framework.

AuthenticationJWTSessions
·7 min

PostgreSQL Indexes That Actually Speed Up Your Queries (Most Don't)

80% of indexes I see in production are useless or harmful. They're added when a query is slow, never validated, never measured. Here's how to do it right.

PostgreSQLDatabasePerformance
·6 min

Next.js Middleware for Auth, The Patterns That Actually Work

Next.js middleware is the worst-documented feature in the framework. Edge runtime limits, JWT verification gotchas, redirect loops. Here's the setup I ship.

Next.jsAuthenticationMiddleware
·6 min

Stop Using Context for Everything, When Zustand Wins in 2026

React Context is the default state tool for most teams. It's also the slowest for anything that updates often. Here's the actual decision framework.

ReactZustandState Management
·6 min

CORS, The Mental Model They Never Taught You

CORS is the most copy-pasted topic in web dev. Everyone adds Access-Control-Allow-Origin: * until it works. Here's what's actually happening under the hood.

CORSWeb DevSecurity
·6 min

Your React Native FlatList Is Janky (And Has Been Since Day One)

FlatList jank is the #1 complaint from RN teams. Most fix it wrong, wrapping rows in memo, bumping initialNumToRender. Here's what actually causes scroll jank.

React NativePerformanceMobile
·7 min

Next.js App Router Patterns That Actually Scale (After 3 Production Apps)

App Router shipped in 2023. Three years later, most teams still use it like Pages Router with extra folders. Here's what actually scales past the demo.

Next.jsReactApp Router
·8 min

Stop Re-rendering Everything: A Practical Guide to React Performance

Most React performance advice is wrong. useMemo and useCallback won't fix your app. Here's what actually causes re-renders, and what to do about them.

ReactPerformanceFrontend
·6 min

Offline-First React Native With WatermelonDB (The 2026 Setup)

AsyncStorage breaks past 100 records. Realm is heavy. WatermelonDB is the answer for serious offline-first React Native apps. Here's the actual setup.

React NativeWatermelonDBOffline-First
·11 min

Why Southeast Asia Is the Best Base for Freelance Developers (And It's Not Just About Cost)

Everyone says Bali. I chose the Philippines. Here's why Southeast Asia in general is unbeatable for freelance developers, beyond just the cheap rent.

Digital NomadFreelancingRemote Work
·6 min

Push Notifications in React Native, The 2026 Guide (Without the Docs Maze)

Push notifications are documented in 14 places across Expo, Firebase, and Apple. None of them tell you the actual flow. Here it is in one place.

React NativePush NotificationsExpo
·5 min

SwiftUI Animations That Don't Look Like PowerPoint

Default SwiftUI animations look like 2003 Keynote. .easeInOut everywhere, no springs, no choreography. Here's how to make them feel premium.

SwiftUIiOSAnimation
·11 min

How to Create a Fiverr Gig That Actually Gets Orders (Not Just Views)

Most Fiverr gigs get views but no orders. The problem isn't Fiverr's algorithm, it's your gig page. Here are the 5 elements of a gig that converts.

FreelancingFiverrCareer
·8 min

How to Optimize Images for Web Performance, The Complete Guide

Images account for 50%+ of a webpage's weight. Fix your images and your site loads 2x faster. Here's everything that actually matters.

PerformanceWeb DevSEO
·8 min

How to Secure Your Node.js API, JWT, Rate Limiting, and the Mistakes Everyone Makes

I audited a client's API and found their admin endpoint had no auth. They're not alone. Here are the 5 security must-haves every Node.js API needs.

SecurityNode.jsBackend
·9 min

How I Deploy Next.js Apps on Vercel, The Complete Setup (Domain, SSL, Analytics)

Deploying to Vercel takes 2 minutes. Setting it up properly takes 30. Here's the 30-minute version, custom domain, SSL, analytics, preview deploys, and rollback.

Next.jsVercelDeployment
·7 min

How to Write Clean Code That Other Developers Won't Hate You For

Clean code isn't about patterns or architecture. It's about the next person who reads it, usually you, 6 months later.

ProgrammingBest PracticesCareer
·7 min

Why Your Small Business Website Is Losing Customers (And How to Fix It)

Your website is your hardest-working salesperson. But most small business sites are actively driving customers away. Here are 5 mistakes costing you money.

Web DevelopmentBusinessLead Generation
·8 min

Firebase vs Supabase, Which Backend Should You Pick for Your Mobile App?

Firebase has been the default for years. Supabase is eating its lunch. Here's when to use each, from someone who's shipped apps on both.

MobileBackendFirebase
·6 min

Why Every Restaurant Needs a Website in 2026 (And Why Most Restaurant Sites Are Terrible)

70% of diners check a restaurant's website before visiting. Most restaurant sites look like they were built in 2005. Here's what yours actually needs.

Web DevelopmentBusinessRestaurants
·7 min

How to Get Your First 5-Star Review on Upwork (When Nobody Will Hire You Without One)

The Catch-22 of freelancing: you need reviews to get hired, but you need to get hired to get reviews. Here's how to break the cycle.

FreelancingUpworkCareer
·6 min

Wise vs Payoneer vs Revolut, Which Bank Should a Freelancer Use in 2026?

I get paid in USD, EUR, and PHP. Without the right bank setup, I'd lose 5-10% on every transfer. Here's what I actually use and why.

FreelancingFinanceDigital Nomad
·5 min

The Digital Nomad Developer's Toolkit, What I Actually Pack and Use

I've worked from coffee shops in Davao, beaches in Palawan, and airports in Bangkok. Here's what I actually need to run a freelance dev business from anywhere.

Digital NomadFreelancingProductivity
·5 min

How to Win on Upwork, The 3 Proposals That Actually Get Responses

I stopped writing long proposals. My response rate went from 10% to 50%. Here's exactly what I send, and why most proposals get ignored.

FreelancingUpworkCareer
·7 min

I Left Poland to Become a Digital Nomad in the Philippines, Here's What Actually Happened

Three years ago I was in Poland. Now I'm writing this from Davao City. The honest reality of being a freelance developer in Southeast Asia.

FreelancingDigital NomadCareer
·4 min

How Much Can a Freelance Developer Actually Earn? (Real Numbers)

LinkedIn says $200K. Reality is more nuanced. Here are real earning ranges for freelance developers, not the Instagram version.

FreelancingCareerPricing
·5 min

How to Get Your First Freelance Client as a Developer (With No Portfolio)

You don't need a fancy portfolio to land your first client. You need proof you can build. Here's the step-by-step that actually works.

FreelancingCareerBeginners
·4 min

Upwork vs Fiverr vs Freelancer.com, Where Should a New Developer Start?

I'm on both Upwork and Fiverr right now. Here's where the money actually is, which platform to start with, and what most freelancers do wrong.

FreelancingUpworkFiverr
·4 min

How to Convert Your Website into a Mobile App (Without Rebuilding Everything)

Yes, you can turn your existing website into a mobile app. Here are the three approaches, from quick and cheap to proper and polished.

Web DevMobileReact Native
·3 min

How Much Does It Cost to Build an App in 2026? A Developer's Honest Breakdown

Most cost estimates online are from agencies padding their quotes. Here's a transparent breakdown from a solo developer who actually ships.

FreelancingPricingMobile
·3 min

Which Programming Language Should You Learn First in 2026?

Everyone asks this. The answer depends on what you want to build, not what Twitter says. A practical guide from a working developer.

BeginnersProgrammingCareer
·3 min

Why Hiring a Solo Developer Beats an Agency for Most Projects

Agencies aren't bad, they're just overkill for 80% of projects. Here's why a solo developer is usually the better choice.

FreelancingSolo DeveloperStartups
·3 min

I Shipped 2 iOS Apps with SwiftUI, Here's What the Tutorials Don't Tell You

Real-world lessons from shipping SwiftUI apps to the App Store. The things that broke in production, review rejections, and the toolchain that actually works.

SwiftUIiOSSwift
·3 min

Building an E-Commerce Site with Next.js and Stripe, The Parts Nobody Covers

Stripe's docs are great. The edge cases that break your checkout flow? Not documented. Real lessons from building an online store.

Next.jsStripeE-Commerce
·3 min

How to Get Your App into the App Store and Google Play

A step-by-step guide from someone who's done it multiple times. Developer accounts, certificates, screenshots, review rejections, the whole process.

iOSAndroidApp Store
·3 min

React Native vs Flutter, What I Learned Shipping Apps in Both

I've shipped production apps in both frameworks. Here's my honest take on performance, developer experience, and when to pick each one.

React NativeFlutterMobile