Articles
Long-form writing about engineering, web performance, and the things I've learned along the way.
34 articles publishedSeries
Core Web Vitals in 2026
View Series →Developing Scalable React Applications
View Series →Web Accessibility: A Developer's Guide
View Series →Guide to Improving Page Performance in 2026
View Series →Practical Progressive Web Apps
View Series →Structured Data for Developers: A Complete Guide
View Series →The Ultimate SEO Guide for Developers, Designers and everyone else!
View Series →Production-Ready TypeScript: A Complete Guide
View Series →
Core Web Vitals and SEO: What They Influence, and What They Don't
A calmer look at page experience signals, field data, and where performance actually changes outcomes
A practical, source-backed guide to how Core Web Vitals relate to SEO. Learn what Google actually says, where CWV matter in practice, and how to prioritize performance work without overclaiming ranking impact.
Continue Reading →
Microdata vs JSON-LD vs RDFa: Which Structured Data Format to Use in 2026
Compare Microdata, JSON-LD, and RDFa structured data formats. Learn when Google recommends JSON-LD, when Microdata still fits, and how to choose based on maintainability instead of ranking myths.
Microdata vs JSON-LD vs RDFa: Which Structured Data Format to Use in 2026
Compare Microdata, JSON-LD, and RDFa structured data formats. Learn when Google recommends JSON-LD, when Microdata still fits, and how to choose based on maintainability instead of ranking myths.

Core Web Vitals in 2026: Optimization Strategies & Quick Wins
A triage-first guide to the fastest Core Web Vitals fixes that often move LCP, INP, and CLS in production. Start with the obvious wins, then hand stubborn issues off to deeper troubleshooting.
Core Web Vitals in 2026: Optimization Strategies & Quick Wins
A triage-first guide to the fastest Core Web Vitals fixes that often move LCP, INP, and CLS in production. Start with the obvious wins, then hand stubborn issues off to deeper troubleshooting.

Core Web Vitals in 2026: Understanding LCP, INP & CLS
The complete 2026 guide to Core Web Vitals — what LCP, INP, and CLS actually measure, updated thresholds, how to test them properly, and why your Lighthouse scores don't match real-world data.
Core Web Vitals in 2026: Understanding LCP, INP & CLS
The complete 2026 guide to Core Web Vitals — what LCP, INP, and CLS actually measure, updated thresholds, how to test them properly, and why your Lighthouse scores don't match real-world data.

Automated Performance Testing: Lighthouse CI, GitHub Actions & Real User Monitoring
Set up automated web performance testing with Lighthouse CI and GitHub Actions. Learn to configure performance budgets, run Lighthouse in CI/CD, and collect Real User Monitoring data for Core Web Vitals.
Automated Performance Testing: Lighthouse CI, GitHub Actions & Real User Monitoring
Set up automated web performance testing with Lighthouse CI and GitHub Actions. Learn to configure performance budgets, run Lighthouse in CI/CD, and collect Real User Monitoring data for Core Web Vitals.

Modern Redux with Redux Toolkit & RTK Query in 2026
Complete 2026 guide to Redux Toolkit and RTK Query with TypeScript. Learn createSlice, createAsyncThunk, automatic caching, and tag-based invalidation — from setup to production patterns.
Modern Redux with Redux Toolkit & RTK Query in 2026
Complete 2026 guide to Redux Toolkit and RTK Query with TypeScript. Learn createSlice, createAsyncThunk, automatic caching, and tag-based invalidation — from setup to production patterns.

Rebuilding My Site with Astro, Tailwind CSS & Content Collections
Why I ditched Gatsby for Astro — and how I rebuilt my site with Tailwind CSS, Content Collections, and MDX. Includes migration steps, performance benchmarks, and lessons learned.
Rebuilding My Site with Astro, Tailwind CSS & Content Collections
Why I ditched Gatsby for Astro — and how I rebuilt my site with Tailwind CSS, Content Collections, and MDX. Includes migration steps, performance benchmarks, and lessons learned.

