> Canonical URL: https://codingcat.dev/author/alex-patterson

# Alex Patterson: Author | CodingCat.dev

![CodingCat.dev tutorial cover image](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=256&h=256&q=82&fit=max&auto=format)✏️ CodingCat.dev Author

# Alex Patterson

[GitHub](https://github.com/codercatdev)[LinkedIn](https://www.linkedin.com/in/codercatdev/)[TikTok](https://www.tiktok.com/@codingcatdev)[Twitch](https://www.twitch.tv/codingcatdev/)[X (Twitter)](https://twitter.com/codercatdev)[YouTube](https://www.youtube.com/codingcatdev)

## About

I’m the founder of CodingCatDev, where we create “Purrfect Web Tutorials” to teach the world how to turn their development dreams into reality. I am a professional full stack developer, and I am passionate about mentoring new developers and helping the community that has allowed me to live my development dreams. I firmly believe that anyone can learn to be a developer. The CodingCatDev team is here to help!

In college I first learned to develop on the Web using PHP, HTML, JavaScript and CSS. Like many I used the (WLM)AMP stack when I first started and moved towards Wordpress and Drupal.

I started my career as a SAP ABAPer with 0 experience. SAP is a huge ERP system that has several programs that are written at its core, as well as customizations that are created for companies. While I enjoyed the language I always wanted to write Web applications and took every opportunity to create them. I was able to create a Manufacturing Execution System for a very large Office Furniture Manufacturer.

## podcast episodes.

[All](/podcasts)[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/podcasts?topic=sanity)[![](/logos/tags/cloudflare-symbol-light.svg)![](/logos/tags/cloudflare-symbol-dark.svg)Cloudflare](/podcasts?topic=cloudflare)[![](/logos/tags/astro-symbol-light.svg)![](/logos/tags/astro-symbol-dark.svg)Astro](/podcasts?topic=astro)[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/podcasts?topic=firebase)[![](/logos/tags/nextjs-symbol-light.svg)![](/logos/tags/nextjs-symbol-dark.svg)Next.js](/podcasts?topic=nextjs)[#AI & Agents](/podcasts?topic=ai)[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/podcasts?topic=sanity)[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/podcasts?topic=firebase)[![](/logos/amplify/amplify.svg)![](/logos/amplify/amplify.svg)AWS Amplify](/podcasts?topic=amplify)[![](/logos/tags/cloudflare-symbol-light.svg)![](/logos/tags/cloudflare-symbol-dark.svg)Cloudflare](/podcasts?topic=cloudflare)[![](/logos/tags/cloudflare-workers-symbol-light.svg)![](/logos/tags/cloudflare-workers-symbol-dark.svg)Cloudflare Workers](/podcasts?topic=cloudflare-workers)[![](/logos/tags/aws-symbol-light.svg)![](/logos/tags/aws-symbol-dark.svg)AWS](/podcasts?topic=aws)[![](/logos/tags/google-cloud-symbol-light.svg)![](/logos/tags/google-cloud-symbol-dark.svg)Google Cloud](/podcasts?topic=google-cloud)[![](/logos/tags/azure-symbol-light.svg)![](/logos/tags/azure-symbol-dark.svg)Microsoft Azure](/podcasts?topic=azure)[![](/logos/tags/vercel-symbol-light.svg)![](/logos/tags/vercel-symbol-dark.svg)Vercel](/podcasts?topic=vercel)[![](/logos/tags/netlify-symbol-light.svg)![](/logos/tags/netlify-symbol-dark.svg)Netlify](/podcasts?topic=netlify)[![](/logos/tags/supabase-symbol-light.svg)![](/logos/tags/supabase-symbol-dark.svg)Supabase](/podcasts?topic=supabase)[![](/logos/tags/appwrite-symbol-light.svg)![](/logos/tags/appwrite-symbol-dark.svg)Appwrite](/podcasts?topic=appwrite)[![](/logos/tags/convex-symbol-light.svg)![](/logos/tags/convex-symbol-dark.svg)Convex](/podcasts?topic=convex)[![](/logos/tags/builder-io-symbol-light.svg)![](/logos/tags/builder-io-symbol-dark.svg)Builder.io](/podcasts?topic=builder-io)[![](/logos/tags/algolia-symbol-light.svg)![](/logos/tags/algolia-symbol-dark.svg)Algolia](/podcasts?topic=algolia)[![](/logos/tags/cloudinary-symbol-light.svg)![](/logos/tags/cloudinary-symbol-dark.svg)Cloudinary](/podcasts?topic=cloudinary)[![](/logos/tags/storyblok-symbol-light.svg)![](/logos/tags/storyblok-symbol-dark.svg)Storyblok](/podcasts?topic=storyblok)[![](/logos/tags/contentful-symbol-light.svg)![](/logos/tags/contentful-symbol-dark.svg)Contentful](/podcasts?topic=contentful)[![](/logos/tags/hygraph-symbol-light.svg)![](/logos/tags/hygraph-symbol-dark.svg)Hygraph](/podcasts?topic=hygraph)[![](/logos/tags/shopify-symbol-light.svg)![](/logos/tags/shopify-symbol-dark.svg)Shopify](/podcasts?topic=shopify)[![](/logos/tags/stripe-symbol-light.svg)![](/logos/tags/stripe-symbol-dark.svg)Stripe](/podcasts?topic=stripe)[![](/logos/tags/sentry-symbol-light.svg)![](/logos/tags/sentry-symbol-dark.svg)Sentry](/podcasts?topic=sentry)[![](/logos/tags/posthog-symbol-light.svg)![](/logos/tags/posthog-symbol-dark.svg)PostHog](/podcasts?topic=posthog)[![](/logos/tags/launchdarkly-symbol-light.svg)![](/logos/tags/launchdarkly-symbol-dark.svg)LaunchDarkly](/podcasts?topic=launchdarkly)[![](/logos/tags/postman-symbol-light.svg)![](/logos/tags/postman-symbol-dark.svg)Postman](/podcasts?topic=postman)[![](/logos/tags/notion-symbol-light.svg)![](/logos/tags/notion-symbol-dark.svg)Notion](/podcasts?topic=notion)[![](/logos/tags/youtube-symbol-light.svg)![](/logos/tags/youtube-symbol-dark.svg)YouTube](/podcasts?topic=youtube)[![](/logos/tags/astro-symbol-light.svg)![](/logos/tags/astro-symbol-dark.svg)Astro](/podcasts?topic=astro)[![](/logos/tags/react-symbol-light.svg)![](/logos/tags/react-symbol-dark.svg)React](/podcasts?topic=react)[![](/logos/tags/nextjs-symbol-light.svg)![](/logos/tags/nextjs-symbol-dark.svg)Next.js](/podcasts?topic=nextjs)[![](/logos/tags/svelte-symbol-light.svg)![](/logos/tags/svelte-symbol-dark.svg)Svelte](/podcasts?topic=svelte)[![](/logos/tags/sveltekit-symbol-light.svg)![](/logos/tags/sveltekit-symbol-dark.svg)SvelteKit](/podcasts?topic=sveltekit)[![](/logos/tags/tanstack-symbol-light.svg)![](/logos/tags/tanstack-symbol-dark.svg)TanStack](/podcasts?topic=tanstack)[![](/logos/tags/hono-symbol-light.svg)![](/logos/tags/hono-symbol-dark.svg)Hono](/podcasts?topic=hono)[![](/logos/tags/vue-symbol-light.svg)![](/logos/tags/vue-symbol-dark.svg)Vue](/podcasts?topic=vue)[![](/logos/tags/angular-symbol-light.svg)![](/logos/tags/angular-symbol-dark.svg)Angular](/podcasts?topic=angular)[![](/logos/tags/solidjs-symbol-light.svg)![](/logos/tags/solidjs-symbol-dark.svg)SolidJS](/podcasts?topic=solidjs)[![](/logos/tags/remix-symbol-light.svg)![](/logos/tags/remix-symbol-dark.svg)Remix](/podcasts?topic=remix)[![](/logos/tags/tailwindcss-symbol-light.svg)![](/logos/tags/tailwindcss-symbol-dark.svg)Tailwind CSS](/podcasts?topic=tailwindcss)[![](/logos/tags/daisyui-symbol-light.svg)![](/logos/tags/daisyui-symbol-dark.svg)DaisyUI](/podcasts?topic=daisyui)[![](/logos/tags/flutter-symbol-light.svg)![](/logos/tags/flutter-symbol-dark.svg)Flutter](/podcasts?topic=flutter)[![](/logos/tags/react-native-symbol-light.svg)![](/logos/tags/react-native-symbol-dark.svg)React Native](/podcasts?topic=react-native)[![](/logos/tags/threejs-symbol-light.svg)![](/logos/tags/threejs-symbol-dark.svg)Three.js](/podcasts?topic=threejs)[![](/logos/tags/remotion-symbol-light.svg)![](/logos/tags/remotion-symbol-dark.svg)Remotion](/podcasts?topic=remotion)[![](/logos/tags/vite-symbol-light.svg)![](/logos/tags/vite-symbol-dark.svg)Vite](/podcasts?topic=vite)[![](/logos/tags/typescript-symbol-light.svg)![](/logos/tags/typescript-symbol-dark.svg)TypeScript](/podcasts?topic=typescript)[![](/logos/tags/javascript-symbol-light.svg)![](/logos/tags/javascript-symbol-dark.svg)JavaScript](/podcasts?topic=javascript)[![](/logos/tags/html-symbol-light.svg)![](/logos/tags/html-symbol-dark.svg)HTML](/podcasts?topic=html)[![](/logos/tags/css-symbol-light.svg)![](/logos/tags/css-symbol-dark.svg)CSS](/podcasts?topic=css)[![](/logos/tags/sql-symbol-light.svg)![](/logos/tags/sql-symbol-dark.svg)SQL](/podcasts?topic=sql)[![](/logos/tags/graphql-symbol-light.svg)![](/logos/tags/graphql-symbol-dark.svg)GraphQL](/podcasts?topic=graphql)[![](/logos/tags/nodejs-symbol-light.svg)![](/logos/tags/nodejs-symbol-dark.svg)Node.js](/podcasts?topic=nodejs)[![](/logos/tags/bun-symbol-light.svg)![](/logos/tags/bun-symbol-dark.svg)Bun](/podcasts?topic=bun)[![](/logos/tags/deno-symbol-light.svg)![](/logos/tags/deno-symbol-dark.svg)Deno](/podcasts?topic=deno)[![](/logos/tags/python-symbol-light.svg)![](/logos/tags/python-symbol-dark.svg)Python](/podcasts?topic=python)[![](/logos/tags/rust-symbol-light.svg)![](/logos/tags/rust-symbol-dark.svg)Rust](/podcasts?topic=rust)[![](/logos/tags/go-symbol-light.svg)![](/logos/tags/go-symbol-dark.svg)Go](/podcasts?topic=go)[![](/logos/tags/php-symbol-light.svg)![](/logos/tags/php-symbol-dark.svg)PHP](/podcasts?topic=php)[![](/logos/tags/csharp-symbol-light.svg)![](/logos/tags/csharp-symbol-dark.svg)C#](/podcasts?topic=csharp)[![](/logos/tags/zod-symbol-light.svg)![](/logos/tags/zod-symbol-dark.svg)Zod](/podcasts?topic=zod)[![](/logos/tags/d1-symbol-light.svg)![](/logos/tags/d1-symbol-dark.svg)Cloudflare D1](/podcasts?topic=d1)[![](/logos/tags/durable-objects-symbol-light.svg)![](/logos/tags/durable-objects-symbol-dark.svg)Durable Objects](/podcasts?topic=durable-objects)[![](/logos/tags/drizzle-symbol-light.svg)![](/logos/tags/drizzle-symbol-dark.svg)Drizzle](/podcasts?topic=drizzle)[![](/logos/tags/prisma-symbol-light.svg)![](/logos/tags/prisma-symbol-dark.svg)Prisma](/podcasts?topic=prisma)[![](/logos/tags/postgresql-symbol-light.svg)![](/logos/tags/postgresql-symbol-dark.svg)PostgreSQL](/podcasts?topic=postgresql)[![](/logos/tags/sqlite-symbol-light.svg)![](/logos/tags/sqlite-symbol-dark.svg)SQLite](/podcasts?topic=sqlite)[![](/logos/tags/pglite-symbol-light.svg)![](/logos/tags/pglite-symbol-dark.svg)PGlite](/podcasts?topic=pglite)[![](/logos/tags/turso-symbol-light.svg)![](/logos/tags/turso-symbol-dark.svg)Turso](/podcasts?topic=turso)[![](/logos/tags/neon-symbol-light.svg)![](/logos/tags/neon-symbol-dark.svg)Neon](/podcasts?topic=neon)[![](/logos/tags/mongodb-symbol-light.svg)![](/logos/tags/mongodb-symbol-dark.svg)MongoDB](/podcasts?topic=mongodb)[![](/logos/tags/redis-symbol-light.svg)![](/logos/tags/redis-symbol-dark.svg)Redis](/podcasts?topic=redis)[![](/logos/tags/better-auth-symbol-light.svg)![](/logos/tags/better-auth-symbol-dark.svg)Better-Auth](/podcasts?topic=better-auth)[![](/logos/tags/clerk-symbol-light.svg)![](/logos/tags/clerk-symbol-dark.svg)Clerk](/podcasts?topic=clerk)[![](/logos/tags/auth0-symbol-light.svg)![](/logos/tags/auth0-symbol-dark.svg)Auth0](/podcasts?topic=auth0)[![](/logos/tags/authzed-symbol-light.svg)![](/logos/tags/authzed-symbol-dark.svg)AuthZed](/podcasts?topic=authzed)[#Headless CMS](/podcasts?topic=cms)[#Databases](/podcasts?topic=database)[#AI & Agents](/podcasts?topic=ai)[![](/logos/tags/mcp-symbol-light.svg)![](/logos/tags/mcp-symbol-dark.svg)MCP](/podcasts?topic=mcp)[![](/logos/tags/webmcp-symbol-light.svg)![](/logos/tags/webmcp-symbol-dark.svg)WebMCP](/podcasts?topic=webmcp)[#Web AI](/podcasts?topic=web-ai)[![](/logos/tags/webgpu-symbol-light.svg)![](/logos/tags/webgpu-symbol-dark.svg)WebGPU](/podcasts?topic=webgpu)[![](/logos/tags/openai-symbol-light.svg)![](/logos/tags/openai-symbol-dark.svg)OpenAI](/podcasts?topic=openai)[![](/logos/tags/anthropic-symbol-light.svg)![](/logos/tags/anthropic-symbol-dark.svg)Anthropic](/podcasts?topic=anthropic)[![](/logos/tags/gemini-symbol-light.svg)![](/logos/tags/gemini-symbol-dark.svg)Google Gemini](/podcasts?topic=gemini)[![](/logos/tags/gemini-nano-symbol-light.svg)![](/logos/tags/gemini-nano-symbol-dark.svg)Gemini Nano](/podcasts?topic=gemini-nano)[![](/logos/tags/chrome-built-in-ai-symbol-light.svg)![](/logos/tags/chrome-built-in-ai-symbol-dark.svg)Chrome Built-in AI](/podcasts?topic=chrome-built-in-ai)[![](/logos/tags/transformers-js-symbol-light.svg)![](/logos/tags/transformers-js-symbol-dark.svg)Transformers.js](/podcasts?topic=transformers-js)[#RAG](/podcasts?topic=rag)[![](/logos/tags/git-symbol-light.svg)![](/logos/tags/git-symbol-dark.svg)Git](/podcasts?topic=git)[![](/logos/tags/github-symbol-light.svg)![](/logos/tags/github-symbol-dark.svg)GitHub](/podcasts?topic=github)[![](/logos/tags/docker-symbol-light.svg)![](/logos/tags/docker-symbol-dark.svg)Docker](/podcasts?topic=docker)[![](/logos/tags/playwright-symbol-light.svg)![](/logos/tags/playwright-symbol-dark.svg)Playwright](/podcasts?topic=playwright)[#Testing](/podcasts?topic=testing)[#Security](/podcasts?topic=security)[#Serverless](/podcasts?topic=serverless)[#DevOps](/podcasts?topic=devops)[#Accessibility](/podcasts?topic=a11y)[#Design](/podcasts?topic=design)[#Architecture](/podcasts?topic=architecture)[#Career](/podcasts?topic=career)[#WebDev](/podcasts?topic=webdev)[#Open Source](/podcasts?topic=oss)[![](/logos/tags/ffmpeg-symbol-light.svg)![](/logos/tags/ffmpeg-symbol-dark.svg)FFmpeg](/podcasts?topic=ffmpeg)[![](/logos/tags/blender-symbol-light.svg)![](/logos/tags/blender-symbol-dark.svg)Blender](/podcasts?topic=blender)[![](/logos/tags/chrome-symbol-light.svg)![](/logos/tags/chrome-symbol-dark.svg)Chrome](/podcasts?topic=chrome)[![](/logos/tags/microbit-symbol-light.svg)![](/logos/tags/microbit-symbol-dark.svg)micro:bit](/podcasts?topic=microbit)[#Video](/podcasts?topic=video)[#Mental Health](/podcasts?topic=mental-health)[#Infrastructure](/podcasts?topic=infrastructure)[#Web Standards](/podcasts?topic=web-technologies)Official brand logos & topic hubs[Browse All Topic Hubs &rarr;](/topics)Showing 8 of 189 episodes[Open Topic Hub &rarr;](/topics)[![GenAI for Engineers, What](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/3e48f44739be2aabf3aaa805e51b3a6328979153-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/genai-for-engineers-what-s-real-what-s-not-and-what-s-coming)November 19, 2025[#AI & Agents](/topic/ai)

### [GenAI for Engineers, What's Real, What's Not and What's Coming](/podcast/genai-for-engineers-what-s-real-what-s-not-and-what-s-coming)

Curious about GenAI for engineers? Learn what's real, what's not, and what's next in AI.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Balki Kodarapu](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/25fd44884e232394eb74b776fcec7e8d13330ca0-1060x794.png?rect=133,0,794,794&w=96&h=96&q=82&fit=max&auto=format)Balki Kodarapu](/guest/balki-kodarapu)[![How OAuth, MCP, and the OpenAI Apps SDK, Power the Next Generation of Interactive AI Experiences (with Stytch & OpenAI)](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/0beb99900f4c24e284df2dee3e2d740062c6ce96-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/how-oauth-mcp-and-the-openai-apps-sdk-power-the-next-generation-of-interactive-ai-experiences)November 4, 2025[![](/logos/tags/mcp-symbol-light.svg)![](/logos/tags/mcp-symbol-dark.svg)MCP](/topic/mcp)[![](/logos/tags/openai-symbol-light.svg)![](/logos/tags/openai-symbol-dark.svg)OpenAI](/topic/openai)[#AI & Agents](/topic/ai)[+1](/podcast/how-oauth-mcp-and-the-openai-apps-sdk-power-the-next-generation-of-interactive-ai-experiences)

### [How OAuth, MCP, and the OpenAI Apps SDK, Power the Next Generation of Interactive AI Experiences (with Stytch & OpenAI)](/podcast/how-oauth-mcp-and-the-openai-apps-sdk-power-the-next-generation-of-interactive-ai-experiences)

Curious about OAuth, MCP servers, and building cool ChatGPT apps? Hear from Max of Stytch as we dive deep, break down the tech, and build a Tamagotchi together!

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Max Gerber](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/4497bb7ada0e39b4cd13b0e3ca00c930389dab02-1292x1088.png?rect=102,0,1088,1088&w=96&h=96&q=82&fit=max&auto=format)Max Gerber](/guest/max-gerber)[![Firebase SQL with Data Connect](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/85d81ee02a09ff89d5cbb7b3644e8793d98b5c13-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/firebase-sql-with-data-connect)October 28, 2025[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/topic/firebase)[![](/logos/tags/sql-symbol-light.svg)![](/logos/tags/sql-symbol-dark.svg)SQL](/topic/sql)

### [Firebase SQL with Data Connect](/podcast/firebase-sql-with-data-connect)

Firebase SQL with Data Connect how to use semantic searches with vector embeddings.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Tyler Crowe](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/432bde3e4b533ceccfe9c4d53bda13a1965020c8-500x500.jpg?w=96&h=96&q=82&fit=max&auto=format)Tyler Crowe](/guest/tyler-crowe)[![Identity in AI Agents](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/b6824741d5542b93999d8f9be4ffef11e37dc52b-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/identity-access-management-for-agents-with-tobin-south)October 23, 2025[![](/logos/tags/mcp-symbol-light.svg)![](/logos/tags/mcp-symbol-dark.svg)MCP](/topic/mcp)[#AI & Agents](/topic/ai)[#Security](/topic/security)

### [Identity in AI Agents](/podcast/identity-access-management-for-agents-with-tobin-south)

Explore AI identity management with expert insights on MCP servers, agent security, OAuth, and future standards in AI. Unlock best practices and industry trends.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Tobin South](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/3e6022a4054dfc1006beee15f8f477da7532aca8-925x876.png?rect=25,0,876,876&w=96&h=96&q=82&fit=max&auto=format)Tobin South](/guest/tobin-south)[![Build a Custom No-Code App in 90 Minutes](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/b7507d2e7862310280e622054777905351d5c214-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/build-a-custom-no-code-app-in-90-minutes)October 12, 2025

### [Build a Custom No-Code App in 90 Minutes](/podcast/build-a-custom-no-code-app-in-90-minutes)

Curious about no-code app building? Dive in as we explore Adalo vs Bubble, micro SaaS ideas, and real talk on launching products without code. Drop your thoughts below and share!

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Dan Hafner](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/1fc73933fe08eab8d55772b6d24db5203ba544ac-800x800.jpg?w=96&h=96&q=82&fit=max&auto=format)Dan Hafner](/guest/dan-hafner)[![How to Automate Your Work and Free Your Time](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/ab921ffcf80d0ce4ea1dc35d6c24086fd6fb9968-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/how-to-automate-your-work-and-free-your-time)October 8, 2025[#Mental Health](/topic/mental-health)

### [How to Automate Your Work and Free Your Time](/podcast/how-to-automate-your-work-and-free-your-time)

Discover how to automate your tasks and reclaim your time! Join Alex and Joe as they discuss podcasting, automation, and work-life balance strategies.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Joe Casabona](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/c2732f207810ab0c720fc804a49f28e9a36b7451-1500x1500.png?w=96&h=96&q=82&fit=max&auto=format)Joe Casabona](/guest/joe-casabona)[![Running the Cloud on Your Desktop with LocalStack](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/6835d7b8549dd59339a6e475e64b8ff079d64ab1-1920x1080.png?w=1920&q=82&fit=max&auto=format)](/podcast/running-the-cloud-on-your-desktop-with-localstack)October 6, 2025[![](/logos/tags/aws-symbol-light.svg)![](/logos/tags/aws-symbol-dark.svg)AWS](/topic/aws)

