<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Allan Adan — Writing</title><description>Notes on AI, automation, LLMs, and building backend systems.</description><link>https://aadan.app/</link><item><title>How to Write Academically: Principles for Clear and Rigorous Prose</title><link>https://aadan.app/blog/how-to-academic-writing/</link><guid isPermaLink="true">https://aadan.app/blog/how-to-academic-writing/</guid><description>A practical guide to academic writing — constructing a thesis, structuring an argument, maintaining a formal register, and revising for clarity and precision.</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><category>writing</category><category>academic</category><category>how-to</category></item><item><title>How to Build a Fast Website with Astro: A Practical Tutorial</title><link>https://aadan.app/blog/how-to-build-a-site-with-astro/</link><guid isPermaLink="true">https://aadan.app/blog/how-to-build-a-site-with-astro/</guid><description>A step-by-step introduction to Astro — installing the framework, understanding its structure, creating pages and content collections, and deploying a fast, static site.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>astro</category><category>web development</category><category>how-to</category><category>guide</category></item><item><title>How to Automate Your Workflows with Make: A Beginner&apos;s Tutorial</title><link>https://aadan.app/blog/how-to-automate-with-make/</link><guid isPermaLink="true">https://aadan.app/blog/how-to-automate-with-make/</guid><description>An introduction to Make (formerly Integromat) — how scenarios, modules, triggers, and routers work, and how to build a reliable automation without writing code.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>make</category><category>automation</category><category>no-code</category><category>how-to</category></item><item><title>How to Build Your First n8n Workflow: A Practical Tutorial</title><link>https://aadan.app/blog/how-to-build-your-first-n8n-workflow/</link><guid isPermaLink="true">https://aadan.app/blog/how-to-build-your-first-n8n-workflow/</guid><description>A structured introduction to n8n — nodes, triggers, connections, and expressions — with guidance on error handling and the choice between self-hosting and the cloud.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><category>n8n</category><category>automation</category><category>how-to</category><category>guide</category></item><item><title>How to Write Posts: The Complete Markdown Guide</title><link>https://aadan.app/blog/how-to-write-posts-markdown-guide/</link><guid isPermaLink="true">https://aadan.app/blog/how-to-write-posts-markdown-guide/</guid><description>Every formatting feature you can use in a blog post here — headings, lists, links, images, code, tables, and more — with the exact syntax and how it renders.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>writing</category><category>markdown</category><category>guide</category></item><item><title>Beyond Chatbots: How LLMs Are Rewiring Business Automation</title><link>https://aadan.app/blog/llms-are-rewiring-business-automation/</link><guid isPermaLink="true">https://aadan.app/blog/llms-are-rewiring-business-automation/</guid><description>Large language models have moved from answering questions to making decisions inside automated workflows. This article examines what is changing in business automation and why.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>automation</category><category>LLMs</category><category>n8n</category><category>trends</category></item><item><title>Structured Outputs Are the Real Unlock for LLM Applications</title><link>https://aadan.app/blog/structured-outputs-llm-apps/</link><guid isPermaLink="true">https://aadan.app/blog/structured-outputs-llm-apps/</guid><description>The distinction between an unreliable AI demonstration and a dependable system is rarely the model itself, but whether it is required to return structured data that programs can act upon.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>LLMs</category><category>engineering</category></item><item><title>Offline-First Is Not a Constraint but a Feature</title><link>https://aadan.app/blog/offline-first-is-a-feature/</link><guid isPermaLink="true">https://aadan.app/blog/offline-first-is-a-feature/</guid><description>Building applications that function without a network connection appears to be additional work. In practice, it imposes the architecture that makes software fast, resilient, and trustworthy.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>mobile</category><category>Flutter</category><category>engineering</category></item><item><title>RSS Explained: A Quieter Way to Follow the Writing You Care About</title><link>https://aadan.app/blog/what-is-rss/</link><guid isPermaLink="true">https://aadan.app/blog/what-is-rss/</guid><description>RSS lets you follow blogs directly, without algorithms or email. This article explains what RSS is, why it endures, and how to subscribe to a feed — including this one.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>RSS</category><category>web</category><category>writing</category></item><item><title>How to Document a Codebase So Others Can Maintain It</title><link>https://aadan.app/blog/documenting-a-codebase/</link><guid isPermaLink="true">https://aadan.app/blog/documenting-a-codebase/</guid><description>A practical guide to documenting a codebase for maintainability: layer your docs, write a useful README, explain the why in code, and keep documentation current.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>engineering</category><category>writing</category><category>documentation</category></item><item><title>Technical Writing for Engineers: Clarity Over Cleverness</title><link>https://aadan.app/blog/technical-writing-for-engineers/</link><guid isPermaLink="true">https://aadan.app/blog/technical-writing-for-engineers/</guid><description>Principles of technical writing for engineers: prefer clarity over cleverness, write for your reader, use plain words and short sentences, and revise ruthlessly.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>writing</category><category>engineering</category></item><item><title>Writing a Developer Portfolio That Gets Interviews</title><link>https://aadan.app/blog/developer-portfolio-interviews/</link><guid isPermaLink="true">https://aadan.app/blog/developer-portfolio-interviews/</guid><description>How to write a developer portfolio that earns interviews: lead with outcomes, describe projects with audience-aware clarity, and demonstrate engineering judgment.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>career</category><category>writing</category></item><item><title>Why Offline-First Apps Need Stable IDs</title><link>https://aadan.app/blog/offline-first-stable-ids/</link><guid isPermaLink="true">https://aadan.app/blog/offline-first-stable-ids/</guid><description>An explanation of why offline-first and local-first apps must assign stable, client-generated identifiers, and how doing so prevents duplicates and merge conflicts.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>mobile</category><category>Flutter</category><category>engineering</category></item><item><title>Local-First Sync: Strategies for Conflict Resolution</title><link>https://aadan.app/blog/conflict-resolution-sync/</link><guid isPermaLink="true">https://aadan.app/blog/conflict-resolution-sync/</guid><description>A precise survey of conflict-resolution strategies for local-first sync, comparing last-write-wins, operational transforms, and CRDTs for offline apps.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>mobile</category><category>engineering</category><category>Flutter</category></item><item><title>Web Performance Basics: Core Web Vitals</title><link>https://aadan.app/blog/core-web-vitals/</link><guid isPermaLink="true">https://aadan.app/blog/core-web-vitals/</guid><description>A practical introduction to Core Web Vitals — LCP, INP, and CLS — explaining what each metric measures, why it matters for SEO, and how to improve it.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>web development</category><category>SEO</category><category>performance</category></item><item><title>Designing Human-in-the-Loop Approval Steps</title><link>https://aadan.app/blog/human-in-the-loop/</link><guid isPermaLink="true">https://aadan.app/blog/human-in-the-loop/</guid><description>A practical guide to inserting human approval into automated and AI-driven workflows: where to place gates, how to pause execution, and how to fail safely.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><category>automation</category><category>AI</category><category>engineering</category></item><item><title>An Introduction to Serverless Functions</title><link>https://aadan.app/blog/intro-to-serverless/</link><guid isPermaLink="true">https://aadan.app/blog/intro-to-serverless/</guid><description>What serverless functions are, how invocation and cold starts work, where they fit, and the constraints around state and execution time you must design around.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><category>web development</category><category>engineering</category></item><item><title>Self-Hosting n8n: What You Gain and What You Manage</title><link>https://aadan.app/blog/self-hosting-n8n/</link><guid isPermaLink="true">https://aadan.app/blog/self-hosting-n8n/</guid><description>An examination of the trade-offs in self-hosting n8n: the control and data ownership you gain against the operational responsibilities you assume.</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><category>n8n</category><category>automation</category><category>self-hosting</category></item><item><title>Static Sites vs. Servers: Picking the Right Architecture</title><link>https://aadan.app/blog/static-vs-servers/</link><guid isPermaLink="true">https://aadan.app/blog/static-vs-servers/</guid><description>A decision guide for choosing between static generation, server rendering, and on-demand functions, with practical guidance from Astro and Vercel deployments.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>web development</category><category>engineering</category></item><item><title>Choosing Between n8n, Make, and Zapier</title><link>https://aadan.app/blog/n8n-make-zapier/</link><guid isPermaLink="true">https://aadan.app/blog/n8n-make-zapier/</guid><description>A pragmatic comparison of n8n, Make, and Zapier across control, complexity, cost, and hosting, with guidance on matching each platform to the right use case.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate><category>automation</category><category>n8n</category><category>make</category></item><item><title>Building a Centralized Error Handler for Your Automations</title><link>https://aadan.app/blog/centralized-error-handler/</link><guid isPermaLink="true">https://aadan.app/blog/centralized-error-handler/</guid><description>A practical guide to designing a single, reusable error-handling workflow that captures failures across every automation, alerts the right people, and aids recovery.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><category>automation</category><category>n8n</category><category>reliability</category></item><item><title>Caching: The Fastest Code Is Code You Do Not Run</title><link>https://aadan.app/blog/caching-basics/</link><guid isPermaLink="true">https://aadan.app/blog/caching-basics/</guid><description>A foundational guide to caching: where caches live, how HTTP caching works with Cache-Control and ETags, invalidation strategies, and common pitfalls.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><category>backend</category><category>performance</category><category>engineering</category></item><item><title>Connecting AI to Tools: An Introduction to Function Calling</title><link>https://aadan.app/blog/function-calling-intro/</link><guid isPermaLink="true">https://aadan.app/blog/function-calling-intro/</guid><description>An engineer&apos;s introduction to function calling: how language models invoke external tools through structured schemas, and how to design the loop safely.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><category>AI</category><category>LLMs</category><category>engineering</category></item><item><title>The Repository-Service Pattern, Explained Simply</title><link>https://aadan.app/blog/repository-service-pattern/</link><guid isPermaLink="true">https://aadan.app/blog/repository-service-pattern/</guid><description>A practical guide to the repository-service pattern in Laravel: how repositories isolate data access, services hold business logic, and why the split pays off.</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>backend</category><category>architecture</category><category>laravel</category></item><item><title>When Not to Use an LLM</title><link>https://aadan.app/blog/when-not-to-use-an-llm/</link><guid isPermaLink="true">https://aadan.app/blog/when-not-to-use-an-llm/</guid><description>A practical decision framework for backend engineers on when a large language model is the wrong tool, and which deterministic alternatives to reach for instead.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><category>AI</category><category>LLMs</category><category>engineering</category></item><item><title>Rate Limiting and Backoff: Being a Good API Citizen</title><link>https://aadan.app/blog/rate-limiting-and-backoff/</link><guid isPermaLink="true">https://aadan.app/blog/rate-limiting-and-backoff/</guid><description>How to respect API rate limits using HTTP status signals, exponential backoff with jitter, and queue-based throttling in automation tools such as n8n.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><category>engineering</category><category>APIs</category><category>automation</category></item><item><title>AI Agents vs. Workflows: Choosing the Right Tool</title><link>https://aadan.app/blog/ai-agents-vs-workflows/</link><guid isPermaLink="true">https://aadan.app/blog/ai-agents-vs-workflows/</guid><description>A decision framework for choosing between deterministic workflows and autonomous AI agents, weighing predictability, cost, and the nature of the task.</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><category>AI</category><category>automation</category><category>agents</category></item><item><title>Database Indexing for People Who Are Not DBAs</title><link>https://aadan.app/blog/database-indexing/</link><guid isPermaLink="true">https://aadan.app/blog/database-indexing/</guid><description>A clear introduction to database indexes for application developers: what an index is, when it helps, what it costs, and how to choose useful indexes.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><category>backend</category><category>databases</category></item><item><title>Idempotency: Why Your Automations Must Be Safe to Retry</title><link>https://aadan.app/blog/idempotency-explained/</link><guid isPermaLink="true">https://aadan.app/blog/idempotency-explained/</guid><description>An explanation of idempotency for automation engineers: why retries are inevitable, how HTTP methods classify it, and concrete patterns for safe-to-repeat operations.</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><category>engineering</category><category>automation</category><category>reliability</category></item><item><title>RAG Explained: Giving LLMs Access to Your Own Data</title><link>https://aadan.app/blog/what-is-rag/</link><guid isPermaLink="true">https://aadan.app/blog/what-is-rag/</guid><description>An overview of retrieval-augmented generation: how it grounds language models in your own documents, when to use it, and the components of a working pipeline.</description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><category>AI</category><category>LLMs</category><category>RAG</category></item><item><title>Understanding Environment Variables and Secrets</title><link>https://aadan.app/blog/env-vars-and-secrets/</link><guid isPermaLink="true">https://aadan.app/blog/env-vars-and-secrets/</guid><description>Why configuration belongs in the environment, how environment variables separate config from code, and the practices that keep secrets out of source control.</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><category>engineering</category><category>security</category></item><item><title>Webhooks Explained: The Backbone of Automation</title><link>https://aadan.app/blog/webhooks-explained/</link><guid isPermaLink="true">https://aadan.app/blog/webhooks-explained/</guid><description>A clear, technical explanation of how webhooks work, how they differ from polling, and the practices that make them reliable in production automation systems.</description><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate><category>automation</category><category>webhooks</category><category>engineering</category></item><item><title>Prompt Engineering Fundamentals for Reliable Automations</title><link>https://aadan.app/blog/prompt-engineering-fundamentals/</link><guid isPermaLink="true">https://aadan.app/blog/prompt-engineering-fundamentals/</guid><description>A practical guide to writing prompts that produce consistent, machine-parseable output for production automations, covering structure, examples, and constraints.</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><category>AI</category><category>LLMs</category><category>automation</category></item><item><title>REST API Design: Principles That Age Well</title><link>https://aadan.app/blog/rest-api-design/</link><guid isPermaLink="true">https://aadan.app/blog/rest-api-design/</guid><description>A grounded look at REST API design principles that endure: resource modeling, correct HTTP method and status code use, statelessness, and stable contracts.</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate><category>backend</category><category>APIs</category><category>engineering</category></item></channel></rss>