<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Gabriel Caiana — Senior Software Engineer · Tech Lead · Applied AI</title><description>Gabriel Caiana is a Senior Software Engineer and Tech Lead at Petlove, working on applied AI (agents, LangGraph, evals) on top of a strong frontend foundation in Vue, Nuxt, and TypeScript.</description><link>https://gabrielcaiana.com/</link><item><title>Amazon Bedrock in practice: AI as part of the architecture, not as an external dependency</title><link>https://gabrielcaiana.com/blog/amazon-bedrock-in-practice-ai-as-part-of-the-architecture-not-as-an-external-dependency/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/amazon-bedrock-in-practice-ai-as-part-of-the-architecture-not-as-an-external-dependency/</guid><description>How I moved from OpenAI to Amazon Bedrock: IAM auth, consolidated billing, Haiku vs Sonnet by task, and real trade-offs of running AI on AWS.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Persistent Storage in Nuxt with Unstorage</title><link>https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/</guid><description>Learn how to use Unstorage on Nuxt to persist server-side data with Redis and Cloudflare KV. Complete guide with practical storage examples in Nuxt 3.</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Modular Architecture with Nuxt Layers in Vue Projects</title><link>https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/</guid><description>Discover how Nuxt Layers organizes Vue.js projects with modular architecture. Create scalable and maintainable front-end applications with backend concepts.</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>HTTP Caching and CDN with Cloudflare - Complete Guide</title><link>https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/</guid><description>Learn how to implement HTTP caching with the Cloudflare CDN to improve web application performance, reduce server costs and make your pages load faster.</description><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>How to store data in the browser without making a mess</title><link>https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/</guid><description>Understand when to use localStorage, sessionStorage and IndexedDB. Practical guide with e-commerce examples to store data in the browser in an organized way.</description><pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>How Core Web Vitals works</title><link>https://gabrielcaiana.com/blog/how-core-web-vitals-works/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/how-core-web-vitals-works/</guid><description>Understand Google&apos;s Core Web Vitals: LCP, FID and CLS. Learn how these metrics affect rankings and how to optimize the user experience on the website.</description><pubDate>Sat, 24 Feb 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>How to Preserve Component State Between Routes with KeepAlive in Nuxt 3</title><link>https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/</guid><description>Learn how to use KeepAlive in Nuxt 3 to preserve the state of components between route changes and ensure a more fluid and performant experience.</description><pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Components for Debug and Rendering with DevOnly and ClientOnly in Nuxt 3</title><link>https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/</guid><description>Learn how to use DevOnly and ClientOnly in Nuxt 3 for conditional rendering, safe debugging in development, and more efficient and optimized production builds.</description><pubDate>Sat, 31 Aug 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Composable Abstraction Layer: the missing pattern between Pinia and its Vue components</title><link>https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/</guid><description>Learn how the Composable Abstraction Layer eliminates the coupling between Pinia and Vue 3, centralizing logic, side-effects and ensuring testability per layer.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Building a Robust Architecture</title><link>https://gabrielcaiana.com/blog/building-a-robust-architecture/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/building-a-robust-architecture/</guid><description>Explore the pillars of a robust software architecture: configurability, extensibility, and ease of installation for scalable, flexible systems.</description><pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Decision Models in Practice: When Picking the LLM per Message Pays Off (and When the Mid-Tier Model Is Enough)</title><link>https://gabrielcaiana.com/blog/decision-models-in-practice-when-picking-the-llm-per-message-pays-off-and-when-the-mid-tier-model-is-enough/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/decision-models-in-practice-when-picking-the-llm-per-message-pays-off-and-when-the-mid-tier-model-is-enough/</guid><description>I had Microsoft-Decision-1 pick the subagent and LLM in a post-sales chatbot: harness, calibration, cost guard, and what 1,000 synthetic conversations showed.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Understanding Nielsen&apos;s 10 Heuristics</title><link>https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/</guid><description>Discover Nielsen&apos;s 10 Heuristics for interface design. Jakob Nielsen&apos;s principles created in 1994 that guide usability and good UX practices.</description><pubDate>Fri, 08 Jul 2022 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Exploring Functional Programming in JavaScript</title><link>https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/</guid><description>Learn the fundamentals of Functional Programming in JavaScript: first-class functions, immutability, composition and the map, filter and reduce methods.</description><pubDate>Sat, 30 Mar 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>From Base Model to ChatGPT: SFT, Tools and Reinforcement Learning</title><link>https://gabrielcaiana.com/blog/from-base-model-to-chatgpt-sft-tools-and-reinforcement-learning/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/from-base-model-to-chatgpt-sft-tools-and-reinforcement-learning/</guid><description>How an LLM base model becomes ChatGPT: supervised fine-tuning, tool use, hallucination reduction and reinforcement learning explained clearly and in depth.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>From Common Crawl to the Base Model: How an LLM Learns Language</title><link>https://gabrielcaiana.com/blog/from-common-crawl-to-the-base-model-how-an-llm-learns-language/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/from-common-crawl-to-the-base-model-how-an-llm-learns-language/</guid><description>How an LLM goes from raw web data to the base model: the Transformer, Common Crawl, FineWeb, tokenization and pre-training explained clearly, no hype.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>How We Reorganized an E-commerce Checkout Without Stopping Sales</title><link>https://gabrielcaiana.com/blog/how-we-reorganized-an-e-commerce-checkout-without-stopping-sales/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/how-we-reorganized-an-e-commerce-checkout-without-stopping-sales/</guid><description>How we reorganized a major e-commerce checkout in production with Nuxt Layers, the CAL pattern, and automated linting rules — without stopping a single sale.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Integration between GitHub and Discord for Pull Request Notifications</title><link>https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/</guid><description>Configure GitHub and Discord for automatic, real-time Pull Request notifications. Complete guide with step-by-step GitHub Actions for your team.</description><pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>JavaScript in 2025: Complete Guide to the Most Popular Methods and Operators</title><link>https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/</guid><description>Complete guide to the most searched JavaScript methods in 2025: forEach, map, filter, reduce, split, push, splice and the ternary operator, with examples.</description><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>LangGraph Only for the Handoff: A Support Chatbot Where a Decision Model Picks Who Answers</title><link>https://gabrielcaiana.com/blog/langgraph-only-for-the-handoff-a-support-chatbot-where-a-decision-model-picks-who-answers/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/langgraph-only-for-the-handoff-a-support-chatbot-where-a-decision-model-picks-who-answers/</guid><description>A post-sales chatbot built with LangChain and LangGraph where a decision model picks the subagent per message: architecture, code, fallback, A/B and failures.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Metrics to Measure Software Performance</title><link>https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/</guid><description>Understand the main software performance metrics: latency, throughput and scalability. How to monitor and optimize systems for high availability.</description><pubDate>Thu, 11 Jan 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>NestJS monorepo with pnpm workspaces: how I structured the dev experience for multiple services</title><link>https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/</guid><description>How I structured a NestJS monorepo with pnpm workspaces for multiple services: shared packages, hot reload in dev and optimized build in production.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Nuxt 4: New Directory Structure and Migration Guide</title><link>https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/</guid><description>Discover the new Nuxt 4 directory structure with the app/ directory and learn how to migrate your Nuxt 3 projects safely and without breaking anything.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Nuxt 4: TypeScript and Type Safety - Complete Guide</title><link>https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/</guid><description>Explore TypeScript in Nuxt 4: auto-generated types, native type safety, and intelligent inference for safer, more productive Vue.js development.</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>How to add webpack package analysis to your nuxt project</title><link>https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/</guid><description>Learn how to configure webpack bundle analysis in Nuxt with an interactive treemap to visualize and optimize your application&apos;s bundle size.</description><pubDate>Sun, 21 Jan 2024 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>What I have learned from building a product with Spec-Driven Development</title><link>https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/</guid><description>What I learned building a product with Spec-Driven Development: How structured specs eliminate technical debt using AI as a development peer.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>What are micro frontends</title><link>https://gabrielcaiana.com/blog/what-are-micro-frontends/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/what-are-micro-frontends/</guid><description>What Micro Frontends are: the architectural pattern that brings microservices to the frontend for independent teams, faster deployments and scalability.</description><pubDate>Fri, 08 Jul 2022 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Optimizing Indexing with Astro</title><link>https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/</guid><description>Discover how Astro improves site indexing with static rendering, zero JavaScript and SEO techniques to maximize visibility in search engines.</description><pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>React is a View Library, Not an Architecture</title><link>https://gabrielcaiana.com/blog/react-is-a-view-library-not-an-architecture/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/react-is-a-view-library-not-an-architecture/</guid><description>Your component started innocent, but today it does everything. Learn why React is a View library, not an architecture, and how to separate domain from UI.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Reactivity: SolidJS vs React vs Vue</title><link>https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/</guid><description>Compare the reactivity systems of React, Vue and SolidJS: re-rendering, proxies and signals. Understand the differences and the impact on front-end performance.</description><pubDate>Fri, 06 Jun 2025 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item><item><title>Vertical Slices in the Frontend: When the Folder Tells You What the Product Does</title><link>https://gabrielcaiana.com/blog/vertical-slices-in-the-frontend-when-the-folder-tells-you-what-the-product-does/</link><guid isPermaLink="true">https://gabrielcaiana.com/blog/vertical-slices-in-the-frontend-when-the-folder-tells-you-what-the-product-does/</guid><description>How to structure a React SPA in vertical slices by domain: public API per slice, data from route loaders, and an architecture test that blocks shortcuts in CI.</description><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate><author>Gabriel Caiana</author></item></channel></rss>