Engineering notes

Blog Articles

Optimized browser interaction pipeline illustrating faster Interaction to Next PaintFrontend Development

Improve INP: Diagnose and Fix Slow Web Interactions

A practical workflow for measuring Interaction to Next Paint, finding the main-thread work behind sluggish clicks, and making web interfaces respond faster.

6 min read
Secure software pipeline exchanging a short-lived identity token for cloud deployment accessCloud & Infrastructure

Deploy to AWS with GitHub Actions OIDC, Not Keys

Deploy to AWS from GitHub Actions using OIDC and short-lived credentials, with a narrowly scoped trust policy, least privilege, protected environments, and safe verification.

6 min read
Automated scanner inspecting a web interface for accessibility and keyboard usabilityTesting & Quality

Accessibility Testing with Playwright and axe-core

Add practical accessibility checks to Playwright with axe-core, keyboard tests, useful CI reports, dynamic-state coverage, and a maintainable production workflow.

6 min read
Multi-stage software build producing a small locked production containerDevOps

Secure Node.js Docker Images with Multi-Stage Builds

Build smaller and safer Node.js Docker images with multi-stage builds, production-only dependencies, non-root execution, secret mounts, health checks, and runtime restrictions.

7 min read
Server-rendered web data flowing into a hydrated Nuxt-style frontend interfaceFrontend Development

Nuxt 4 Data Fetching: useFetch vs useAsyncData

Learn when to use useFetch, useAsyncData, $fetch, and lazy fetching in Nuxt 4, with SSR-safe patterns for APIs, caching, authentication, errors, and refreshes.

7 min read
Modular TypeScript monorepo packages connected through one shared workspaceSoftware Development

Build a TypeScript Monorepo with pnpm Workspaces

Build a scalable TypeScript monorepo with pnpm workspaces, project references, explicit package exports, filtered commands, and a reproducible CI workflow.

7 min read