### [Running the Cloud on Your Desktop with LocalStack](/podcast/running-the-cloud-on-your-desktop-with-localstack)

Tired of AWS running in the cloud, how about right on your desktop?

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Brian Rinaldi](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/df0e1134ca61ac15d90e055b8b1565d01e320450-300x300.jpg?w=96&h=96&q=82&fit=max&auto=format)Brian Rinaldi](/guest/brian-rinaldi)[![Secure AI Access Control Using: SpiceDB](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/985c915f4445dce1e599ec70fea53b09689aefe2-960x540.png?w=960&q=82&fit=max&auto=format)](/podcast/secure-ai-access-control-using-spicedb)July 21, 2025[![](/logos/tags/authzed-symbol-light.svg)![](/logos/tags/authzed-symbol-dark.svg)AuthZed](/topic/authzed)[#AI & Agents](/topic/ai)[#Testing](/topic/testing)

### [Secure AI Access Control Using: SpiceDB](/podcast/secure-ai-access-control-using-spicedb)

Dive into hands-on SpiceDB demos, real-world permission modeling, and AI-powered scenario testing!

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Sam Kim](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/1677fe82774ccf6d0284302448050045b668bdbb-800x670.jpg?rect=65,0,670,670&w=96&h=96&q=82&fit=max&auto=format)Sam Kim](/guest/sam-kim)