Lessons from Photography: Parallels Between Framing Shots and Solving Engineering Problems
Exploring my thoughts on how photography principles like composition, lighting, and creativity can enhance problem-solving and innovation as an engineer.
Lessons from Photography: Parallels Between Framing Shots and Solving Engineering Problems
Exploring my thoughts on how photography principles like composition, lighting, and creativity can enhance problem-solving and innovation as an engineer.

Advanced Core Web Vitals: LCP, INP, CDN & Real User Monitoring
A follow-on guide for when the obvious Core Web Vitals fixes are done. Covers fetchpriority, yielding long tasks, CDN and cache review, and field monitoring without treating any one tactic as a silver bullet.
Advanced Core Web Vitals: LCP, INP, CDN & Real User Monitoring
A follow-on guide for when the obvious Core Web Vitals fixes are done. Covers fetchpriority, yielding long tasks, CDN and cache review, and field monitoring without treating any one tactic as a silver bullet.

Automated Accessibility Testing with axe-core, Playwright & GitHub Actions
Set up automated accessibility regression checks in CI/CD with axe-core, Playwright, and GitHub Actions. Catch common issues before production, then pair automation with manual testing where tools stop.
Automated Accessibility Testing with axe-core, Playwright & GitHub Actions
Set up automated accessibility regression checks in CI/CD with axe-core, Playwright, and GitHub Actions. Catch common issues before production, then pair automation with manual testing where tools stop.

Creating Accessible Web Forms
Learn to build accessible web forms with this developer's guide. Covers WCAG 2.2, ARIA roles, semantic HTML, keyboard navigation, and error handling to create inclusive, compliant user experiences.
Creating Accessible Web Forms
Learn to build accessible web forms with this developer's guide. Covers WCAG 2.2, ARIA roles, semantic HTML, keyboard navigation, and error handling to create inclusive, compliant user experiences.

Web Accessibility Guide: ARIA Roles, Keyboard Navigation & Color Contrast
Practical web accessibility guide for developers covering semantic HTML, keyboard support, focus management, color contrast, and when ARIA is actually necessary. Updated for WCAG 2.2.
Web Accessibility Guide: ARIA Roles, Keyboard Navigation & Color Contrast
Practical web accessibility guide for developers covering semantic HTML, keyboard support, focus management, color contrast, and when ARIA is actually necessary. Updated for WCAG 2.2.

Automating Frontend Workflows with custom webhooks in GitHub Actions
Master GitHub Actions automation for frontend projects. Learn to set up CI/CD pipelines with custom webhooks for automatic deployments of Astro, React, and static sites when content changes.
Automating Frontend Workflows with custom webhooks in GitHub Actions
Master GitHub Actions automation for frontend projects. Learn to set up CI/CD pipelines with custom webhooks for automatic deployments of Astro, React, and static sites when content changes.

Image Optimization for the Modern Web
Cut image load times by 50%+ with responsive srcset/sizes, automatic WebP and AVIF conversion, smart lazy loading, and CI pipeline automation. Step-by-step guide with code examples.
Image Optimization for the Modern Web
Cut image load times by 50%+ with responsive srcset/sizes, automatic WebP and AVIF conversion, smart lazy loading, and CI pipeline automation. Step-by-step guide with code examples.

Core Web Vitals: Real-World Optimization Strategies
Optimize Core Web Vitals for better SEO and UX. Practical strategies for LCP, INP, and CLS with code examples and real-world implementation tips.
Core Web Vitals: Real-World Optimization Strategies
Optimize Core Web Vitals for better SEO and UX. Practical strategies for LCP, INP, and CLS with code examples and real-world implementation tips.

Advanced PWA Guide: Offline Caching, Push Notifications & Background Sync
Build production-ready offline PWAs from scratch. Covers cache-first and network-first strategies, IndexedDB offline queues, Background Sync API, and Web Push with VAPID keys — with working code.
Advanced PWA Guide: Offline Caching, Push Notifications & Background Sync
Build production-ready offline PWAs from scratch. Covers cache-first and network-first strategies, IndexedDB offline queues, Background Sync API, and Web Push with VAPID keys — with working code.

