# William Oliveira > Notes about everything ## Blog posts - [How Companies Are Replacing AI Coding Subscriptions with Internal Developer Platforms](https://woliveiras.com/posts/how-companies-are-replacing-ai-coding-subscriptions-with-internal-developer-platforms/): Companies are unbundling coding assistants into internal agents, gateways, private inference, tools, and governance. Real deployments show why control often moves in-house before frontier inference does. - [How to Write Navigable Code for Coding Agents](https://woliveiras.com/posts/writing-code-coding-agents-can-navigate/): Navigable code does not make coding agents more correct, but it can reduce tokens and repeated file visits. This guide turns evidence about names, boundaries, and hidden dependencies into practical coding and review rules. - [How to Build a Reliable Coding-Agent Harness](https://woliveiras.com/posts/how-to-build-a-reliable-coding-agent-harness/): A reliable harness must optimize the repository for agent navigation and move verification from natural-language instructions into executable, independent, and measurable mechanisms. - [What Happens When You Run uv run fastapi dev](https://woliveiras.com/posts/what-happens-when-you-run-uv-run-fastapi-dev/): A guided tour of everything that happens behind a single command: how uv prepares the environment, how the FastAPI CLI finds your app, why Uvicorn is required, what ASGI is, and how auto-reload actually works. - [Your Code Looks Professional. Can You Explain It?](https://woliveiras.com/posts/your-code-looks-professional-can-you-explain-it/): AI-assisted programming broke the link between how sophisticated software looks and how well its authors understand it. A practical test for spotting comprehension debt in your own work. - [A Hype Check on Loop Engineering](https://woliveiras.com/posts/hype-check-on-loop-engineering/): Loop engineering is the new phrase in AI coding circles. Here is what is real, what is exaggerated, and how senior engineers should think about agent loops. - [Introducing Geremmyas: Spec-Driven Development Harness for AI Coding Assistants](https://woliveiras.com/posts/introducing-geremmyas-spec-driven-development-ai-assistants/): Geremmyas is a CLI harness for installing repeatable AI coding assistant workflows, project rules, skills, guardrails, and a dashboard for tracking specs and tasks. - [What I Found and Had to Fix After Joining a Vibecoded Project](https://woliveiras.com/posts/what-a-senior-engineer-found-in-a-vibecoded-app/): A Design expert built a full healthcare platform with Cursor in weeks. Impressive. Then I read the code before running a single command, and found 4 critical security vulnerabilities, broken RLS, and a rate limiter that did nothing. - [Using Sentry MCP to Identify and Prioritize High-Impact Issues](https://woliveiras.com/posts/using-sentry-mcp-to-identify-and-prioritize-high-impact-issues/): How I used the Sentry Model Context Protocol (MCP) integration with a data-driven scoring framework to cut Sentry noise by 90-96% and fix what actually matters first. - [On-Device LLM Challenges in Android Development with LiteRT-LM](https://woliveiras.com/posts/on-device-llm-challenges-android-development-litert-lm/): What I've learned by integrating Gemma4 and Qwen3 models into a Kotlin wordle-like game with Jetpack Compose. - [Code Review in the AI Era: We Need to Change](https://woliveiras.com/posts/code-review-in-the-ai-era-we-need-to-change/): AI agents are reshaping how we write code, but our engineering practices haven't caught up. A deep look at the challenges of code review, the growing gap between code produced and code understood, and why none of the current solutions feel complete yet. - [Open-Source Licenses and Data Sovereignty: What You Need to Know](https://woliveiras.com/posts/open-source-licenses-and-data-sovereignty/): Not all open-source licenses are equal when it comes to data sovereignty. Learn which license types can create jurisdictional risks and how to evaluate them for your infrastructure. - [European Alternatives to US Tech: A Practical Guide](https://woliveiras.com/posts/european-alternatives-to-us-tech-a-practical-guide/): A curated list of European cloud providers, AI services, and digital tools that offer solid alternatives to dominant US platforms. - [How Experienced Developers Actually Use AI Agents in Their Daily Work](https://woliveiras.com/posts/how-experienced-developers-actually-use-ai-agents-in-their-daily-work/): A data-driven look at how professional developers really use AI coding agents like GitHub Copilot and Claude. Spoiler: they don't vibe code. - [The Myth of Perfect Code: Pragmatism in Maintainability](https://woliveiras.com/posts/the-myth-of-perfect-code/): Learn why the relentless pursuit of 'clean code' and a 'perfect architecture' can be counterproductive in real-world software development—and how focusing on practical maintainability is the key to sustainable projects. - [React Interview Prep: Examples, Anti-Patterns, and Improvements](https://woliveiras.com/posts/react-interview-prep/): Practical examples of common React anti-patterns, explanations, and improved solutions to prepare for interviews. - [How to Do Effective Pair Programming](https://woliveiras.com/posts/how-to-do-effective-pair-programming/): A practical guide to pairing with purpose: roles, setup, communication, and habits that make pair programming enjoyable. - [When to Fetch on Server vs Client](https://woliveiras.com/posts/when-to-fetch-on-server-vs-client/): A practical guide to deciding where data fetching belongs: server components, SSR, SSG/ISR, or client-side hooks. - [Caching Considerations and Stale-While-Revalidate](https://woliveiras.com/posts/caching-considerations-and-stale-while-revalidate/): How to think about caching for SSR, SSG/ISR, and client fetches, and how stale-while-revalidate keeps pages fast and fresh. - [Difference Between SSR, SSG, CSR, and ISR](https://woliveiras.com/posts/difference-between-ssr-ssg-csr-and-isr/): A conceptual look at the rendering models behind modern web apps—what SSR, SSG, CSR, and ISR are, how they work, and the trade-offs behind each. - [How to Clone Pi OS from a microSD to an NVMe SSD](https://woliveiras.com/posts/how-to-clone-pi-os-from-microsd-to-nvme-ssd/): A concise guide for experienced users on migrating a Raspberry Pi OS installation from a microSD card to a high-performance NVMe SSD using Klon (a modern rpi-clone-inspired tool). - [Building a Local LLM Server with Raspberry Pi 5, Ollama, Tailscale and Chatbox](https://woliveiras.com/posts/building-local-llm-server-with-raspberry-pi-ollama-tailscale/): A complete and budget-friendly way to build a private, low-cost, always-available LLM server with a Raspberry Pi 5, Ollama inference engine, Tailscale for secure remote access, and Chatbox as a desktop/mobile client. - [Building Multi-Agent Systems: Architectures, Coordination Protocols, and Orchestration Patterns](https://woliveiras.com/posts/building-multi-agent-systems-architectures-coordination-protocols-orchestration/): A deep technical guide to designing, orchestrating, and scaling multi-agent systems using LLM-based agents, coordination protocols, and modern AI engineering patterns. - [Modern Routing Algorithms: From Shortest-Path Fundamentals to Graph Neural Networks in Production](https://woliveiras.com/posts/routing-algorithms-from-pathfinding-to-graph-neural-networks/): A technical tour of modern routing systems, connecting Dijkstra and A* to Contraction Hierarchies, multimodal routing, and graph neural networks for large-scale ETA prediction in systems like Google Maps, Waze, and CityMapper. - [Running LLMs on Single Board Computers: Raspberry Pi, Orange Pi, and Radxa](https://woliveiras.com/posts/running-llms-on-single-board-computers-raspberry-pi-orange-pi-and-radxa/): A comprehensive guide to running Large Language Models locally on affordable single-board computers, exploring hardware options, performance benchmarks, and practical setup for private and cost-effective AI. - [How to Implement Multiple LLM Providers in AI Applications Using the Factory Pattern](https://woliveiras.com/posts/implementing-factory-pattern-for-multiple-llm-providers/): A deep dive into building a scalable, environment-driven architecture for integrating multiple LLM providers using the Factory pattern. Learn how to abstract provider differences, manage configurations, and build production-ready AI applications that can switch between OpenAI, Anthropic, Google Gemini, and local models without code changes. - [Building a Personal Media Server with the *ARR Stack and Jellyfin: Breaking Free from Streaming Services](https://woliveiras.com/posts/building-personal-media-server-with-arr-stack-jellyfin/): A comprehensive guide on how I built my own automated media server using Radarr, Sonarr, Prowlarr, Jellyfin, and other open-source tools to create a personal streaming platform and reduce dependency on commercial streaming services. - [What are the advantages and disadvantages of using monorepos in your projects?](https://woliveiras.com/posts/advantages-and-disadvantages-of-using-monorepos/): An in-depth analysis of the advantages and disadvantages of using monorepos in software development, exploring their impact on collaboration, code sharing, dependency management, and scalability. - [Introduction to Monorepos: Managing Large-Scale Codebases Efficiently](https://woliveiras.com/posts/introduction-to-monorepos-managing-large-scale-codebases-efficiently/): An introduction to monorepos, exploring their history, benefits, and practical applications in managing large-scale codebases efficiently. - [Migrating from NPM or Yarn to PNPM](https://woliveiras.com/posts/migrating-from-npm-or-yarn-to-pnpm/): An in-depth guide on why and how to transition from NPM or Yarn to PNPM, highlighting performance benefits, command differences, migration strategies, and compatibility considerations. - [Dependency Management Challenges in the JavaScript Ecosystem](https://woliveiras.com/posts/dependency-management-challenges-in-the-javascript-ecosystem/): Exploring the complexities of dependency management in JavaScript, including version conflicts, security vulnerabilities, and best practices for maintaining healthy projects. - [Understanding the Naming Conventions of Large Language Models](https://woliveiras.com/posts/understanding-the-naming-conventions-of-large-language-models/): A guide to deciphering model names for better AI Engineering decisions - [Starting a Frontend Monorepo: A Practical Tutorial with Nx, Vite, Biome.js, and React](https://woliveiras.com/posts/starting-a-frontend-monorepo-practical-tutorial-with-nx-vite-biome-js-and-react/): A complete, step-by-step tutorial on how to build a production-ready frontend monorepo. Learn how to set up a scalable architecture using PNPM, Nx, Vite, Vitest, React, TypeScript, Emotion, and Biome.js for a streamlined and efficient development workflow. - [A Beginner's Guide to Controlling LLM Behavior with Inference Parameters](https://woliveiras.com/posts/beginners-guide-to-controlling-llm-behavior-inference-parameters/): Learn how to effectively control the behavior of Large Language Models (LLMs) using inference parameters like temperature, top-p, and more. This guide provides practical examples with Python and LangChain. - [The Agentic Prompt: A Blueprint for Crafting High-Performance LLM Instructions](https://woliveiras.com/posts/the-agentic-prompt-blueprint-for-high-performance-llm-instructions/): Learn how to create precise, structured prompts for AI agents using the CO-STAR framework, enhancing reliability and performance in LLM applications. - [The StateAct Pattern for Robust and Long-Running Agents](https://woliveiras.com/posts/the-stateact-pattern-for-robust-and-long-running-agents/): Exploring the StateAct pattern to enhance AI agents' robustness and long-term task management. Learn how to implement this pattern using LangGraph and Ollama, ensuring agents maintain focus and clarity in complex tasks. - [Beyond Solo Agents: The Power of Collaborative AI Teams Using CrewAI](https://woliveiras.com/posts/beyond-solo-agents-the-power-of-collaborative-ai-teams-using-crewai/): From solo problem-solvers to orchestrated teams. This guide explores the 'why' and 'how' of multi-agent architectures, demonstrating how a team of specialized AI agents can solve complex problems more effectively than a single agent ever could. - [From Linear AI Agents to Strategic Planners: Exploring Tree of Thoughts (ToT) and Language Agent Tree Search (LATS)](https://woliveiras.com/posts/exploring-tree-of-thoughts-tot-and-language-agent-tree-search-lats/): A deep dive into advanced agentic frameworks like Tree of Thoughts (ToT) and Language Agent Tree Search (LATS) that enable AI agents to plan, explore, and self-correct. - [Level Up Your AI Agent: An Introduction to the Reflexion Framework](https://woliveiras.com/posts/introduction-to-the-reflexion-framework/): Go beyond basic agents. Discover how the Reflexion framework equips your AI agents with memory and the capacity to learn from their mistakes, enhancing their robustness and intelligence. - [Understanding the ReAct Framework for AI Agents](https://woliveiras.com/posts/understanding-the-react-framework-for-ai-agents/): An in-depth exploration of the ReAct framework, its components, and how it empowers AI agents to reason and act effectively. - [How to Connect an AI Agent to the SQL Database: understanding Text-to-SQL](https://woliveiras.com/posts/how-connect-an-ai-agent-to-sql-database/): A comprehensive guide on enabling your AI agent to access a SQL database for real-time information retrieval. - [How to Connect a Local AI Agent to the Internet](https://woliveiras.com/posts/how-connect-local-ai-agent-to-the-internet/): A comprehensive guide on enabling your local AI agent to access the internet for real-time information retrieval. - [How to Crack Pwnagotchi-Captured Handshakes](https://woliveiras.com/posts/how-to-crack-pwnagotchi-captured-handshakes/): A guide to cracking handshakes captured by Pwnagotchi - [How to backup the pwnagotchi settings and plugins](https://woliveiras.com/posts/how-to-backup-pwnagotchi/): A guide to the ways to backup Pwnagotchi settings and plugins - [How to check if your pwnagotchi is working](https://woliveiras.com/posts/how-to-check-pwnagotchi-is-working/): A guide to the ways to check if Pwnagotchi is working - [How to restart Pwnagotchi](https://woliveiras.com/posts/how-to-restart-pwnagotchi/): A guide to the ways to restart Pwnagotchi - [How to Chat with Your GitHub Repository: A Guide to Local RAG with Ollama and LangChain](https://woliveiras.com/posts/how-to-chat-with-github-repository-a-guide-to-local-rag-with-ollama-and-langchain/): Creating an AI Agent to read your GitHub repository using Ollama and LangChain to answer questions about its code structure, documentation, and more. - [Embracing the Learning Journey: A Guide for New Software Engineers](https://woliveiras.com/posts/embracing-the-learning-journey-a-guide-for-new-software-engineers/): A comprehensive guide for new software engineers to navigate their learning journey and embrace continuous growth. - [What to do after installing Pwnagotchi](https://woliveiras.com/posts/what-to-do-after-installing-pwnagotchi/): A guide to configure Pwnagotchi after installation - [Building an AI Agent for PDF Question Answering with LangChain and Ollama](https://woliveiras.com/posts/building-ai-agent-pdf-question-answering-langchain-ollama/): Learn how to build an AI agent that can answer questions from PDF documents using LangChain and Ollama. Step-by-step guide with code examples. - [Distinguishing Generative AI from Agentic AI](https://woliveiras.com/posts/distinguishing-generative-ai-from-agentic-ai/): This article explores the key differences between generative AI and agentic AI, providing insights into their unique characteristics and applications. - [Deconstructing AI Agents: A Practical Guide for Understanding it](https://woliveiras.com/posts/deconstructing-ai-agents-a-practical-guide-for-understanding-it/): Explore the anatomy of AI Agents, their execution flow, and the architecture needed to run them effectively. This guide provides a practical understanding of AI Agents beyond the hype. - [What is a DAG? Understanding the Engine Behind Modern Data and AI](https://woliveiras.com/posts/what-is-a-dag-understanding-the-engine-behind-modern-data-and-ai/): Exploring the concept of Directed Acyclic Graphs (DAGs) and their significance in data engineering and AI applications. Learn how DAGs help manage complex workflows efficiently. - [LangChain vs. LangGraph: From Simple Chains to Complex AI Agents](https://woliveiras.com/posts/langchain-vs-langgraph-from-simple-chains-to-complex-ai-agents/): Explore the differences between LangChain and LangGraph, two powerful frameworks for building AI applications. Learn when to use each and see code examples in action. - [Run your own Copilot-Style AI in VS Code: A guide to use local LLMs to coding](https://woliveiras.com/posts/run-copilot-style-assistant-locally-llm-vs-code/): Learn how to set up a Copilot-style AI assistant in Visual Studio Code using local LLMs. This guide covers the necessary tools, configurations, and tips for effective coding assistance. - [How to Use a LLM for Free: LM Studio Guide](https://woliveiras.com/posts/how-to-use-llm-for-free-lm-studio-guide/): Learn how to leverage LM Studio for free local LLM use, ensuring privacy and customization. - [Understanding the RAG Pattern with LLMs](https://woliveiras.com/posts/understanding-rag-llm/): Discover what Retrieval-Augmented Generation (RAG) is and how it improves Large Language Model (LLM) responses by connecting them to external knowledge, reducing hallucinations and providing up-to-date information. - [How to schedule workflows in GitHub Actions](https://woliveiras.com/posts/how-to-schedule-workflows-github-actions/): Scheduling workflows in GitHub Actions is easy with the `schedule` event and cron expressions. Learn how to set up scheduled jobs. - [How to cache NPM modules to speed up the GitHub Actions](https://woliveiras.com/posts/how-to-cache-npm-modules-speed-up-github-actions/): Learn how to cache NPM modules in GitHub Actions to reduce build times and improve CI efficiency. Optimize your workflow with simple and effective steps. - [How to run linters in GitHub Actions for pull requests](https://woliveiras.com/posts/how-to-run-linters-github-actions-pull-requests/): Ensure code quality with linters in GitHub Actions for pull requests. Automating linting on opened, reopened, or synchronized PRs. - [How to secure a software project with GitHub Actions: dependency vulnerability scanning](https://woliveiras.com/posts/how-to-secure-project-github-actions-dependency-vulnerability-scanning/): Securing our software by automating dependency vulnerability scanning with GitHub Actions. - [How to schedule Dependabot checks to keep our dependencies updated](https://woliveiras.com/posts/how-to-schedule-dependabot-to-keep-dependencies-updated/): Scheduling Dependabot checks to keep GitHub Actions, NPM and Docker updated - [What an easy job it was to create a new blog with GitHub Pages, GitHub Actions, and GitHub Codespaces](https://woliveiras.com/posts/new-blog-with-github-actions-github-pages-and-astro/): I got surprised by how easy it was to create a new blog with Astro, GitHub Pages, GitHub Actions, and GitHub Codespaces ## Series - [Hands-on Coding Assistants](https://woliveiras.com/hands-on-coding-assistants) - [Observability for AI Agents](https://woliveiras.com/observability-ai-agents)