No matching episodes found for this filter.

Try clearing the filter above to browse the full feed.

Loading more episodes...✓ All episodes loaded

## blog posts.

[All](/blog)[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/blog?topic=sanity)[![](/logos/tags/cloudflare-symbol-light.svg)![](/logos/tags/cloudflare-symbol-dark.svg)Cloudflare](/blog?topic=cloudflare)[![](/logos/tags/astro-symbol-light.svg)![](/logos/tags/astro-symbol-dark.svg)Astro](/blog?topic=astro)[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/blog?topic=firebase)[![](/logos/tags/nextjs-symbol-light.svg)![](/logos/tags/nextjs-symbol-dark.svg)Next.js](/blog?topic=nextjs)[#AI & Agents](/blog?topic=ai)[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/blog?topic=sanity)[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/blog?topic=firebase)[![](/logos/amplify/amplify.svg)![](/logos/amplify/amplify.svg)AWS Amplify](/blog?topic=amplify)[![](/logos/tags/cloudflare-symbol-light.svg)![](/logos/tags/cloudflare-symbol-dark.svg)Cloudflare](/blog?topic=cloudflare)[![](/logos/tags/cloudflare-workers-symbol-light.svg)![](/logos/tags/cloudflare-workers-symbol-dark.svg)Cloudflare Workers](/blog?topic=cloudflare-workers)[![](/logos/tags/aws-symbol-light.svg)![](/logos/tags/aws-symbol-dark.svg)AWS](/blog?topic=aws)[![](/logos/tags/google-cloud-symbol-light.svg)![](/logos/tags/google-cloud-symbol-dark.svg)Google Cloud](/blog?topic=google-cloud)[![](/logos/tags/azure-symbol-light.svg)![](/logos/tags/azure-symbol-dark.svg)Microsoft Azure](/blog?topic=azure)[![](/logos/tags/vercel-symbol-light.svg)![](/logos/tags/vercel-symbol-dark.svg)Vercel](/blog?topic=vercel)[![](/logos/tags/netlify-symbol-light.svg)![](/logos/tags/netlify-symbol-dark.svg)Netlify](/blog?topic=netlify)[![](/logos/tags/supabase-symbol-light.svg)![](/logos/tags/supabase-symbol-dark.svg)Supabase](/blog?topic=supabase)[![](/logos/tags/appwrite-symbol-light.svg)![](/logos/tags/appwrite-symbol-dark.svg)Appwrite](/blog?topic=appwrite)[![](/logos/tags/convex-symbol-light.svg)![](/logos/tags/convex-symbol-dark.svg)Convex](/blog?topic=convex)[![](/logos/tags/builder-io-symbol-light.svg)![](/logos/tags/builder-io-symbol-dark.svg)Builder.io](/blog?topic=builder-io)[![](/logos/tags/algolia-symbol-light.svg)![](/logos/tags/algolia-symbol-dark.svg)Algolia](/blog?topic=algolia)[![](/logos/tags/cloudinary-symbol-light.svg)![](/logos/tags/cloudinary-symbol-dark.svg)Cloudinary](/blog?topic=cloudinary)[![](/logos/tags/storyblok-symbol-light.svg)![](/logos/tags/storyblok-symbol-dark.svg)Storyblok](/blog?topic=storyblok)[![](/logos/tags/contentful-symbol-light.svg)![](/logos/tags/contentful-symbol-dark.svg)Contentful](/blog?topic=contentful)[![](/logos/tags/hygraph-symbol-light.svg)![](/logos/tags/hygraph-symbol-dark.svg)Hygraph](/blog?topic=hygraph)[![](/logos/tags/shopify-symbol-light.svg)![](/logos/tags/shopify-symbol-dark.svg)Shopify](/blog?topic=shopify)[![](/logos/tags/stripe-symbol-light.svg)![](/logos/tags/stripe-symbol-dark.svg)Stripe](/blog?topic=stripe)[![](/logos/tags/sentry-symbol-light.svg)![](/logos/tags/sentry-symbol-dark.svg)Sentry](/blog?topic=sentry)[![](/logos/tags/posthog-symbol-light.svg)![](/logos/tags/posthog-symbol-dark.svg)PostHog](/blog?topic=posthog)[![](/logos/tags/launchdarkly-symbol-light.svg)![](/logos/tags/launchdarkly-symbol-dark.svg)LaunchDarkly](/blog?topic=launchdarkly)[![](/logos/tags/postman-symbol-light.svg)![](/logos/tags/postman-symbol-dark.svg)Postman](/blog?topic=postman)[![](/logos/tags/notion-symbol-light.svg)![](/logos/tags/notion-symbol-dark.svg)Notion](/blog?topic=notion)[![](/logos/tags/youtube-symbol-light.svg)![](/logos/tags/youtube-symbol-dark.svg)YouTube](/blog?topic=youtube)[![](/logos/tags/astro-symbol-light.svg)![](/logos/tags/astro-symbol-dark.svg)Astro](/blog?topic=astro)[![](/logos/tags/react-symbol-light.svg)![](/logos/tags/react-symbol-dark.svg)React](/blog?topic=react)[![](/logos/tags/nextjs-symbol-light.svg)![](/logos/tags/nextjs-symbol-dark.svg)Next.js](/blog?topic=nextjs)[![](/logos/tags/svelte-symbol-light.svg)![](/logos/tags/svelte-symbol-dark.svg)Svelte](/blog?topic=svelte)[![](/logos/tags/sveltekit-symbol-light.svg)![](/logos/tags/sveltekit-symbol-dark.svg)SvelteKit](/blog?topic=sveltekit)[![](/logos/tags/tanstack-symbol-light.svg)![](/logos/tags/tanstack-symbol-dark.svg)TanStack](/blog?topic=tanstack)[![](/logos/tags/hono-symbol-light.svg)![](/logos/tags/hono-symbol-dark.svg)Hono](/blog?topic=hono)[![](/logos/tags/vue-symbol-light.svg)![](/logos/tags/vue-symbol-dark.svg)Vue](/blog?topic=vue)[![](/logos/tags/angular-symbol-light.svg)![](/logos/tags/angular-symbol-dark.svg)Angular](/blog?topic=angular)[![](/logos/tags/solidjs-symbol-light.svg)![](/logos/tags/solidjs-symbol-dark.svg)SolidJS](/blog?topic=solidjs)[![](/logos/tags/remix-symbol-light.svg)![](/logos/tags/remix-symbol-dark.svg)Remix](/blog?topic=remix)[![](/logos/tags/tailwindcss-symbol-light.svg)![](/logos/tags/tailwindcss-symbol-dark.svg)Tailwind CSS](/blog?topic=tailwindcss)[![](/logos/tags/daisyui-symbol-light.svg)![](/logos/tags/daisyui-symbol-dark.svg)DaisyUI](/blog?topic=daisyui)[![](/logos/tags/flutter-symbol-light.svg)![](/logos/tags/flutter-symbol-dark.svg)Flutter](/blog?topic=flutter)[![](/logos/tags/react-native-symbol-light.svg)![](/logos/tags/react-native-symbol-dark.svg)React Native](/blog?topic=react-native)[![](/logos/tags/threejs-symbol-light.svg)![](/logos/tags/threejs-symbol-dark.svg)Three.js](/blog?topic=threejs)[![](/logos/tags/remotion-symbol-light.svg)![](/logos/tags/remotion-symbol-dark.svg)Remotion](/blog?topic=remotion)[![](/logos/tags/vite-symbol-light.svg)![](/logos/tags/vite-symbol-dark.svg)Vite](/blog?topic=vite)[![](/logos/tags/typescript-symbol-light.svg)![](/logos/tags/typescript-symbol-dark.svg)TypeScript](/blog?topic=typescript)[![](/logos/tags/javascript-symbol-light.svg)![](/logos/tags/javascript-symbol-dark.svg)JavaScript](/blog?topic=javascript)[![](/logos/tags/html-symbol-light.svg)![](/logos/tags/html-symbol-dark.svg)HTML](/blog?topic=html)[![](/logos/tags/css-symbol-light.svg)![](/logos/tags/css-symbol-dark.svg)CSS](/blog?topic=css)[![](/logos/tags/sql-symbol-light.svg)![](/logos/tags/sql-symbol-dark.svg)SQL](/blog?topic=sql)[![](/logos/tags/graphql-symbol-light.svg)![](/logos/tags/graphql-symbol-dark.svg)GraphQL](/blog?topic=graphql)[![](/logos/tags/nodejs-symbol-light.svg)![](/logos/tags/nodejs-symbol-dark.svg)Node.js](/blog?topic=nodejs)[![](/logos/tags/bun-symbol-light.svg)![](/logos/tags/bun-symbol-dark.svg)Bun](/blog?topic=bun)[![](/logos/tags/deno-symbol-light.svg)![](/logos/tags/deno-symbol-dark.svg)Deno](/blog?topic=deno)[![](/logos/tags/python-symbol-light.svg)![](/logos/tags/python-symbol-dark.svg)Python](/blog?topic=python)[![](/logos/tags/rust-symbol-light.svg)![](/logos/tags/rust-symbol-dark.svg)Rust](/blog?topic=rust)[![](/logos/tags/go-symbol-light.svg)![](/logos/tags/go-symbol-dark.svg)Go](/blog?topic=go)[![](/logos/tags/php-symbol-light.svg)![](/logos/tags/php-symbol-dark.svg)PHP](/blog?topic=php)[![](/logos/tags/csharp-symbol-light.svg)![](/logos/tags/csharp-symbol-dark.svg)C#](/blog?topic=csharp)[![](/logos/tags/zod-symbol-light.svg)![](/logos/tags/zod-symbol-dark.svg)Zod](/blog?topic=zod)[![](/logos/tags/d1-symbol-light.svg)![](/logos/tags/d1-symbol-dark.svg)Cloudflare D1](/blog?topic=d1)[![](/logos/tags/durable-objects-symbol-light.svg)![](/logos/tags/durable-objects-symbol-dark.svg)Durable Objects](/blog?topic=durable-objects)[![](/logos/tags/drizzle-symbol-light.svg)![](/logos/tags/drizzle-symbol-dark.svg)Drizzle](/blog?topic=drizzle)[![](/logos/tags/prisma-symbol-light.svg)![](/logos/tags/prisma-symbol-dark.svg)Prisma](/blog?topic=prisma)[![](/logos/tags/postgresql-symbol-light.svg)![](/logos/tags/postgresql-symbol-dark.svg)PostgreSQL](/blog?topic=postgresql)[![](/logos/tags/sqlite-symbol-light.svg)![](/logos/tags/sqlite-symbol-dark.svg)SQLite](/blog?topic=sqlite)[![](/logos/tags/pglite-symbol-light.svg)![](/logos/tags/pglite-symbol-dark.svg)PGlite](/blog?topic=pglite)[![](/logos/tags/turso-symbol-light.svg)![](/logos/tags/turso-symbol-dark.svg)Turso](/blog?topic=turso)[![](/logos/tags/neon-symbol-light.svg)![](/logos/tags/neon-symbol-dark.svg)Neon](/blog?topic=neon)[![](/logos/tags/mongodb-symbol-light.svg)![](/logos/tags/mongodb-symbol-dark.svg)MongoDB](/blog?topic=mongodb)[![](/logos/tags/redis-symbol-light.svg)![](/logos/tags/redis-symbol-dark.svg)Redis](/blog?topic=redis)[![](/logos/tags/better-auth-symbol-light.svg)![](/logos/tags/better-auth-symbol-dark.svg)Better-Auth](/blog?topic=better-auth)[![](/logos/tags/clerk-symbol-light.svg)![](/logos/tags/clerk-symbol-dark.svg)Clerk](/blog?topic=clerk)[![](/logos/tags/auth0-symbol-light.svg)![](/logos/tags/auth0-symbol-dark.svg)Auth0](/blog?topic=auth0)[![](/logos/tags/authzed-symbol-light.svg)![](/logos/tags/authzed-symbol-dark.svg)AuthZed](/blog?topic=authzed)[#Headless CMS](/blog?topic=cms)[#Databases](/blog?topic=database)[#AI & Agents](/blog?topic=ai)[![](/logos/tags/mcp-symbol-light.svg)![](/logos/tags/mcp-symbol-dark.svg)MCP](/blog?topic=mcp)[![](/logos/tags/webmcp-symbol-light.svg)![](/logos/tags/webmcp-symbol-dark.svg)WebMCP](/blog?topic=webmcp)[#Web AI](/blog?topic=web-ai)[![](/logos/tags/webgpu-symbol-light.svg)![](/logos/tags/webgpu-symbol-dark.svg)WebGPU](/blog?topic=webgpu)[![](/logos/tags/openai-symbol-light.svg)![](/logos/tags/openai-symbol-dark.svg)OpenAI](/blog?topic=openai)[![](/logos/tags/anthropic-symbol-light.svg)![](/logos/tags/anthropic-symbol-dark.svg)Anthropic](/blog?topic=anthropic)[![](/logos/tags/gemini-symbol-light.svg)![](/logos/tags/gemini-symbol-dark.svg)Google Gemini](/blog?topic=gemini)[![](/logos/tags/gemini-nano-symbol-light.svg)![](/logos/tags/gemini-nano-symbol-dark.svg)Gemini Nano](/blog?topic=gemini-nano)[![](/logos/tags/chrome-built-in-ai-symbol-light.svg)![](/logos/tags/chrome-built-in-ai-symbol-dark.svg)Chrome Built-in AI](/blog?topic=chrome-built-in-ai)[![](/logos/tags/transformers-js-symbol-light.svg)![](/logos/tags/transformers-js-symbol-dark.svg)Transformers.js](/blog?topic=transformers-js)[#RAG](/blog?topic=rag)[![](/logos/tags/git-symbol-light.svg)![](/logos/tags/git-symbol-dark.svg)Git](/blog?topic=git)[![](/logos/tags/github-symbol-light.svg)![](/logos/tags/github-symbol-dark.svg)GitHub](/blog?topic=github)[![](/logos/tags/docker-symbol-light.svg)![](/logos/tags/docker-symbol-dark.svg)Docker](/blog?topic=docker)[![](/logos/tags/playwright-symbol-light.svg)![](/logos/tags/playwright-symbol-dark.svg)Playwright](/blog?topic=playwright)[#Testing](/blog?topic=testing)[#Security](/blog?topic=security)[#Serverless](/blog?topic=serverless)[#DevOps](/blog?topic=devops)[#Accessibility](/blog?topic=a11y)[#Design](/blog?topic=design)[#Architecture](/blog?topic=architecture)[#Career](/blog?topic=career)[#WebDev](/blog?topic=webdev)[#Open Source](/blog?topic=oss)[![](/logos/tags/ffmpeg-symbol-light.svg)![](/logos/tags/ffmpeg-symbol-dark.svg)FFmpeg](/blog?topic=ffmpeg)[![](/logos/tags/blender-symbol-light.svg)![](/logos/tags/blender-symbol-dark.svg)Blender](/blog?topic=blender)[![](/logos/tags/chrome-symbol-light.svg)![](/logos/tags/chrome-symbol-dark.svg)Chrome](/blog?topic=chrome)[![](/logos/tags/microbit-symbol-light.svg)![](/logos/tags/microbit-symbol-dark.svg)micro:bit](/blog?topic=microbit)[#Video](/blog?topic=video)[#Mental Health](/blog?topic=mental-health)[#Infrastructure](/blog?topic=infrastructure)[#Web Standards](/blog?topic=web-technologies)Official brand logos & topic hubs[Browse All Topic Hubs &rarr;](/topics)Showing 8 of 169 blog posts[Open Topic Hub &rarr;](/topics)[![Alex Patterson next to a dark-mode architecture diagram of 3D AJ and the 14 open-source video repositories](https://cdn.sanity.io/images/hfh83o0w/production/1a6c5bade322565ed55c3d0999dfe3c0332055c4-1376x768.png?w=1376&q=82&fit=max&auto=format)](/post/14-open-source-repos-code-driven-video-how-we-built-3d-aj)November 4, 2026[#AI & Agents](/topic/ai)

### [The 14 Open-Source Repos Powering Code-Driven Video in 2026: How We Built 3D AJ the Cat](/post/14-open-source-repos-code-driven-video-how-we-built-3d-aj)

Why viral 'one-prompt' AI videos are actually 9,500-character production harnesses backed by deterministic frame functions, closed-form springs, and contact-sheet critique loops. Here is the full architectural breakdown of all 14 open-source repos and how we used them to build our interactive 3D AJ the Cat mascot and Course Factory.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![The Heads of AI wearing black company logo t-shirts and shaking hands in a circular web of cloud and GPU investments](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/d1d83d596ce5899d797cd3aaf1bd0142038f282a-1376x768.jpg?w=1376&q=82&fit=max&auto=format)](/post/anthropic-s1-ipo-circular-ai-economy-etf-risk)October 26, 2026[![](/logos/tags/aws-symbol-light.svg)![](/logos/tags/aws-symbol-dark.svg)AWS](/topic/aws)[![](/logos/tags/anthropic-symbol-light.svg)![](/logos/tags/anthropic-symbol-dark.svg)Anthropic](/topic/anthropic)[#AI & Agents](/topic/ai)

### [Anthropic's S-1, $518B in cloud commitments, and circular AI capex](/post/anthropic-s1-ipo-circular-ai-economy-etf-risk)

Anthropic just filed its Form S-1 for a Nasdaq IPO under ticker ANT, revealing $518B in take-or-pay cloud commitments to Google, AWS, and Microsoft. Here is how Mark Zuckerberg, Elon Musk, Jensen Huang, Sundar Pichai, Satya Nadella, Tim Cook, and Dario Amodei built a circular revenue machine, and what happens to your S&P 500 ETF if it stalls.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![PHP2Shell (CVE-2026-109618): How AI Found a Decade-Old Bug in 70% of the Web](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/e83065d0a4e2f841ce64d3f4aea8ddbbf07e5cb9-1376x768.jpg?w=1376&q=82&fit=max&auto=format)](/post/php2shell-cve-2026-109618-ai-php-security-scramble)October 22, 2026[![](/logos/tags/php-symbol-light.svg)![](/logos/tags/php-symbol-dark.svg)PHP](/topic/php)[![](/logos/tags/openai-symbol-light.svg)![](/logos/tags/openai-symbol-dark.svg)OpenAI](/topic/openai)[![](/logos/tags/gemini-symbol-light.svg)![](/logos/tags/gemini-symbol-dark.svg)Google Gemini](/topic/gemini)[+1](/post/php2shell-cve-2026-109618-ai-php-security-scramble)