Link Juice & SEO: Complete Guide to Nofollow, Noreferrer & Link Equity
Complete guide to link juice optimization, nofollow attributes, and link equity strategies. Learn internal linking best practices, external link management, and SEO techniques to boost page authority and rankings.
Link Juice & SEO: Complete Guide to Nofollow, Noreferrer & Link Equity
Complete guide to link juice optimization, nofollow attributes, and link equity strategies. Learn internal linking best practices, external link management, and SEO techniques to boost page authority and rankings.

JSON-LD Implementation Guide: Placement, Validation & Keeping Markup in Sync
A developer-focused JSON-LD implementation guide covering placement, validation, multiple blocks vs @graph, and how to keep structured data aligned with visible content.
JSON-LD Implementation Guide: Placement, Validation & Keeping Markup in Sync
A developer-focused JSON-LD implementation guide covering placement, validation, multiple blocks vs @graph, and how to keep structured data aligned with visible content.

Microformats and Microdata: What They Are, Where They Still Fit, and Where They Don't
Understand the difference between Microformats and Microdata, where each still fits, and why most new Google-focused structured data work starts with JSON-LD instead.
Microformats and Microdata: What They Are, Where They Still Fit, and Where They Don't
Understand the difference between Microformats and Microdata, where each still fits, and why most new Google-focused structured data work starts with JSON-LD instead.

Ultimate SEO Checklist for Web Developers: Complete Guide
Complete SEO checklist for web developers covering technical optimizations, metadata, structured data, and performance. A practical developer's guide to making pages easier for search engines and users to understand.
Ultimate SEO Checklist for Web Developers: Complete Guide
Complete SEO checklist for web developers covering technical optimizations, metadata, structured data, and performance. A practical developer's guide to making pages easier for search engines and users to understand.

Will Artificial Intelligence fully replace Web Developers?
In today's digital age, businesses increasingly use AI-powered solutions to boost efficiency and cut costs. However, when it comes to web development, there is no substitute for human expertise.
Will Artificial Intelligence fully replace Web Developers?
In today's digital age, businesses increasingly use AI-powered solutions to boost efficiency and cut costs. However, when it comes to web development, there is no substitute for human expertise.

Grays and Whites: Embracing Life's Ambiguities
An exploration of how we define and label the ambiguous aspects of our lives, particularly career choices, and why sometimes embracing the undefined is more valuable than rigid categorization.
Grays and Whites: Embracing Life's Ambiguities
An exploration of how we define and label the ambiguous aspects of our lives, particularly career choices, and why sometimes embracing the undefined is more valuable than rigid categorization.

TypeScript Declaration Merging & Module Augmentation: Extend Any Library's Types
Extend third-party library types without forking. Complete guide to TypeScript declaration merging, module augmentation, ambient declarations, and .d.ts files — with real examples.
TypeScript Declaration Merging & Module Augmentation: Extend Any Library's Types
Extend third-party library types without forking. Complete guide to TypeScript declaration merging, module augmentation, ambient declarations, and .d.ts files — with real examples.

TypeScript Type Guards & Narrowing: Discriminated Unions, Predicates & typeof
How to use TypeScript type guards for runtime type safety. Covers discriminated unions, custom type predicates, typeof, instanceof, and control flow narrowing — with practical examples.
TypeScript Type Guards & Narrowing: Discriminated Unions, Predicates & typeof
How to use TypeScript type guards for runtime type safety. Covers discriminated unions, custom type predicates, typeof, instanceof, and control flow narrowing — with practical examples.

Trains and the Buddhist Principle of Impermanence
Exploring how train journeys reflect the Buddhist concept of impermanence, teaching us to cherish moments and embrace life's transitory nature.
Trains and the Buddhist Principle of Impermanence
Exploring how train journeys reflect the Buddhist concept of impermanence, teaching us to cherish moments and embrace life's transitory nature.

