
Implementing Two-Factor Authentication (2FA) with TOTP in a Remix app
Step-by-step guide to adding TOTP-based 2FA in a Remix app: QR setup, authenticator codes, sessions, and secure verification flows.

Step-by-step guide to adding TOTP-based 2FA in a Remix app: QR setup, authenticator codes, sessions, and secure verification flows.

Year-in-review for 2025: lessons from consulting, certifications, shipping, and goals for 2026.

A look back at 2024 as a freelance software consultant, plus concrete goals for 2025.

Set up magic-link authentication in Remix using Supabase Auth and Postmark for reliable email delivery.

Implement passwordless magic-link login in React Native with Firebase Auth, deep links, and a clean sign-in UX.

Protect Firestore data with scheduled native backups, restore paths, and an ops checklist for production apps.

Add Remix Dev Tools to speed up debugging routes, loaders, and server/client boundaries in Remix apps.

Containerize a Remix + MariaDB stack with Docker Compose for local development and predictable deploys.

Integrate Stripe Checkout and webhooks in Remix: products, payments, and a production-ready payment flow.

Migrate drag-and-drop lists from react-sortable-hoc to dnd-kit with fewer bugs and better accessibility.


Build daily Cloud Firestore backups with scheduled jobs so you can recover quickly after data loss.

Personal and professional reflection on 2022, with goals that shaped the next year of consulting work.

Wire Formik and Yup validation into React Router v6 forms without fighting navigation or loaders.

Build a browser extension with React and TypeScript using the Plasmo framework, from setup to a working extension.

A practical App Store listing checklist: metadata, screenshots, privacy, and review-ready submission details.

A practical Google Play listing checklist: store listing details, screenshots, privacy, and review-ready submission.
How engagements with Edwards Moses work: communication, delivery cadence, documentation, and what clients can expect.

How to unit test Firestore security rules so auth and data access stay safe as your app grows.

A quick JavaScript pattern for converting array values nested in an object into keyed objects.

Limit Shopify React Native Skia canvas input to Pencil-only touches for a note-taking UX.

Get started with Braintree payments in a React Native Expo app and a Node.js backend.

The day-to-day productivity stack Edwards Moses used in 2022 as a freelance developer.

Automatically bump Android versionCode in CI so Play Store uploads never fail on version conflicts.

A practical list of Git aliases that speed up everyday commits, rebases, and branch management.

End-of-year reflection on 2021 progress and the goals that set up 2022.

Highlight active nav items in Next.js by detecting the current folder/route with useRouter.

Resolve Entity Framework UnintentionalCodeFirstException when deploying ASP.NET MVC to Azure App Service.

Troubleshoot and fix the NetlifyCMS/Gatsby API_ERROR when the Git branch cannot be found.

Add Daily.co video calling to an ASP.NET MVC app with a practical integration walkthrough.