### [PHP2Shell (CVE-2026-109618): How AI Found a Decade-Old Bug in 70% of the Web](/post/php2shell-cve-2026-109618-ai-php-security-scramble)

Two critical pre-authentication RCE flaws in PHP (CVE-2026-109618 and CVE-2026-109619), uncovered by AI models from OpenAI and Google Gemini, sparked a global patching scramble across 70% of the web. Here is how PHP2Shell works and how to patch your servers.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Sanity Knowledge Bases](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/38b0f021c51d97043c8a1ebf31d505a0ea877b7c-2752x1536.jpg?w=1920&q=82&fit=max&auto=format)](/post/sanity-knowledge-bases)October 17, 2026[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/topic/sanity)[#AI & Agents](/topic/ai)

### [Sanity Knowledge Bases](/post/sanity-knowledge-bases)

Eliminate query-time guessing in your AI agents. Learn how Sanity Context Knowledge Bases compile structured datasets, crawled documentation websites, and uploaded files ahead of time, resolve conflicting facts, and serve a compact outline over Context MCP.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![The Five Layers of Agentic Context: Why Canon Only Turns When Someone Signs Off](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/d702615b4d3c30ea99dc40f10a576db4cd1c4c73-2752x1536.jpg?w=1920&q=82&fit=max&auto=format)](/post/the-five-layers-of-agentic-context-why-canon-only-turns-when-someone-signs-off)October 14, 2026[![](/logos/sanity/Sanity-Symbol--black_on_transparent.svg)![](/logos/sanity/Sanity-Symbol--white_on_transparent.svg)Sanity](/topic/sanity)