TypeScript Strict Mode: Best Practices for Production Code
Complete guide to TypeScript strict mode and compiler options. Learn how to configure strictNullChecks, strictPropertyInitialization, noImplicitAny, and other settings for bulletproof production code.
TypeScript Strict Mode: Best Practices for Production Code
Complete guide to TypeScript strict mode and compiler options. Learn how to configure strictNullChecks, strictPropertyInitialization, noImplicitAny, and other settings for bulletproof production code.

TypeScript Utility Types: Generics, Conditionals & Mapped Types (2026)
Master TypeScript utility types with practical, copy-paste examples. Covers Partial, Pick, Omit, Record, mapped types, conditional types, and template literal types — with real-world patterns you'll actually use in production.
TypeScript Utility Types: Generics, Conditionals & Mapped Types (2026)
Master TypeScript utility types with practical, copy-paste examples. Covers Partial, Pick, Omit, Record, mapped types, conditional types, and template literal types — with real-world patterns you'll actually use in production.

Programmatic Lighthouse Audits with Mocha, Chai & Chrome Launcher
A code-first approach to automating Lighthouse audits with Mocha, Chai, and chrome-launcher. Still useful for custom setups, but Lighthouse CI is the better default for most new projects.
Programmatic Lighthouse Audits with Mocha, Chai & Chrome Launcher
A code-first approach to automating Lighthouse audits with Mocha, Chai, and chrome-launcher. Still useful for custom setups, but Lighthouse CI is the better default for most new projects.

React State Management Without Redux: useContext + useReducer Pattern
Learn to manage complex React application state without Redux using useContext and useReducer hooks. Create a scalable, Redux-like state management pattern with zero external dependencies.
React State Management Without Redux: useContext + useReducer Pattern
Learn to manage complex React application state without Redux using useContext and useReducer hooks. Create a scalable, Redux-like state management pattern with zero external dependencies.

Scalable React Architecture: Redux, Sagas & Services Pattern
Learn Redux architecture patterns for React applications. Complete guide to organizing Redux store, sagas, services, and selectors for enterprise projects.
Scalable React Architecture: Redux, Sagas & Services Pattern
Learn Redux architecture patterns for React applications. Complete guide to organizing Redux store, sagas, services, and selectors for enterprise projects.

Scalable React Architecture: Directory Structure Best Practices
Learn how to structure React applications with scalable, maintainable architecture. Practical directory organization patterns based on real-world experience.
Scalable React Architecture: Directory Structure Best Practices
Learn how to structure React applications with scalable, maintainable architecture. Practical directory organization patterns based on real-world experience.

How to Install Android Emulator for React Native Without Android Studio | Mac, Linux & Windows
Learn how to install and set up Android Emulator for React Native development on Mac, Linux, and Windows without Android Studio. This step-by-step command-line guide helps you create virtual devices with minimal system resources and zero bloatware.
How to Install Android Emulator for React Native Without Android Studio | Mac, Linux & Windows
Learn how to install and set up Android Emulator for React Native development on Mac, Linux, and Windows without Android Studio. This step-by-step command-line guide helps you create virtual devices with minimal system resources and zero bloatware.

React Native Data Encryption: Secure Redux Store Persistence
Complete guide to implementing encrypted data storage in React Native apps. Learn to secure Redux store persistence with redux-persist-transform-encrypt for bulletproof mobile app security and user privacy protection.
React Native Data Encryption: Secure Redux Store Persistence
Complete guide to implementing encrypted data storage in React Native apps. Learn to secure Redux store persistence with redux-persist-transform-encrypt for bulletproof mobile app security and user privacy protection.

Reduce React Native Android APK Size: Complete Optimization Guide
Comprehensive guide to reducing React Native Android app size by up to 50%. Learn ProGuard configuration, architecture-specific builds, and advanced optimization techniques for smaller, faster mobile apps.
Reduce React Native Android APK Size: Complete Optimization Guide
Comprehensive guide to reducing React Native Android app size by up to 50%. Learn ProGuard configuration, architecture-specific builds, and advanced optimization techniques for smaller, faster mobile apps.
No articles found with this tag.
Try another tag or browse all articles.