### [The Five Layers of Agentic Context: Why Canon Only Turns When Someone Signs Off](/post/the-five-layers-of-agentic-context-why-canon-only-turns-when-someone-signs-off)

A deep-dive review of Magnus Hillestad's Five Layers of Agentic Context on the Sanity blog, exploring why Situation, Records, Memory, Process, and Canon move at different speeds, plus a working interactive HTML/SVG Situation-to-Canon wheel you can drop into any webpage.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Dockerless Serverless GPUs: How I Built a Fast, Cheap AI SaaS with RunPod Flash](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/78383c8986667bc1eaa504786488d88f212929a8-1280x720.jpg?w=1280&q=82&fit=max&auto=format)](/post/dockerless-serverless-gpus-fast-cheap-ai-saas-with-runpod-flash)October 6, 2026[#AI & Agents](/topic/ai)[#Serverless](/topic/serverless)[#Architecture](/topic/architecture)

### [Dockerless Serverless GPUs: How I Built a Fast, Cheap AI SaaS with RunPod Flash](/post/dockerless-serverless-gpus-fast-cheap-ai-saas-with-runpod-flash)

Hosted image APIs cost 3 to 4 cents per generation. Using RunPod Flash for dockerless serverless GPUs, FlashFun.dev drops that to a fraction of a cent, turning $1 into 500 to 3,000 images. Here is the full architecture, the benchmarks, and the code.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![The Firebase plugin is now available in Codex: Web Architecture & Implementation Guide](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/4e2c8e99f437cb576972d406ec32394a82a19480-1200x630.svg?w=1200&q=82&fit=max&auto=format)](/post/firebase-2026-09-firebase-plugin-for-codex)September 29, 2026[![](/logos/firebase/firebase-symbol.png)![](/logos/firebase/firebase-symbol.png)Firebase](/topic/firebase)[![](/logos/tags/google-cloud-symbol-light.svg)![](/logos/tags/google-cloud-symbol-dark.svg)Google Cloud](/topic/google-cloud)[#AI & Agents](/topic/ai)[+1](/post/firebase-2026-09-firebase-plugin-for-codex)

### [The Firebase plugin is now available in Codex: Web Architecture & Implementation Guide](/post/firebase-2026-09-firebase-plugin-for-codex)

Alex Patterson's hands-on web engineering breakdown of "The Firebase plugin is now available in Codex" (2026-09-28). Learn how to wire up Firebase, Google Cloud, Web Dev, AI in production web apps.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)[![Alex Patterson and AJ the Cat presenting the Dual-Plane Agent-Ready Web Stack with WebMCP and Streamable HTTP MCP](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/dd8b89a42ee37457891b58d39c6273a31ac013e4-1376x768.jpg?w=1376&q=82&fit=max&auto=format)](/post/agent-ready-web-architecture-webmcp-streamable-mcp-llms-txt)September 22, 2026[![](/logos/tags/cloudflare-symbol-light.svg)![](/logos/tags/cloudflare-symbol-dark.svg)Cloudflare](/topic/cloudflare)[![](/logos/tags/html-symbol-light.svg)![](/logos/tags/html-symbol-dark.svg)HTML](/topic/html)[![](/logos/tags/mcp-symbol-light.svg)![](/logos/tags/mcp-symbol-dark.svg)MCP](/topic/mcp)[+3](/post/agent-ready-web-architecture-webmcp-streamable-mcp-llms-txt)

### [Architecting the Agent-Ready Web: Combining Client-Side WebMCP, Streamable HTTP MCP, and RFC 9727 Discovery](/post/agent-ready-web-architecture-webmcp-streamable-mcp-llms-txt)

A complete walkthrough of CodingCat.dev's dual-plane Agent-Ready Web Architecture: pairing client-side W3C WebMCP tools (document.modelContext and declarative HTML forms) with edge Streamable HTTP MCP endpoints, RFC 9727 API catalogs, and Markdown content negotiation.

[![Alex Patterson](https://cdn.sanity.io/media-libraries/mlttp0BZbCpV/images/a606dfaa381aab08ddbe16a33fe1d3e1fb37c927-400x400.jpg?w=96&h=96&q=82&fit=max&auto=format)Alex Patterson](/author/alex-patterson)

No matching blog posts found for this filter.

Try clearing the filter above to browse the full feed.

Loading more blog posts...✓ All blog posts loaded