{
  "posts": [
    {
      "slug": "2026/07/in-the-loop-vs-on-the-loop-agents",
      "title": "In the Loop vs On the Loop: How I Decide How Much to Trust an Agent",
      "publishedAt": "2026-07-20T16:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-acd84ac9-24b6-4000-a52f-e9281169e684-medium.webp",
      "socialMediaPost": "The guardrail question for AI agents is not autonomous or not. It is in the loop vs on the loop, decided per action from reversibility and blast radius. Cheap, reversible actions run on the loop with monitoring. Irreversible or wide ones need a human inside the flow. Here is how I design it.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/in-the-loop-vs-on-the-loop-agents",
      "file": "/data/manual-blog/in-the-loop-vs-on-the-loop-agents.json",
      "category": "insights",
      "hashtags": "#AIAgents #AgentGuardrails #HumanInTheLoop #AIArchitecture #AutonomousAgents"
    },
    {
      "slug": "2026/07/keeping-api-keys-safe-vibecoders-handbook",
      "title": "Keeping API Keys Safe: The Vibecoder's Handbook Rules",
      "publishedAt": "2026-07-20T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-919019dd-7c92-4d1a-9812-8313bb00820d-medium.webp",
      "socialMediaPost": "One hardcoded API key is all it takes to hand strangers the keys to your app. Here's the exact .env setup vibecoders need to keep secrets out of their code, and what to do the moment one leaks.",
      "readingTime": "8m",
      "url": "https://zalt.me/blog/2026/07/keeping-api-keys-safe-vibecoders-handbook",
      "file": "/data/manual-blog/keeping-api-keys-safe-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/best-free-ai-chatbot-no-sign-up",
      "title": "The Best Free AI Chatbot With No Sign Up (2026)",
      "publishedAt": "2026-07-20T03:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d88b9fa7-247c-40c8-ab88-f38a344dae77-medium.webp",
      "socialMediaPost": "\"Free AI chatbot, no sign up\" hides three different promises: no account, no limits, no data collection. Most tools keep only one. Here is how the options really compare, and which to pick for what.",
      "readingTime": "6m",
      "url": "https://zalt.me/blog/2026/07/best-free-ai-chatbot-no-sign-up",
      "file": "/data/manual-blog/best-free-ai-chatbot-no-sign-up.json",
      "category": "insights",
      "hashtags": "#FreeAI #AIChatbot #Privacy #NoSignUp #AITools"
    },
    {
      "slug": "2026/07/is-vibe-coding-bad",
      "title": "Is Vibe Coding Bad? An Honest Look at the Criticism",
      "publishedAt": "2026-07-19T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-2-medium.webp",
      "socialMediaPost": "Is vibe coding bad? Not really. Stopping at the demo is. Here is an honest look at the criticism, why it fails, why people hate it, and how to turn all of it into code that actually ships safely.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/is-vibe-coding-bad",
      "file": "/data/manual-blog/is-vibe-coding-bad.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/version-control-for-non-coders-vibecoders-handbook",
      "title": "Version Control for Non-Coders, Per The Vibecoder's Handbook",
      "publishedAt": "2026-07-19T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4d620d96-4f28-4fcd-a9ee-f0b20a9099a6-medium.webp",
      "socialMediaPost": "Can't read code but vibe coding anyway? Version control is your undo button, and per The Vibecoder's Handbook, your AI agent runs it for you. You just need to know it's happening.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/version-control-for-non-coders-vibecoders-handbook",
      "file": "/data/manual-blog/version-control-for-non-coders-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/picking-an-ai-coding-agent-vibecoders-handbook",
      "title": "The Vibecoder's Handbook on Picking an AI Coding Agent",
      "publishedAt": "2026-07-18T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-83711de2-272d-407a-9d0e-ced7ec9793e6-medium.webp",
      "socialMediaPost": "Picking an AI coding agent is not a research project. Match the tool category to how you actually build, run one real test, and stop chasing benchmark screenshots. The Vibecoder's Handbook breaks down what actually matters.",
      "readingTime": "8m",
      "url": "https://zalt.me/blog/2026/07/picking-an-ai-coding-agent-vibecoders-handbook",
      "file": "/data/manual-blog/picking-an-ai-coding-agent-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/ai-context-data-readiness",
      "title": "Your AI Is Not Underperforming, It Is Underinformed: The Context Problem",
      "publishedAt": "2026-07-18T08:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a0c9fe61-6e87-4d3a-a232-2fc03e5cc472-medium.webp",
      "socialMediaPost": "Your AI is not underperforming, it is underinformed. A capable model with thin context gives confident, generic, sometimes wrong answers. The same model with rich, accurate context feels like it actually knows your business. Most failed AI pilots are context problems, not model problems.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/ai-context-data-readiness",
      "file": "/data/manual-blog/ai-context-data-readiness.json",
      "category": "insights",
      "hashtags": "#AIReadiness #AIStrategy #DataStrategy #AIAdoption #EnterpriseAI"
    },
    {
      "slug": "2026/07/will-vibe-coding-replace-programmers",
      "title": "Will Vibe Coding Replace Programmers? A Realistic Answer",
      "publishedAt": "2026-07-17T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-1-2-medium.webp",
      "socialMediaPost": "Will vibe coding replace programmers? No. But it retires the pure code-translator and promotes everyone who moves up into judgment: design, verification, security, ownership. The value didn't disappear, it relocated. Here's the realistic answer.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/will-vibe-coding-replace-programmers",
      "file": "/data/manual-blog/will-vibe-coding-replace-programmers.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/choosing-your-stack-vibecoders-handbook",
      "title": "Choosing Your Stack: The Vibecoder's Handbook Method",
      "publishedAt": "2026-07-17T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-3cbb120b-e392-4028-bf01-69715c7c9d72-medium.webp",
      "socialMediaPost": "Picking a tech stack before you vibe code isn't about taste, it's about what your AI agent has actually seen in training. Default to boring and popular, deviate only when your app forces it. The Vibecoder's Handbook method in one article.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/choosing-your-stack-vibecoders-handbook",
      "file": "/data/manual-blog/choosing-your-stack-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/graph-runtimes-sane",
      "title": "When Graph Runtimes Stay Sane",
      "publishedAt": "2026-07-17T07:14:38+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-8a92a9d1-6696-48d7-9e19-816dee50fb6a.png",
      "socialMediaPost": "Building complex graph runtimes that don’t melt down over time is harder than it looks. “When Graph Runtimes Stay Sane” digs into what actually keeps them stable.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/07/graph-runtimes-sane",
      "file": "/data/automated-blog/2026/07/graph-runtimes-sane.json",
      "hashtags": "#graphs #runtimes #distributedSystems #softwareArchitecture"
    },
    {
      "slug": "2026/07/ai-jobs-roles-change-shape",
      "title": "AI Is Not Deleting Jobs, It Is Rewriting Them: What I See From the Field",
      "publishedAt": "2026-07-16T11:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-e6d82059-e36a-464a-8187-6fa9bb24d66a-medium.webp",
      "socialMediaPost": "AI is not deleting jobs, it is rewriting them. Every role is a bundle of tasks. AI pulls out the routine strands and the human core, judgment, trust, ownership, grows to fill the space. The people who thrive let the shape change instead of racing the machine on the part it wins.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/ai-jobs-roles-change-shape",
      "file": "/data/manual-blog/ai-jobs-roles-change-shape.json",
      "category": "insights",
      "hashtags": "#FutureOfWork #AIAndJobs #AITransformation #AIStrategy #KnowledgeWork"
    },
    {
      "slug": "2026/07/scoping-your-mvp-vibecoders-handbook",
      "title": "The Vibecoder's Handbook on Scoping Your MVP",
      "publishedAt": "2026-07-16T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-434ea093-e55b-4e0a-b8fe-87c423d75a52-medium.webp",
      "socialMediaPost": "Every item on your must-have list feels essential, which is exactly why it will sink your first version. The Vibecoder's Handbook method for scoping an MVP: find the one core job, build one thin working path through it, and put everything else on a later list.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/scoping-your-mvp-vibecoders-handbook",
      "file": "/data/manual-blog/scoping-your-mvp-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/make-money-vibe-coding",
      "title": "Can You Make Money Vibe Coding? An Honest Look",
      "publishedAt": "2026-07-15T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-acd84ac9-24b6-4000-a52f-e9281169e684-medium.webp",
      "socialMediaPost": "Can you make money vibe coding? Yes, but not the way the hype says. The money is never in the coding. It is in picking a real problem, charging for it, and shipping something that lasts after launch. Here is the honest version.",
      "readingTime": "8m",
      "url": "https://zalt.me/blog/2026/07/make-money-vibe-coding",
      "file": "/data/manual-blog/make-money-vibe-coding.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/writing-a-spec-vibecoders-handbook",
      "title": "The Vibecoder's Handbook on Writing a Spec First",
      "publishedAt": "2026-07-15T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-58e3d8a6-d6ad-4620-92fa-68242cfd1038-medium.webp",
      "socialMediaPost": "Your AI agent isn't guessing because it's careless, it's guessing because you never wrote down what you actually wanted. The Vibecoder's Handbook's fix: one short spec, five sections, kept in the repo. Here's exactly what to put in it.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/writing-a-spec-vibecoders-handbook",
      "file": "/data/manual-blog/writing-a-spec-vibecoders-handbook.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/why-people-vibe-code-without-confidence",
      "title": "Why Most People Vibe Code Without Confidence (and How to Fix It)",
      "publishedAt": "2026-07-14T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-391718aa-5610-4e79-9c14-33320e2522f6-medium.webp",
      "socialMediaPost": "Most vibe coders don't distrust their apps because the code is bad. They distrust it because they don't understand it, can't undo it, and were sold a flawless demo as the finish line. Here's the real fix for each cause.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/why-people-vibe-code-without-confidence",
      "file": "/data/manual-blog/why-people-vibe-code-without-confidence.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/who-owns-the-outcome-ai-accountability",
      "title": "The Real Reason AI Has Not Replaced Your Team Yet (It Is Not Capability)",
      "publishedAt": "2026-07-14T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0267727c-2ca2-47aa-86f6-2015237c2dbc-medium.webp",
      "socialMediaPost": "The thing stopping AI from replacing your team is not capability. The models are already good enough for a lot of the work. It is accountability: when the output is wrong, someone has to own it, and software cannot hold that. Here is how I design ownership into AI systems.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/who-owns-the-outcome-ai-accountability",
      "file": "/data/manual-blog/who-owns-the-outcome-ai-accountability.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIAdoption #FutureOfWork #AIAccountability #AILeadership"
    },
    {
      "slug": "2026/07/how-to-vibe-code-with-cursor",
      "title": "How to Vibe Code With Cursor: A Practical Walkthrough",
      "publishedAt": "2026-07-13T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a0c9fe61-6e87-4d3a-a232-2fc03e5cc472-medium.webp",
      "socialMediaPost": "New to Cursor? Here is the exact vibe coding loop I use: install, add a rules file, open Agent mode, prompt clearly, run it, and feed errors back until it works. Plus when to reach for it over a raw Claude or ChatGPT chat.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/how-to-vibe-code-with-cursor",
      "file": "/data/manual-blog/how-to-vibe-code-with-cursor.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-prototype-to-production",
      "title": "From Prototype to Production: Vibe Coding with Confidence at Every Stage",
      "publishedAt": "2026-07-13T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-83711de2-272d-407a-9d0e-ced7ec9793e6-medium.webp",
      "socialMediaPost": "Vibe coding gets you a working prototype in days. Production is a different job entirely: real hosting, real error handling, monitoring, backups, and cost caps before real users show up. Here's the honest map of that handoff.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-prototype-to-production",
      "file": "/data/manual-blog/vibe-coding-with-confidence-prototype-to-production.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-on-a-team",
      "title": "Vibe Coding with Confidence on a Team, Not Just Solo",
      "publishedAt": "2026-07-12T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-3cbb120b-e392-4028-bf01-69715c7c9d72-medium.webp",
      "socialMediaPost": "Vibe coding with confidence solo is one set of habits. Doing it on a team is a different job: real review for AI-written code, shared standards so five people's agents don't write five different codebases, and a clear line for which changes need a human before they ship.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-on-a-team",
      "file": "/data/manual-blog/vibe-coding-with-confidence-on-a-team.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/best-ai-tools-for-vibe-coding",
      "title": "Best AI Tools for Vibe Coding in 2026 (Cursor vs Claude Code vs ChatGPT)",
      "publishedAt": "2026-07-11T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-3e3514d4-3348-4203-be1c-9312095680af-medium.webp",
      "socialMediaPost": "Cursor vs Claude Code vs ChatGPT vs Windsurf: I have shipped real work through most of them. Here is the honest comparison of the best AI tools for vibe coding in 2026, and why the tool matters less than your workflow.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/best-ai-tools-for-vibe-coding",
      "file": "/data/manual-blog/best-ai-tools-for-vibe-coding.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/habits-tools-vibe-coding-with-confidence",
      "title": "The Habits and Tools Behind Vibe Coding with Confidence",
      "publishedAt": "2026-07-11T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-75455879-7e86-4ede-8eaa-88aacefd86be-medium.webp",
      "socialMediaPost": "Vibe coding with confidence is not a mindset, it is four habits and four tools repeated on every single change: small increments, version control, an AI that explains itself, and a second reviewer catching what the first one missed. None of it is exciting. That is exactly why it works.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/habits-tools-vibe-coding-with-confidence",
      "file": "/data/manual-blog/habits-tools-vibe-coding-with-confidence.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/ai-agent-ip-handover-ownership",
      "title": "When You Hire Someone to Build an AI Agent",
      "publishedAt": "2026-07-11T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-f9fc07b4-d841-445f-bd7f-0fe84100407d-medium.webp",
      "socialMediaPost": "Hiring someone to build an AI agent? The code, prompts, eval sets, and infra configs are all IP. Here's what a clean handover actually includes, and the contract clauses that quietly strip your ownership.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-agent-ip-handover-ownership",
      "file": "/data/manual-blog/ai-agent-ip-handover-ownership.json",
      "category": "insights",
      "hashtags": "#AIAgent #SoftwareContracts #AIEngineering #IPOwnership #AIConsulting"
    },
    {
      "slug": "2026/07/why-ai-automations-break-in-production",
      "title": "Why AI Automations Break in Production and How to Make Them Reliable",
      "publishedAt": "2026-07-10T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-36bea129-c3a2-4589-b8d8-13eaf6f66e1e-medium.webp",
      "socialMediaPost": "Your AI automation worked in the demo and fails every third run in production. Here are the exact failure modes and the guardrails that fix them, from someone who has shipped these systems at scale.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/why-ai-automations-break-in-production",
      "file": "/data/manual-blog/why-ai-automations-break-in-production.json",
      "category": "insights",
      "hashtags": "#AIAutomation #ProductionAI #LLMOps #AIReliability #AIEngineering"
    },
    {
      "slug": "2026/07/ai-advisor-vs-vendor",
      "title": "What an Independent AI Advisor Gives You That a Vendor Never Will",
      "publishedAt": "2026-07-10T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-708c4adb-87a7-45f8-a95a-3b9ac418d937-medium.webp",
      "socialMediaPost": "A vendor is paid to build. That means the one recommendation most worth hearing, 'you don't need this,' is the one they can never give you. Here's what you actually get from an independent AI advisor.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-advisor-vs-vendor",
      "file": "/data/manual-blog/ai-advisor-vs-vendor.json",
      "category": "insights",
      "hashtags": "#AIConsulting #AIStrategy #EnterpriseAI #AIAdvisor"
    },
    {
      "slug": "2026/07/ai-cost-architecture-token-spend",
      "title": "How to Architect AI Cost: Controlling Token Spend Before It Runs Away",
      "publishedAt": "2026-07-10T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0c3ce381-eacf-494f-83f3-29a721ac1e77-medium.webp",
      "socialMediaPost": "Token spend in LLM apps isn't a billing problem, it's an architecture problem. If you're tuning it after launch, you're already paying for the mistake.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/ai-cost-architecture-token-spend",
      "file": "/data/manual-blog/ai-cost-architecture-token-spend.json",
      "category": "insights",
      "hashtags": "#LLMArchitecture #AIEngineering #TokenCost #AIConsultant"
    },
    {
      "slug": "2026/07/90-day-plan-engineer-to-production-ai",
      "title": "The 90-Day Plan to Go from Strong Engineer to Shipping Production AI",
      "publishedAt": "2026-07-10T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-69f2299a-3bbc-4851-9fcb-8bc556d187ce-medium.webp",
      "socialMediaPost": "Most engineers spend 90 days taking AI courses. Here's the plan that gets you shipping a production feature with evals and observability instead.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/90-day-plan-engineer-to-production-ai",
      "file": "/data/manual-blog/90-day-plan-engineer-to-production-ai.json",
      "category": "insights",
      "hashtags": "#AIEngineering #SoftwareEngineering #CareerGrowth #MachineLearning"
    },
    {
      "slug": "2026/07/testing-vibe-coding-with-confidence",
      "title": "Testing Your Way to Vibe Coding with Confidence (Even If You Can't Code)",
      "publishedAt": "2026-07-10T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-434ea093-e55b-4e0a-b8fe-87c423d75a52-medium.webp",
      "socialMediaPost": "You don't need to code to test what you vibe coded. You need a habit: break it on purpose, ask the AI to explain its own tests, then watch real people use it. That's vibe coding with confidence in practice.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/testing-vibe-coding-with-confidence",
      "file": "/data/manual-blog/testing-vibe-coding-with-confidence.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/manage-ai-vendors-and-spend",
      "title": "Managing AI Vendors and Spend: How to Stop Your AI Bill From Quietly Exploding",
      "publishedAt": "2026-07-10T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-115982ea-bead-452f-9f10-bbd4ed65acae-medium.webp",
      "socialMediaPost": "Your AI bill is not an engineering problem. It is a governance problem. Here is the controls-first framework I use to keep spend predictable across teams, models, and vendors.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/manage-ai-vendors-and-spend",
      "file": "/data/manual-blog/manage-ai-vendors-and-spend.json",
      "category": "insights",
      "hashtags": "#AIGovernance #AISpend #MLOps #FractionalCTO #AIStrategy #CostControl"
    },
    {
      "slug": "2026/07/transformers-feels-fast",
      "title": "How Transformers Feels Fast Without Cheating",
      "publishedAt": "2026-07-10T07:12:41+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d38db8a0-d67b-492e-af6f-41f487c4b368.png",
      "socialMediaPost": "Why do large Transformer-based libraries feel snappy even though they’re huge under the hood? This breaks down how they stay fast without cutting corners.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/07/transformers-feels-fast",
      "file": "/data/automated-blog/2026/07/transformers-feels-fast.json",
      "hashtags": "#transformers #MachineLearning #Python #Developers"
    },
    {
      "slug": "2026/07/ai-for-small-team-business",
      "title": "AI for a Small Team: How a 1-10 Person Business Gets Enterprise-Level Leverage",
      "publishedAt": "2026-07-09T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-71c55dbe-c443-42db-b16e-e4a8fc3ab863-medium.webp",
      "socialMediaPost": "A 5-person team running the right 3 AI workflows will consistently outship a 50-person team drowning in enterprise tooling. Here is the exact stack I recommend, and the traps to avoid.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/ai-for-small-team-business",
      "file": "/data/manual-blog/ai-for-small-team-business.json",
      "category": "insights",
      "hashtags": "#AIForBusiness #SmallTeamAI #AIAutomation #AIStrategy #StartupAI"
    },
    {
      "slug": "2026/07/fine-tuning-vs-rag",
      "title": "Fine-Tuning vs RAG vs Prompting: What to Reach for First",
      "publishedAt": "2026-07-09T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4c2c7f74-7ea0-47d3-9ff9-b64a8a7e7d91-medium.webp",
      "socialMediaPost": "Most teams asking about fine-tuning their LLM actually need better prompting. Here is the ordered decision framework I use with every production AI system I build.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/fine-tuning-vs-rag",
      "file": "/data/manual-blog/fine-tuning-vs-rag.json",
      "category": "insights",
      "hashtags": "#LLM #RAG #FineTuning #AIEngineering #PromptEngineering #AIArchitecture"
    },
    {
      "slug": "2026/07/book-ai-speaker-for-event",
      "title": "How to Book the Right AI Speaker for Your Event or Conference",
      "publishedAt": "2026-07-09T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-17d4dbb3-2719-4735-b2ce-b2e9995456fc-medium.webp",
      "socialMediaPost": "Most AI speaker horror stories share one root cause: the organizer booked someone famous instead of someone qualified. Here's the checklist I'd use if I were in your seat.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/book-ai-speaker-for-event",
      "file": "/data/manual-blog/book-ai-speaker-for-event.json",
      "category": "insights",
      "hashtags": "#AISpeaker #TechConference #AIWorkshop #EngineeringLeadership #AIStrategy"
    },
    {
      "slug": "2026/07/choosing-a-model-for-ai-agents",
      "title": "Which Model Should You Use for Your AI Agent? Latency, Cost, and Capability",
      "publishedAt": "2026-07-09T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-670a1207-915c-4cab-9ded-8046e98f8907-medium.webp",
      "socialMediaPost": "Most AI agents fail not because the model is bad, but because you used the same frontier model for routing, reasoning, and tool-calling. Match the model to the role and you halve your costs while improving performance.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/choosing-a-model-for-ai-agents",
      "file": "/data/manual-blog/choosing-a-model-for-ai-agents.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLM #ArtificialIntelligence #SoftwareEngineering #AIArchitecture"
    },
    {
      "slug": "2026/07/how-to-start-vibe-coding",
      "title": "How to Start Vibe Coding: A Step-by-Step Guide for Beginners",
      "publishedAt": "2026-07-09T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-1fb0290b-34d8-4358-98f5-1298664311d1-medium.webp",
      "socialMediaPost": "New to vibe coding? You do not need to know how to code to start. Here is the exact 7-step loop: pick one tiny idea, choose a tool, describe the outcome, test, and fix one thing at a time.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/how-to-start-vibe-coding",
      "file": "/data/manual-blog/how-to-start-vibe-coding.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-non-technical-founder",
      "title": "Vibe Coding with Confidence as a Non-Technical Founder",
      "publishedAt": "2026-07-09T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-ecfb4361-1a26-4960-8158-a5a24d9d7917-medium.webp",
      "socialMediaPost": "You don't need to read a single line of code to build something real, but you do need to know which four decisions are never the AI's to make alone: payments, personal data, scaling, and fundraising due diligence. Here's how non-technical founders actually stay safe.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-non-technical-founder",
      "file": "/data/manual-blog/vibe-coding-with-confidence-non-technical-founder.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/human-in-the-loop-ai-automation",
      "title": "Human-in-the-Loop AI Automation: Where to Keep a Person in the Workflow",
      "publishedAt": "2026-07-09T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b69570a7-1570-4a48-b30e-ce940fa97bf0-medium.webp",
      "socialMediaPost": "Most teams put human review in the wrong places: they review low-stakes outputs and auto-approve the ones that can actually cause damage. Here is the framework I use to map risk and confidence to approval gates in production AI automation.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/human-in-the-loop-ai-automation",
      "file": "/data/manual-blog/human-in-the-loop-ai-automation.json",
      "category": "insights",
      "hashtags": "#AIAutomation #HumanInTheLoop #AIEngineering #LLMOps #AIWorkflow"
    },
    {
      "slug": "2026/07/ai-roi-calculation",
      "title": "Calculating the Real ROI of an AI Project (Beyond the Demo)",
      "publishedAt": "2026-07-08T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4cdad7d5-36e5-49a7-af8c-f744d53be91d-medium.webp",
      "socialMediaPost": "Most AI ROI models look great until you add the lines nobody puts in the spreadsheet: eval maintenance, human-in-the-loop review time, inference cost at scale, and the engineer-weeks you lose every time a model is deprecated. Here is how I actually build that model.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/ai-roi-calculation",
      "file": "/data/manual-blog/ai-roi-calculation.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIROI #AIConsultant #EnterpriseAI #AIArchitecture"
    },
    {
      "slug": "2026/07/avoid-llm-vendor-lock-in",
      "title": "How to Avoid LLM Vendor Lock-In With a Model Abstraction Layer",
      "publishedAt": "2026-07-08T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4235b195-1acb-48c2-bd87-62ded5ad8dc7-medium.webp",
      "socialMediaPost": "Vendor lock-in is not an OpenAI contract problem, it is a code architecture problem. Here is exactly how to wrap your model calls so you can swap providers in an afternoon, not a rewrite.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/avoid-llm-vendor-lock-in",
      "file": "/data/manual-blog/avoid-llm-vendor-lock-in.json",
      "category": "insights",
      "hashtags": "#LLM #AIArchitecture #OpenAI #Anthropic #MLOps #GenAI"
    },
    {
      "slug": "2026/07/do-ai-engineers-need-machine-learning",
      "title": "Do You Need to Know Machine Learning to Be an AI Engineer in 2026?",
      "publishedAt": "2026-07-08T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-67c62fc0-44ec-4f38-ad0c-7cd1cbc30dcc-medium.webp",
      "socialMediaPost": "Most engineers asking 'do I need to learn ML?' are already doing AI engineering without knowing it. The work is orchestration, retrieval, evals, and guardrails, not gradient descent.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/do-ai-engineers-need-machine-learning",
      "file": "/data/manual-blog/do-ai-engineers-need-machine-learning.json",
      "category": "insights",
      "hashtags": "#AIEngineering #MachineLearning #SoftwareEngineering #CareerAdvice #LLM"
    },
    {
      "slug": "2026/07/ai-agent-human-in-the-loop",
      "title": "When to Keep a Human in the Loop on an AI Agent",
      "publishedAt": "2026-07-08T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4ac9c827-bbec-4ab2-b100-1b01b0bafc34-medium.webp",
      "socialMediaPost": "Most teams wire up AI agents with full autonomy by default, then wonder why they have incidents. Here is the risk-and-reversibility matrix I use to decide exactly which agent actions need a human in the loop before you get burned.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-agent-human-in-the-loop",
      "file": "/data/manual-blog/ai-agent-human-in-the-loop.json",
      "category": "insights",
      "hashtags": "#AIAgents #HumanInTheLoop #AgentDesign #AISystems #LLMOps #AIArchitecture"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-security",
      "title": "Vibe Coding with Confidence: How to Catch the Security Holes AI Leaves Behind",
      "publishedAt": "2026-07-08T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-75b95531-d69d-42d8-9db7-18b93d82a069-medium.webp",
      "socialMediaPost": "AI-generated code works. That doesn't mean it's safe. Here are the five security holes that show up in vibe-coded apps over and over, and exactly what to ask your AI to catch each one before a stranger does.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-security",
      "file": "/data/manual-blog/vibe-coding-with-confidence-security.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/connect-ai-automation-to-existing-tools",
      "title": "How to Connect AI Automation to Your Existing Tools (CRM, Slack, Sheets, ERP)",
      "publishedAt": "2026-07-08T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a2f7de5c-1ce0-4b19-ba40-8efcf2a07ea6-medium.webp",
      "socialMediaPost": "Most AI automation projects fail not because of the AI, but because of the wiring: bad auth, missing idempotency, and rate limits that nobody modeled. Here is how to do the integration right.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/connect-ai-automation-to-existing-tools",
      "file": "/data/manual-blog/connect-ai-automation-to-existing-tools.json",
      "category": "insights",
      "hashtags": "#AIAutomation #SystemIntegration #MCP #EnterpriseAI"
    },
    {
      "slug": "2026/07/attention-efficiency",
      "title": "Attention That Listens Efficiently",
      "publishedAt": "2026-07-07T21:26:41+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-f812c659-1d07-4acb-ae2e-5a198aa1e34a.png",
      "socialMediaPost": "Most work on attention focuses on accuracy. “Attention That Listens Efficiently” asks a different question: how do you make attention fast enough to matter in practice?",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/07/attention-efficiency",
      "file": "/data/automated-blog/2026/07/attention-efficiency.json",
      "hashtags": "#transformers #deeplearning #attention #ML"
    },
    {
      "slug": "2026/07/fractional-ai-officer-bridge-to-full-time-hire",
      "title": "How a Fractional AI Officer Bridges to Your Future Full-Time AI Hire",
      "publishedAt": "2026-07-07T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-c81b0347-57df-4cc2-92e0-fa83ba9d50d2-medium.webp",
      "socialMediaPost": "Most companies hire a permanent AI leader before they know what the job should even be. A fractional AI officer does the harder work first: builds the systems, writes the real role spec, and makes the hire succeed from day one.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/fractional-ai-officer-bridge-to-full-time-hire",
      "file": "/data/manual-blog/fractional-ai-officer-bridge-to-full-time-hire.json",
      "category": "insights",
      "hashtags": "#FractionalAIOfficer #AILeadership #AIStrategy #TechHiring"
    },
    {
      "slug": "2026/07/is-my-business-ready-for-ai",
      "title": "Is My Business Ready for AI? 9 Signs You're Ready (and 4 You're Not)",
      "publishedAt": "2026-07-07T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-263d661b-83eb-46aa-8448-d51c064ea45e-medium.webp",
      "socialMediaPost": "Most businesses asking 'are we ready for AI?' are asking the wrong question. The real question is: do you have clean data, a documented process, and someone who owns the outcome? I wrote the honest checklist.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/is-my-business-ready-for-ai",
      "file": "/data/manual-blog/is-my-business-ready-for-ai.json",
      "category": "insights",
      "hashtags": "#AIReadiness #AIStrategy #BusinessAI #AIAutomation"
    },
    {
      "slug": "2026/07/measure-ai-success",
      "title": "How to Measure AI Success: The Metrics That Actually Matter",
      "publishedAt": "2026-07-07T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-395bcd92-a00c-4126-99f3-42274023c213-medium.webp",
      "socialMediaPost": "Most AI projects fail the ROI question not because they underperform, but because nobody measured the baseline before launch. Here is the framework I use to tie every AI deployment to a number that moves the business.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/measure-ai-success",
      "file": "/data/manual-blog/measure-ai-success.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIConsulting #MLOps #ProductMetrics #AIRoI"
    },
    {
      "slug": "2026/07/ai-agent-guardrails-permissions",
      "title": "Guardrails and Permissions for AI Agents That Take Real Actions",
      "publishedAt": "2026-07-07T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b2776337-0bc6-4c06-88a7-d16456eddd0a-medium.webp",
      "socialMediaPost": "Most AI agent disasters I've seen weren't model failures. They were permission failures: an agent that could delete, that could send, that could charge, and nobody put a gate in front of those tools. Here's how I design that gate.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/ai-agent-guardrails-permissions",
      "file": "/data/manual-blog/ai-agent-guardrails-permissions.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMSecurity #AgentGuardrails #AIArchitecture #HumanInTheLoop"
    },
    {
      "slug": "2026/07/what-is-vibe-coding",
      "title": "What Is Vibe Coding? A Plain-English Guide",
      "publishedAt": "2026-07-07T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-1e303512-a7bc-4dcc-ace2-851824d82398-medium.webp",
      "socialMediaPost": "What is vibe coding? It is building software by describing what you want in plain English while AI writes the code. Here is the honest, no-hype guide: what it means, how it works, and exactly where it breaks.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/07/what-is-vibe-coding",
      "file": "/data/manual-blog/what-is-vibe-coding.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/review-ai-code-vibe-coding-with-confidence",
      "title": "How to Review AI-Generated Code and Vibe Code with Confidence",
      "publishedAt": "2026-07-07T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-66eabd2d-c02b-4b9a-ace4-2445e7bd1bb8-medium.webp",
      "socialMediaPost": "Reviewing AI-generated code is not about reading every line. It is about refusing to accept \"it works\" until something outside the AI's own explanation proves it: a plain-English walkthrough, a diff that matches your request, a test you ran yourself, a second opinion. That is how you vibe code with confidence instead of on faith.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/review-ai-code-vibe-coding-with-confidence",
      "file": "/data/manual-blog/review-ai-code-vibe-coding-with-confidence.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/why-rag-returns-wrong-answers",
      "title": "Why Your RAG System Returns Wrong Answers (and How to Fix Retrieval)",
      "publishedAt": "2026-07-07T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-68b3d79b-f715-44d8-bb5d-f9546766e8ac-medium.webp",
      "socialMediaPost": "Your RAG system is returning wrong answers because the model is getting bad context, not because the model is broken. Here is how I fix retrieval in production: chunking strategy, hybrid search, reranking, and a measurable eval loop.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/why-rag-returns-wrong-answers",
      "file": "/data/manual-blog/why-rag-returns-wrong-answers.json",
      "category": "insights",
      "hashtags": "#RAG #AIArchitecture #LLM #RetrievalAugmentedGeneration #AIEngineering"
    },
    {
      "slug": "2026/07/mistakes-engineers-make-learning-ai",
      "title": "Common Mistakes Engineers Make Learning AI (and How to Avoid Wasting Months)",
      "publishedAt": "2026-07-06T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-983e16d5-24d8-4ca9-b278-9dedb7b6fb47-medium.webp",
      "socialMediaPost": "Most engineers learning AI waste months on the wrong things: too much theory, no evals, and jumping straight to multi-agent swarms before they can ship a reliable single-agent system. Here is the specific list of traps and how to skip them.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/mistakes-engineers-make-learning-ai",
      "file": "/data/manual-blog/mistakes-engineers-make-learning-ai.json",
      "category": "insights",
      "hashtags": "#AIEngineering #LLMDevelopment #SoftwareEngineering #AIProductionSystems"
    },
    {
      "slug": "2026/07/what-are-ai-evals",
      "title": "What Are AI Evals and Why They Matter More Than Your Prompt",
      "publishedAt": "2026-07-06T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0c624ec4-ece5-48e2-bce2-650ed09bb1a0-medium.webp",
      "socialMediaPost": "Without evals, you are not shipping an AI product. You are shipping a guess. Here is how production teams actually know their LLM systems work.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/what-are-ai-evals",
      "file": "/data/manual-blog/what-are-ai-evals.json",
      "category": "insights",
      "hashtags": "#AIEvals #LLMEvals #AIEngineering #ProductionAI #AIArchitecture"
    },
    {
      "slug": "2026/07/automate-reporting-with-ai",
      "title": "How to Automate Reporting and Dashboards With AI",
      "publishedAt": "2026-07-06T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-bb6bdadf-9941-4b22-b24f-bb0e9bdd62d7-medium.webp",
      "socialMediaPost": "Most AI reporting automation fails the same way: the LLM is computing the numbers. Here is the architecture that keeps figures auditable while still generating the narrative automatically.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/automate-reporting-with-ai",
      "file": "/data/manual-blog/automate-reporting-with-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #DataEngineering #LLM #ReportingAutomation #AIArchitecture"
    },
    {
      "slug": "2026/07/what-makes-strong-ai-keynote",
      "title": "What Makes a Strong AI Keynote (and Why Most Are Forgettable Hype)",
      "publishedAt": "2026-07-06T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-cc6d2f03-efd4-4019-a681-13c5f806416f-medium.webp",
      "socialMediaPost": "Most AI keynotes are FOMO dressed up as strategy. Here is what a strong one actually looks like, from someone who ships production AI systems.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/what-makes-strong-ai-keynote",
      "file": "/data/manual-blog/what-makes-strong-ai-keynote.json",
      "category": "insights",
      "hashtags": "#AIKeynote #AISpeaking #AIStrategy #ProductionAI #TechTalks"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-checklist",
      "title": "The Vibe Coding with Confidence Checklist: 10 Things to Check Before You Ship",
      "publishedAt": "2026-07-06T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-58e3d8a6-d6ad-4620-92fa-68242cfd1038-medium.webp",
      "socialMediaPost": "Before you ship what you vibe coded, run it through 10 checks: exposed secrets, missing access control, silent failures, runaway API bills, and more. Vibe coding with confidence means doing this on purpose, not hoping the AI already handled it.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-checklist",
      "file": "/data/manual-blog/vibe-coding-with-confidence-checklist.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/evals-for-ai-agents",
      "title": "Evals for AI Agents: How to Know Your Agent Is Good Enough to Ship",
      "publishedAt": "2026-07-06T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-bd7ab229-5a7f-4164-a1c9-42150c84f842-medium.webp",
      "socialMediaPost": "Most teams bolt evals on after launch and wonder why their agent fails in production. The fix: define your golden dataset and pass/fail bar before you write a single prompt. Here is the exact framework I use.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/evals-for-ai-agents",
      "file": "/data/manual-blog/evals-for-ai-agents.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMEvals #AIEngineering #AgentDevelopment #MLOps"
    },
    {
      "slug": "2026/07/ai-data-readiness",
      "title": "Is Your Data Actually Ready for AI? A Practical Readiness Check",
      "publishedAt": "2026-07-05T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b2ecb967-5ada-4123-a019-2c2a091c528c-medium.webp",
      "socialMediaPost": "Before you hire an AI team or buy a platform, run this 5-dimension data readiness check. Most companies aren't blocked by model selection, they're blocked by unlabeled, siloed data from the last two years.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-data-readiness",
      "file": "/data/manual-blog/ai-data-readiness.json",
      "category": "insights",
      "hashtags": "#AIStrategy #DataReadiness #AIConsultant #EnterpriseAI #MLOps"
    },
    {
      "slug": "2026/07/when-to-hire-full-time-head-of-ai",
      "title": "When Does a Scale-Up Actually Need a Full-Time Head of AI?",
      "publishedAt": "2026-07-05T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-6fdce3f1-d8bd-4186-b641-eed5875dbcd6-medium.webp",
      "socialMediaPost": "Most scale-ups asking 'should we hire a Head of AI?' are at least 12 months too early. Here are the four concrete thresholds that actually justify converting from fractional to full-time.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/when-to-hire-full-time-head-of-ai",
      "file": "/data/manual-blog/when-to-hire-full-time-head-of-ai.json",
      "category": "insights",
      "hashtags": "#AIStrategy #ScaleUp #FractionalAI #AILeadership #StartupAI"
    },
    {
      "slug": "2026/07/ai-risks-for-business",
      "title": "What Are the Real Risks of Using AI in Your Business? A Plain-English Risk Map",
      "publishedAt": "2026-07-05T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0b0ef8cf-b60a-430d-bc7e-63609cdf6a23-medium.webp",
      "socialMediaPost": "Most businesses either ignore AI risks entirely or hire a consultant to write a 40-page risk register they never look at again. Here is the plain-English map with one cheap guardrail per risk.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-risks-for-business",
      "file": "/data/manual-blog/ai-risks-for-business.json",
      "category": "insights",
      "hashtags": "#AIRisk #AIStrategy #BusinessAI #AIGovernance #AIAutomation"
    },
    {
      "slug": "2026/07/automate-email-inbox-ai",
      "title": "How to Automate Your Email Inbox and Triage With AI",
      "publishedAt": "2026-07-05T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-49d66bad-d3e9-4711-ab78-0c88920837a1-medium.webp",
      "socialMediaPost": "AI can triage your inbox in seconds, but most people draw the automation line in the wrong place. Here is the classify-label-draft pattern that keeps humans in control of the actions that actually matter.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/automate-email-inbox-ai",
      "file": "/data/manual-blog/automate-email-inbox-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #EmailAutomation #ProductivityAI #AIWorkflow #LLMOps"
    },
    {
      "slug": "2026/07/vibe-coding-with-confidence-vs-blind",
      "title": "Vibe Coding with Confidence: What Actually Separates It From Vibe Coding Blind",
      "publishedAt": "2026-07-05T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-f812c659-1d07-4acb-ae2e-5a198aa1e34a-medium.webp",
      "socialMediaPost": "Blind vibe coding and disciplined vibe coding use the exact same AI. The difference is whether you read the diff, test the unhappy path, and know how to undo it before a real user shows up. Here is the honest breakdown, backed by the data on what happens when nobody checks the AI's work.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/vibe-coding-with-confidence-vs-blind",
      "file": "/data/manual-blog/vibe-coding-with-confidence-vs-blind.json",
      "category": "insights",
      "hashtags": "#VibeCoding #AI #BuildWithAI"
    },
    {
      "slug": "2026/07/how-to-choose-vector-database",
      "title": "How to Choose a Vector Database (and When You Don't Need One)",
      "publishedAt": "2026-07-05T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-fc13809d-926d-4a05-9859-cb9e3e801801-medium.webp",
      "socialMediaPost": "Most teams reaching for Pinecone or Weaviate on day one are solving a problem they don't have yet. Here's the honest decision framework for picking a vector database, and the concrete threshold where pgvector stops being enough.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/how-to-choose-vector-database",
      "file": "/data/manual-blog/how-to-choose-vector-database.json",
      "category": "insights",
      "hashtags": "#RAG #VectorDatabase #AIArchitecture #pgvector #LLM #AIEngineering"
    },
    {
      "slug": "2026/07/stay-current-as-ai-engineer",
      "title": "How to Stay Current as an AI Engineer When Models Ship Every Week",
      "publishedAt": "2026-07-04T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-19d567ae-4177-41b7-babe-dfa272584562-medium.webp",
      "socialMediaPost": "Every week a new model ships. Most engineers panic and rewrite. The ones who stay current anchor on durable primitives so model churn becomes a config change, not a crisis.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/stay-current-as-ai-engineer",
      "file": "/data/manual-blog/stay-current-as-ai-engineer.json",
      "category": "insights",
      "hashtags": "#AIEngineering #LLMDevelopment #MachineLearning #SoftwareEngineering #AISkills"
    },
    {
      "slug": "2026/07/testing-non-deterministic-ai-agents",
      "title": "How to Test a Non-Deterministic AI Agent",
      "publishedAt": "2026-07-04T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0108ab5b-404b-4110-ac62-cb3582a15f6d-medium.webp",
      "socialMediaPost": "You can not test an AI agent with string assertions. The output changes every run. Here is the four-layer eval stack I use in production: golden datasets, LLM-as-judge rubrics, trajectory assertions, and regression baselines that gate every PR.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/testing-non-deterministic-ai-agents",
      "file": "/data/manual-blog/testing-non-deterministic-ai-agents.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMEvals #AIEngineering #AgentTesting #MLOps"
    },
    {
      "slug": "2026/07/automate-data-entry-ai",
      "title": "How to Automate Data Entry With AI and Actually Trust the Output",
      "publishedAt": "2026-07-04T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-6725a69e-d885-44cc-8ca9-4c52ef30f994-medium.webp",
      "socialMediaPost": "Automating data entry with AI is not hard. The hard part is trusting the output. Here is how I build extraction pipelines where a wrong autofill never reaches your database.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/automate-data-entry-ai",
      "file": "/data/manual-blog/automate-data-entry-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #DataEntry #LLMEngineering #DocumentExtraction #AIArchitecture"
    },
    {
      "slug": "2026/07/validate-ai-feasibility",
      "title": "How to Validate an AI Idea Is Feasible Before You Build It",
      "publishedAt": "2026-07-04T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-c85570e0-6a67-4161-a17d-ffcc5ae97653-medium.webp",
      "socialMediaPost": "Before you hire engineers or touch infrastructure, you need one week and a 50-sample eval set to know if your AI idea is actually buildable. Here is the exact feasibility spike protocol I use with clients.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/validate-ai-feasibility",
      "file": "/data/manual-blog/validate-ai-feasibility.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIFeasibility #ProductEngineering #AIConsulting"
    },
    {
      "slug": "2026/07/mcp-tool-calling-explained",
      "title": "MCP and Tool Calling Explained: How AI Agents Take Real Actions",
      "publishedAt": "2026-07-04T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-46857853-998c-4e76-a814-9562259743a0-medium.webp",
      "socialMediaPost": "Tool calling is how AI agents stop chatting and start doing things. Here is the builder's explanation of how it works, what MCP actually is, and when it is worth the complexity.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/mcp-tool-calling-explained",
      "file": "/data/manual-blog/mcp-tool-calling-explained.json",
      "category": "insights",
      "hashtags": "#AIAgents #MCP #ToolCalling #LLM #AIEngineering #AgentDevelopment"
    },
    {
      "slug": "2026/07/llm-observability-tracing",
      "title": "LLM Observability and Tracing: What to Log Before Production",
      "publishedAt": "2026-07-03T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b00de5cd-9988-4a12-93ec-8599373759e5-medium.webp",
      "socialMediaPost": "Most LLM bugs in production are invisible until a customer complains. Here is the exact tracing setup that turns a five-day debugging mystery into a five-minute fix, including what to capture per span, how to wire your eval loop, and where teams cut corners and pay for it later.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/llm-observability-tracing",
      "file": "/data/manual-blog/llm-observability-tracing.json",
      "category": "insights",
      "hashtags": "#LLMObservability #AIEngineering #LLMTracing #ProductionAI #AIArchitecture"
    },
    {
      "slug": "2026/07/ai-portfolio-projects-that-prove-skill",
      "title": "AI Portfolio Projects That Actually Prove You Can Engineer (Not Another Chatbot)",
      "publishedAt": "2026-07-03T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-cb8d5aa0-ec2e-4413-8a8a-037496b23d42-medium.webp",
      "socialMediaPost": "A chatbot wrapper proves you read the OpenAI docs. A project with evals, guardrails, and a cost ceiling proves you can ship AI to production. Here are three specific builds that hiring managers actually notice.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-portfolio-projects-that-prove-skill",
      "file": "/data/manual-blog/ai-portfolio-projects-that-prove-skill.json",
      "category": "insights",
      "hashtags": "#AIEngineering #MachineLearning #SoftwareEngineering #AIPortfolio #TechCareers"
    },
    {
      "slug": "2026/07/ai-agent-memory-and-state",
      "title": "How AI Agents Remember: Designing Agent Memory and State",
      "publishedAt": "2026-07-03T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d93e20b7-c201-49cf-b3fc-dae8712f07fb-medium.webp",
      "socialMediaPost": "Most teams over-engineer agent memory and end up with stale, hallucinated context that breaks trust. Here is the practical architecture I use in production, including when to skip persistence entirely.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/ai-agent-memory-and-state",
      "file": "/data/manual-blog/ai-agent-memory-and-state.json",
      "category": "insights",
      "hashtags": "#AIAgents #AgentMemory #LLMArchitecture #AIEngineering #AgentDesign"
    },
    {
      "slug": "2026/07/turn-voice-notes-into-summaries",
      "title": "How to Turn Voice Notes into Summaries (Free, Private, In-Browser)",
      "publishedAt": "2026-07-03T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4235b195-1acb-48c2-bd87-62ded5ad8dc7-medium.webp",
      "socialMediaPost": "The fastest way to capture a thought is to say it. The problem is that a five-minute voice memo is useless later. Here is how to turn rambling voice notes into clean summaries for free, without uploading a thing.",
      "readingTime": "6m",
      "url": "https://zalt.me/blog/2026/07/turn-voice-notes-into-summaries",
      "file": "/data/manual-blog/turn-voice-notes-into-summaries.json",
      "category": "insights",
      "hashtags": "#VoiceNotes #Productivity #SpeechToText #AITools #Notetaking"
    },
    {
      "slug": "2026/07/board-wants-ai-plan-how-to-respond",
      "title": "Your Board Wants an AI Plan: How to Answer Without Hiring a CAIO Yet",
      "publishedAt": "2026-07-03T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-dce78015-9939-4456-a8cc-a63ae656f886-medium.webp",
      "socialMediaPost": "Your board is asking for an AI strategy. Here is exactly what a credible one-page answer contains, which metrics to commit to, and why a fractional officer is the right call before you hire a CAIO.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/board-wants-ai-plan-how-to-respond",
      "file": "/data/manual-blog/board-wants-ai-plan-how-to-respond.json",
      "category": "insights",
      "hashtags": "#AIStrategy #FractionalCTO #BoardPrep #EnterpriseAI #AILeadership"
    },
    {
      "slug": "2026/07/ai-cut-cost-vs-grow-revenue",
      "title": "Cutting Costs vs Growing Revenue With AI: Which Should Your Business Do First?",
      "publishedAt": "2026-07-03T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-11bc8122-bed8-4258-8a16-e16e45b48243-medium.webp",
      "socialMediaPost": "Most small businesses are buying AI lead-gen tools when what they actually need is 10 hours a week back. Here is the decision rule that tells you which to do first, tied to your margin and capacity.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/ai-cut-cost-vs-grow-revenue",
      "file": "/data/manual-blog/ai-cut-cost-vs-grow-revenue.json",
      "category": "insights",
      "hashtags": "#AIAutomation #SmallBusiness #AIStrategy #BusinessGrowth #CostReduction"
    },
    {
      "slug": "2026/07/automate-document-processing-ai",
      "title": "Automating Document Processing With AI: Invoices, Contracts, and Forms",
      "publishedAt": "2026-07-02T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d13f77f8-497a-4e37-acc5-158357ae07a1-medium.webp",
      "socialMediaPost": "AI document processing is not magic. It is a four-stage pipeline: OCR, structured extraction, schema validation, human review of low-confidence fields. Treat extraction accuracy as a number you measure, not a vibe you hope for.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/automate-document-processing-ai",
      "file": "/data/manual-blog/automate-document-processing-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #DocumentProcessing #InvoiceExtraction #LLMEngineering #AIArchitecture"
    },
    {
      "slug": "2026/07/ai-expert-qa-session-worth-it",
      "title": "Is a One-Hour AI Expert Q&A Session Worth It? When to Book One",
      "publishedAt": "2026-07-02T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-1ea3a720-0732-40ca-999e-6a04b623e384-medium.webp",
      "socialMediaPost": "A focused one-hour Q&A with an AI expert costs less than an hour of your team's collective salary yet can unblock a sprint. Here is exactly when it is worth it, and when you are wasting it.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/07/ai-expert-qa-session-worth-it",
      "file": "/data/manual-blog/ai-expert-qa-session-worth-it.json",
      "category": "insights",
      "hashtags": "#AIConsulting #ArtificialIntelligence #AIWorkshop #SoftwareEngineering #AIArchitecture"
    },
    {
      "slug": "2026/07/ai-pilot-to-production",
      "title": "Why 80% of AI Pilots Never Reach Production (and How to Be the 20%)",
      "publishedAt": "2026-07-02T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-6340acb7-06cc-4ec7-8282-da2db0f2dea5-medium.webp",
      "socialMediaPost": "80% of AI pilots die before production. The cause is almost never the model. It's the absence of evals, the wrong first use case, and no one who owns the path from demo to deploy.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-pilot-to-production",
      "file": "/data/manual-blog/ai-pilot-to-production.json",
      "category": "insights",
      "hashtags": "#AIStrategy #LLMProduction #AIConsulting #EnterpriseAI #MLOps"
    },
    {
      "slug": "2026/07/rag-inside-ai-agents",
      "title": "RAG Inside an AI Agent: Giving Agents the Right Context",
      "publishedAt": "2026-07-02T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-6887b0a9-3253-49cb-8198-f8da1da8f520-medium.webp",
      "socialMediaPost": "Most teams bolt RAG onto agents as a static context prefix. That is the wrong architecture. Here is how retrieval should actually work inside a production AI agent.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/rag-inside-ai-agents",
      "file": "/data/manual-blog/rag-inside-ai-agents.json",
      "category": "insights",
      "hashtags": "#RAG #AIAgents #LLM #RetrievalAugmentedGeneration #AIArchitecture #ProductionAI"
    },
    {
      "slug": "2026/07/eval-driven-development-ai",
      "title": "Eval-Driven Development: How to Test an AI System That Has No Right Answer",
      "publishedAt": "2026-07-02T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4088cbb2-1c68-4d15-a9d4-658046682d3b-medium.webp",
      "socialMediaPost": "Testing an LLM app is not guesswork. You build a representative dataset, pick the right scoring method for each behavior, and run evals in CI so prompt changes stop being coin flips. Here is exactly how.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/07/eval-driven-development-ai",
      "file": "/data/manual-blog/eval-driven-development-ai.json",
      "category": "insights",
      "hashtags": "#LLMEvals #AIEngineering #PromptEngineering #AIArchitecture #MachineLearning"
    },
    {
      "slug": "2026/07/senior-engineer-to-ai-leadership",
      "title": "From Senior Engineer to AI Leadership: Leveling Up When the Models Keep Changing",
      "publishedAt": "2026-07-01T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-2087a30c-2648-4aa7-8916-b2e1f6cd09ae-medium.webp",
      "socialMediaPost": "The fastest path from senior engineer to AI leadership is not more model benchmarks. It is owning the eval and risk story so well that leadership stops second-guessing your calls.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/senior-engineer-to-ai-leadership",
      "file": "/data/manual-blog/senior-engineer-to-ai-leadership.json",
      "category": "insights",
      "hashtags": "#AILeadership #StaffEngineer #AIEngineering #CareerGrowth #SoftwareEngineering"
    },
    {
      "slug": "2026/07/automate-sales-followups-ai",
      "title": "How to Automate Sales Follow-Ups and Lead Qualification With AI",
      "publishedAt": "2026-07-01T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-8ed91127-caab-4e3d-9ef3-3cdab5d00024-medium.webp",
      "socialMediaPost": "Most teams automate the wrong thing first: they auto-send AI-drafted follow-ups and then wonder why reply rates drop. The fix is keeping humans on the send button while letting AI do the enrichment and drafting work inside the CRM.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/automate-sales-followups-ai",
      "file": "/data/manual-blog/automate-sales-followups-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #SalesAutomation #LeadQualification #LLM #AISales"
    },
    {
      "slug": "2026/07/embeddings-vector-databases-explained",
      "title": "Embeddings and Vector Databases Explained for Non-ML Builders",
      "publishedAt": "2026-07-01T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-dbeadaa9-4af9-4720-983f-cd69495a253d-medium.webp",
      "socialMediaPost": "Most teams reach for Pinecone or Weaviate before they need them. pgvector inside your existing Postgres handles millions of rows fine, and embeddings are simpler than the ML crowd makes them sound.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/embeddings-vector-databases-explained",
      "file": "/data/manual-blog/embeddings-vector-databases-explained.json",
      "category": "insights",
      "hashtags": "#Embeddings #VectorDatabase #AIEngineering #pgvector #RAG #LLM"
    },
    {
      "slug": "2026/07/ai-governance-framework-smb",
      "title": "AI Governance for SMBs: A Lightweight Policy Framework You Can Actually Enforce",
      "publishedAt": "2026-07-01T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4100eacf-641e-4deb-8cd7-36764a963c3d-medium.webp",
      "socialMediaPost": "Most SMB AI governance frameworks die on the shelf because they were written for enterprises with legal departments. Here is the three-document model that actually gets enforced in small teams.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/ai-governance-framework-smb",
      "file": "/data/manual-blog/ai-governance-framework-smb.json",
      "category": "insights",
      "hashtags": "#AIGovernance #AIPolicy #SMB #FractionalAI #AIStrategy #EnterprisAI"
    },
    {
      "slug": "2026/07/how-long-until-ai-pays-off",
      "title": "How Long Until AI Pays for Itself? Setting Realistic Expectations and Timelines",
      "publishedAt": "2026-07-01T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-ff1a71fb-17aa-44db-8b75-2f4f07f19b2c-medium.webp",
      "socialMediaPost": "Most businesses expect AI to pay off in 90 days. It rarely does, and that's not a failure. Here's the real payback timeline and what your first project should actually measure.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/07/how-long-until-ai-pays-off",
      "file": "/data/manual-blog/how-long-until-ai-pays-off.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIAutomation #BusinessAI #AIROi #EnterpriseAI"
    },
    {
      "slug": "2026/06/wasted-ai-spend",
      "title": "How AI Budgets Get Wasted: The 7 Most Common Money Pits",
      "publishedAt": "2026-06-30T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-19dd9139-4b65-4b2d-b04e-98e82df2cc5e-medium.webp",
      "socialMediaPost": "Most companies don't fail at AI because they lack ambition. They fail because they keep paying for pilots that never ship, models they fine-tuned before trying RAG, and agents that cost $40 per run to do a $0.10 job. Here are the 7 money pits I see repeatedly.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/wasted-ai-spend",
      "file": "/data/manual-blog/wasted-ai-spend.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIConsultant #LLMEngineering #EnterpriseAI #AIBudget"
    },
    {
      "slug": "2026/06/custom-mcp-server-for-agents",
      "title": "Should You Build a Custom MCP Server for Your AI Agent?",
      "publishedAt": "2026-06-30T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-87f63bde-85f5-4989-adec-7dfc4c44b75f-medium.webp",
      "socialMediaPost": "Most teams reach for a custom MCP server when they actually need three tool definitions and a good retrieval layer. I break down exactly when MCP is the right call, and when it is just premature plumbing.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/custom-mcp-server-for-agents",
      "file": "/data/manual-blog/custom-mcp-server-for-agents.json",
      "category": "insights",
      "hashtags": "#MCPServer #AIAgent #LLMEngineering #AIArchitecture #AgentDevelopment"
    },
    {
      "slug": "2026/06/automate-customer-support-ai",
      "title": "How to Automate Customer Support With AI Without Wrecking Your CSAT",
      "publishedAt": "2026-06-30T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b1e381ec-5abd-4f98-a2aa-e8abab8bc1f9-medium.webp",
      "socialMediaPost": "Most AI support automations fail not because the AI is bad, but because the team replaced humans instead of routing work smarter. Here is the tiered model that actually protects CSAT.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/automate-customer-support-ai",
      "file": "/data/manual-blog/automate-customer-support-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #CustomerSupport #ArtificialIntelligence #ProductEngineering #AIAgents"
    },
    {
      "slug": "2026/06/ai-guardrails-output-validation",
      "title": "AI Guardrails and Output Validation: A Production Checklist",
      "publishedAt": "2026-06-30T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-8d90914d-f1d7-4f07-b6a1-39c2a60f8802-medium.webp",
      "socialMediaPost": "Most teams add a moderation API and call it guardrails. That catches profanity. It doesn't catch a hallucinated account number, a prompt injection through a RAG chunk, or a tool call that deletes a record. Here's the five-layer production checklist I use.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-guardrails-output-validation",
      "file": "/data/manual-blog/ai-guardrails-output-validation.json",
      "category": "insights",
      "hashtags": "#AIGuardrails #LLMSecurity #AIArchitecture #ProductionAI #RAG #AIEngineering"
    },
    {
      "slug": "2026/06/become-an-ai-tech-lead",
      "title": "Becoming an AI Tech Lead: The Skills That Aren't on Any Course Syllabus",
      "publishedAt": "2026-06-30T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-e351c42a-a860-4d45-b814-6ebe3e8d0ca7-medium.webp",
      "socialMediaPost": "Leading an AI engineering team is not about knowing which model to call. It is about managing non-determinism, building eval pipelines before features, and saying no to agent overreach before it ships to production.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/become-an-ai-tech-lead",
      "file": "/data/manual-blog/become-an-ai-tech-lead.json",
      "category": "insights",
      "hashtags": "#AILeadership #AIEngineer #TechLead #EngineeringLeadership #AITeams #SoftwareEngineering"
    },
    {
      "slug": "2026/06/ai-agent-tool-calling-mcp",
      "title": "How to Give an AI Agent Tools: Tool Calling and MCP Explained",
      "publishedAt": "2026-06-29T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-3e3a2dfc-d393-418f-83cb-66f1f70933c1-medium.webp",
      "socialMediaPost": "Tool calling is the real product surface of an AI agent, not the model. Get the schema design wrong and the model hallucinates arguments or skips tools entirely. Here is how to do it right in production.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-tool-calling-mcp",
      "file": "/data/manual-blog/ai-agent-tool-calling-mcp.json",
      "category": "insights",
      "hashtags": "#AIAgents #MCP #ToolCalling #LLM #AgentDevelopment #AIEngineering"
    },
    {
      "slug": "2026/06/evaluate-ai-vendor-quote",
      "title": "How to Evaluate an AI Vendor Quote (and Spot the Padding)",
      "publishedAt": "2026-06-29T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-e4a6d5e3-833e-4411-8e47-85375207d0bb-medium.webp",
      "socialMediaPost": "Most six-figure AI proposals are 40% real work and 60% architecture theatre. Here is the exact line-item teardown I use to spot the padding before you sign anything.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/evaluate-ai-vendor-quote",
      "file": "/data/manual-blog/evaluate-ai-vendor-quote.json",
      "category": "insights",
      "hashtags": "#AIConsulting #AIStrategy #EnterpriseAI #AIVendor"
    },
    {
      "slug": "2026/06/get-team-ai-productive",
      "title": "How to Get Your Whole Team AI-Productive in 90 Days",
      "publishedAt": "2026-06-29T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d3692d0f-c2f1-490d-8f01-8f2f28e16ee5-medium.webp",
      "socialMediaPost": "Buying AI licenses without enablement is why 80% of seats go unused. Here is the staged 90-day rollout framework I use to actually get teams AI-productive, not just AI-licensed.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/get-team-ai-productive",
      "file": "/data/manual-blog/get-team-ai-productive.json",
      "category": "insights",
      "hashtags": "#AIAdoption #TeamEnablement #AIProductivity #AIWorkshop #EnterpriseAI #AIStrategy"
    },
    {
      "slug": "2026/06/low-risk-ai-automation-pilot",
      "title": "How to Run a Low-Risk AI Automation Pilot in 30 Days",
      "publishedAt": "2026-06-29T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a0922042-d913-4ac8-82e3-eaa4765b78f2-medium.webp",
      "socialMediaPost": "Most AI automation pilots fail not because of the model, but because teams skip shadow mode and write no kill switch. Here is the exact 30-day plan I use to run a pilot on real production data with zero operational risk until week 3.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/low-risk-ai-automation-pilot",
      "file": "/data/manual-blog/low-risk-ai-automation-pilot.json",
      "category": "insights",
      "hashtags": "#AIAutomation #AIArchitecture #SoftwareEngineering #ProductionAI #AIStrategy"
    },
    {
      "slug": "2026/06/set-ai-strategy-for-team-with-none",
      "title": "How to Set AI Strategy for a Team That Has None (Without Boiling the Ocean)",
      "publishedAt": "2026-06-29T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a654d4c9-7f21-4d90-b4a5-961ddbdab7a9-medium.webp",
      "socialMediaPost": "Most companies waste their first six months on AI by mandating 'AI everywhere' before solving a single real problem. Here is the use-case-led approach that actually ships something valuable.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/set-ai-strategy-for-team-with-none",
      "file": "/data/manual-blog/set-ai-strategy-for-team-with-none.json",
      "category": "insights",
      "hashtags": "#AIStrategy #FractionalCTO #EnterpriseAI #AILeadership #ProductStrategy"
    },
    {
      "slug": "2026/06/ai-roi-small-business",
      "title": "What's the Realistic ROI of AI for a Small Business? How to Calculate It",
      "publishedAt": "2026-06-28T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-15aa4c78-a8ee-4216-9b0e-b14560b6db96-medium.webp",
      "socialMediaPost": "Most small businesses are sold AI on hype, not math. Here is the honest ROI formula I use with clients: payback period, hidden costs, and the three questions to ask before you spend a single euro.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-roi-small-business",
      "file": "/data/manual-blog/ai-roi-small-business.json",
      "category": "insights",
      "hashtags": "#AIforBusiness #SmallBusiness #AIAutomation #BusinessROI #ArtificialIntelligence"
    },
    {
      "slug": "2026/06/when-ai-agent-is-overkill",
      "title": "When an AI Agent Is Overkill (And a Workflow Would Be Better)",
      "publishedAt": "2026-06-28T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-5b5ab3f1-58cf-4239-a824-e5850d35ecdd-medium.webp",
      "socialMediaPost": "Most jobs that sound like 'AI agent' work are just a deterministic pipeline with one LLM call in the middle. Here's the decision framework I use before building anything autonomous.",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2026/06/when-ai-agent-is-overkill",
      "file": "/data/manual-blog/when-ai-agent-is-overkill.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLM #AIEngineering #ProductionAI #MLOps #SoftwareArchitecture"
    },
    {
      "slug": "2026/06/reliable-non-deterministic-ai-systems",
      "title": "How to Make a Non-Deterministic AI System Reliable in Production",
      "publishedAt": "2026-06-28T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-9a2e28b9-72bb-47ef-9d4b-db1bf48cb1f2-medium.webp",
      "socialMediaPost": "Reliability in LLM applications comes from the system around the model, not a better prompt. Here are the concrete patterns I use in production: structured outputs, schema validation, idempotency, retries, fallbacks, evals, and observability.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/reliable-non-deterministic-ai-systems",
      "file": "/data/manual-blog/reliable-non-deterministic-ai-systems.json",
      "category": "insights",
      "hashtags": "#AIArchitecture #LLMProduction #AIEngineering #GenerativeAI #MLOps"
    },
    {
      "slug": "2026/06/upskill-dev-team-on-llms-fast",
      "title": "How to Upskill Your Dev Team on LLMs and Agents Fast (Without a 6-Month Program)",
      "publishedAt": "2026-06-28T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-347fdb6b-5832-4a6b-bfb0-5d97b4ea4cff-medium.webp",
      "socialMediaPost": "The fastest way to upskill your dev team on LLMs and AI agents is not a course. It is shipping one real internal feature with evals in 30 days. Here is the exact plan.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/upskill-dev-team-on-llms-fast",
      "file": "/data/manual-blog/upskill-dev-team-on-llms-fast.json",
      "category": "insights",
      "hashtags": "#LLMs #AIEngineering #EngineeringTeams #AgentDevelopment #AIUpskilling"
    },
    {
      "slug": "2026/06/what-is-rag",
      "title": "RAG Explained Simply: How AI Answers From Your Own Documents",
      "publishedAt": "2026-06-28T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-2733b294-3dab-49a1-adaf-82ac275c25c9-medium.webp",
      "socialMediaPost": "Most RAG demos work fine on 10 documents and fall apart on 10,000. The failure is almost never the LLM. It is bad chunking, missing reranking, and no evals. Here is the full production picture.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/what-is-rag",
      "file": "/data/manual-blog/what-is-rag.json",
      "category": "insights",
      "hashtags": "#RAG #RetrievalAugmentedGeneration #AIEngineering #LLM"
    },
    {
      "slug": "2026/06/ai-plan-second-opinion",
      "title": "Get a Second Opinion on Your AI Plan Before You Spend the Budget",
      "publishedAt": "2026-06-27T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-81f5d8a8-aae2-48c6-84b7-ea3669ae44e4-medium.webp",
      "socialMediaPost": "Before you sign that AI vendor contract or greenlight the roadmap, get an independent reviewer to check the five things your vendor structurally cannot tell you honestly. Here is exactly what that review looks like.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-plan-second-opinion",
      "file": "/data/manual-blog/ai-plan-second-opinion.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIConsultant #VendorReview #EnterpriseAI #AIArchitecture"
    },
    {
      "slug": "2026/06/ai-automation-roi-payback",
      "title": "AI Automation ROI: How to Calculate Payback Before You Build Anything",
      "publishedAt": "2026-06-27T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-a1fba479-53be-4207-a39c-466b8b352cdd-medium.webp",
      "socialMediaPost": "Most AI automation ROI pitches skip the part where you keep paying token and maintenance costs forever. Here is the formula that includes all of it, so you know your real payback before you commit a single dollar.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-automation-roi-payback",
      "file": "/data/manual-blog/ai-automation-roi-payback.json",
      "category": "insights",
      "hashtags": "#AIAutomation #ROI #AIStrategy #ProductionAI"
    },
    {
      "slug": "2026/06/ai-agent-build-vs-buy",
      "title": "Build vs Buy an AI Agent: When a Custom Agent Is Worth It",
      "publishedAt": "2026-06-27T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-47c476a7-35f2-4f4c-bb19-a7ecdcc24fb1-medium.webp",
      "socialMediaPost": "Most teams asking 'should we build a custom AI agent?' already have their answer: no. Here is a concrete 5-question framework that tells you exactly when a custom build is worth it and when you are just burning time and budget.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-build-vs-buy",
      "file": "/data/manual-blog/ai-agent-build-vs-buy.json",
      "category": "insights",
      "hashtags": "#AIAgents #AIArchitecture #BuildVsBuy #AIEngineering #LLMOps"
    },
    {
      "slug": "2026/06/ai-agent-orchestration-framework",
      "title": "How to Choose an AI Agent Orchestration Framework (or Skip One)",
      "publishedAt": "2026-06-27T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-2118f3ad-9fb4-4fa1-959a-9cd7ec3a56b3-medium.webp",
      "socialMediaPost": "The framework you pick matters far less than how you architect the orchestration layer around it. Here is when LangGraph, CrewAI, or a hand-rolled solution is the right call, and the one design principle that keeps you from being locked in.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-orchestration-framework",
      "file": "/data/manual-blog/ai-agent-orchestration-framework.json",
      "category": "insights",
      "hashtags": "#AIEngineering #LangGraph #AgentFrameworks #AIArchitecture"
    },
    {
      "slug": "2026/06/ai-engineering-mentorship-vs-bootcamp",
      "title": "Mentorship vs Self-Taught vs Bootcamp: The Fastest Way to Learn AI Engineering",
      "publishedAt": "2026-06-27T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-c271a904-dfe0-40a1-99a2-d4df73956ef4-medium.webp",
      "socialMediaPost": "Self-taught covers the fundamentals fine. But the months engineers lose on production judgment, evals, guardrails, and real retrieval pipelines? That is what mentorship compresses. Honest breakdown inside.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-engineering-mentorship-vs-bootcamp",
      "file": "/data/manual-blog/ai-engineering-mentorship-vs-bootcamp.json",
      "category": "insights",
      "hashtags": "#AIEngineering #SoftwareEngineering #TechMentorship #CareerGrowth #LLMEngineering"
    },
    {
      "slug": "2026/06/zapier-vs-make-vs-n8n-ai-workflows",
      "title": "Zapier vs Make vs n8n for AI Workflows: Which Automation Platform to Pick in 2026",
      "publishedAt": "2026-06-26T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-55340d3e-5edb-45ea-a908-389697d3d32a-medium.webp",
      "socialMediaPost": "Zapier and Make will quietly bankrupt you once LLM calls enter the picture. Here is the honest 2026 breakdown on which automation platform actually fits AI workflows, and why n8n wins the moment token counts get real.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/zapier-vs-make-vs-n8n-ai-workflows",
      "file": "/data/manual-blog/zapier-vs-make-vs-n8n-ai-workflows.json",
      "category": "insights",
      "hashtags": "#n8n #AIAutomation #Zapier #Make #LLMOps #AIWorkflows"
    },
    {
      "slug": "2026/06/fractional-ai-officer-30-60-90-day-plan",
      "title": "The First 30-60-90 Days of a Fractional AI Officer: A Concrete Deliverables Plan",
      "publishedAt": "2026-06-26T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-5293f5c0-a887-45cc-a1d0-01b7d6f97857-medium.webp",
      "socialMediaPost": "Most companies bring on a fractional AI officer and get slide decks. Here is the exact deliverables plan I follow: audit and quick wins in 30 days, a costed roadmap and guardrails in 60, shipped pilots with evals and real governance by 90.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/fractional-ai-officer-30-60-90-day-plan",
      "file": "/data/manual-blog/fractional-ai-officer-30-60-90-day-plan.json",
      "category": "insights",
      "hashtags": "#FractionalAI #AIStrategy #AILeadership #EnterpriseAI #AIGovernance"
    },
    {
      "slug": "2026/06/ai-use-cases-by-business-function",
      "title": "AI Use Cases by Business Function: Sales, Support, Marketing, Ops, and Finance",
      "publishedAt": "2026-06-26T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d2971f8b-e76f-44e4-b286-7dca2739cf04-medium.webp",
      "socialMediaPost": "Most businesses chase AI use cases in the wrong order. Here is a department-by-department map of the proven, boring-but-profitable AI wins, and the single highest-ROI place to start in each function.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-use-cases-by-business-function",
      "file": "/data/manual-blog/ai-use-cases-by-business-function.json",
      "category": "insights",
      "hashtags": "#AIUseCases #BusinessAI #AIAutomation #EnterpriseAI #AIStrategy"
    },
    {
      "slug": "2026/06/build-vs-buy-ai-software",
      "title": "When Building Your Own AI Is a Mistake (and the Cheaper Alternative)",
      "publishedAt": "2026-06-26T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-f8604db4-634d-4e28-aae1-87ebe5d2b0fb-medium.webp",
      "socialMediaPost": "Most companies building custom AI are wasting money. Buy the wrapper, own your data and evals, and only build custom when your unit economics or data moat actually require it.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/build-vs-buy-ai-software",
      "file": "/data/manual-blog/build-vs-buy-ai-software.json",
      "category": "insights",
      "hashtags": "#AIStrategy #BuildVsBuy #LLM #AIConsulting #ProductEngineering"
    },
    {
      "slug": "2026/06/ai-agent-development-timeline",
      "title": "How Long Does It Take to Build a Production AI Agent?",
      "publishedAt": "2026-06-26T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-781c1f17-63cb-494d-8de3-97f75525930a-medium.webp",
      "socialMediaPost": "A prototype AI agent takes a weekend. A production AI agent takes 8 to 20 weeks, and the long pole is never the LLM call. Here is the honest phase-by-phase breakdown.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-development-timeline",
      "file": "/data/manual-blog/ai-agent-development-timeline.json",
      "category": "insights",
      "hashtags": "#AIAgent #AIEngineering #LLMOps #ProductionAI #AIArchitecture"
    },
    {
      "slug": "2026/06/ai-training-non-technical-team",
      "title": "What an AI Training for a Non-Technical Team Should Actually Cover",
      "publishedAt": "2026-06-25T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-5c87ae85-6800-4e68-bfda-430de8f76263-medium.webp",
      "socialMediaPost": "Most AI training for non-technical teams wastes a full day on prompt engineering and skips the one skill that prevents real damage: knowing when NOT to trust the model. Here is the curriculum that actually changes behavior.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-training-non-technical-team",
      "file": "/data/manual-blog/ai-training-non-technical-team.json",
      "category": "insights",
      "hashtags": "#AITraining #AILiteracy #NonTechnicalTeams #AIWorkplace #AIAdoption"
    },
    {
      "slug": "2026/06/no-code-vs-custom-ai-automation",
      "title": "No-Code vs Custom AI Automation: Zapier, Make, n8n, or Build It Yourself?",
      "publishedAt": "2026-06-25T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-28798968-30ac-40e6-9c4a-f2b4bd698bbb-medium.webp",
      "socialMediaPost": "Most teams overpay for Zapier or under-build with n8n. Here is the exact decision matrix I use: volume, logic complexity, data sensitivity, and the cost cliff where no-code stops winning.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/no-code-vs-custom-ai-automation",
      "file": "/data/manual-blog/no-code-vs-custom-ai-automation.json",
      "category": "insights",
      "hashtags": "#AIAutomation #Zapier #n8n #NoCode #WorkflowAutomation #SoftwareArchitecture"
    },
    {
      "slug": "2026/06/ai-agent-vs-workflow",
      "title": "Agent vs Workflow vs Chatbot: When You Actually Need Autonomy",
      "publishedAt": "2026-06-25T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-e5977b2d-ab89-4649-87d0-d835a7f478af-medium.webp",
      "socialMediaPost": "Most teams building 'AI agents' actually need workflows. Autonomy costs reliability and money. Here is the line I draw in production systems.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-vs-workflow",
      "file": "/data/manual-blog/ai-agent-vs-workflow.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMOps #AIArchitecture #AIWorkflow #AgenticAI"
    },
    {
      "slug": "2026/06/single-agent-vs-multi-agent",
      "title": "Single Agent vs Multi-Agent: Why Most Teams Need Fewer Agents",
      "publishedAt": "2026-06-25T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d4359e22-7792-4926-8622-c62488053f63-medium.webp",
      "socialMediaPost": "Most teams reach for multi-agent systems because they sound sophisticated. They pay for it in latency, cost, and failures that are nearly impossible to debug. Here's the honest decision framework.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/single-agent-vs-multi-agent",
      "file": "/data/manual-blog/single-agent-vs-multi-agent.json",
      "category": "insights",
      "hashtags": "#AIArchitecture #AgentSystems #LLMEngineering #AIConsulting"
    },
    {
      "slug": "2026/06/what-to-learn-first-llms",
      "title": "What an Engineer Should Actually Learn First About LLMs (Not Transformers Math)",
      "publishedAt": "2026-06-25T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-43a4d8ff-8fdf-423e-8a3b-ad5e5e904bc0-medium.webp",
      "socialMediaPost": "Most engineers spend weeks on attention mechanisms before writing a single prompt that ships. Here is the actual learning order that pays off fastest when building with LLMs.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/what-to-learn-first-llms",
      "file": "/data/manual-blog/what-to-learn-first-llms.json",
      "category": "insights",
      "hashtags": "#LLMEngineering #AIEngineering #PromptEngineering #SoftwareEngineering #BuildingWithAI"
    },
    {
      "slug": "2026/06/ai-agent-build-cost-vs-run-cost",
      "title": "Build Cost vs Run Cost: Why Token Bills Sink AI Agent Projects",
      "publishedAt": "2026-06-24T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-d88b9fa7-247c-40c8-ab88-f38a344dae77-medium.webp",
      "socialMediaPost": "Most AI agent projects die after launch, not before it. The build cost is a one-time hit. The token bill is forever, and nobody modeled it. Here is the framework I use to predict and control it.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-build-cost-vs-run-cost",
      "file": "/data/manual-blog/ai-agent-build-cost-vs-run-cost.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMCost #AIArchitecture #TokenOptimization #AIEngineering"
    },
    {
      "slug": "2026/06/ai-build-buy-wait",
      "title": "Build, Buy, or Wait: How to Decide on Any AI Capability",
      "publishedAt": "2026-06-24T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-26158c97-3054-4ee6-8048-eed4ba4d2ab6-medium.webp",
      "socialMediaPost": "Most companies that ask \"should we build AI or buy a tool\" are asking the wrong question. The right third option, waiting, saves more budget than any vendor will ever tell you. Here is the decision framework I use with clients.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-build-buy-wait",
      "file": "/data/manual-blog/ai-build-buy-wait.json",
      "category": "insights",
      "hashtags": "#AIStrategy #BuildVsBuy #AIConsultant #EnterpriseAI #AIArchitecture #ProductAI"
    },
    {
      "slug": "2026/06/fractional-ai-officer-cost",
      "title": "Fractional AI Officer Cost: Day Rates, Retainers, and What You Get for the Money",
      "publishedAt": "2026-06-24T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4a516926-727c-4c8f-8085-5de355778630-medium.webp",
      "socialMediaPost": "Most companies hiring a fractional AI officer are either overpaying for a retainer they barely use, or underpaying for advice too thin to move the needle. Here is what the numbers actually look like and how to tell which side you are on.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/fractional-ai-officer-cost",
      "file": "/data/manual-blog/fractional-ai-officer-cost.json",
      "category": "insights",
      "hashtags": "#FractionalAIOfficer #AILeadership #AIStrategy #ChiefAIOfficer #StartupCTO"
    },
    {
      "slug": "2026/06/where-small-business-should-start-with-ai",
      "title": "Where Should a Small Business Start With AI? (Pick One Workflow, Not a Platform)",
      "publishedAt": "2026-06-24T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-f0c9c7dd-a935-4223-9a9e-12a2c5ba7711-medium.webp",
      "socialMediaPost": "Most small businesses buy an AI platform before they understand the problem. Pick one workflow first, prove the value, then expand. Here is the exact test I use to find it.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/06/where-small-business-should-start-with-ai",
      "file": "/data/manual-blog/where-small-business-should-start-with-ai.json",
      "category": "insights",
      "hashtags": "#AIForBusiness #SmallBusiness #AIAutomation #BusinessAI #AIStrategy"
    },
    {
      "slug": "2026/06/observability-first-ai-agents",
      "title": "Build AI Agents on Observability, Not Around It",
      "publishedAt": "2026-06-24T10:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4ac9c827-bbec-4ab2-b100-1b01b0bafc34-medium.webp",
      "socialMediaPost": "AI agents do not crash. They loop, drift, and quietly degrade with no error code. Here is why observability has to be the foundation you build agents on, not a layer you bolt on at the end.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/06/observability-first-ai-agents",
      "file": "/data/manual-blog/observability-first-ai-agents.json",
      "category": "insights",
      "hashtags": "#AIAgents #Observability #LLMOps #AIEngineering #AgenticAI"
    },
    {
      "slug": "2026/06/when-not-to-automate-with-ai",
      "title": "When You Should NOT Automate a Workflow With AI",
      "publishedAt": "2026-06-24T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-c337d88b-ab23-4dbf-b84e-b4cca6b0d2fd-medium.webp",
      "socialMediaPost": "Most teams automate the wrong things first. Here are the concrete signals that tell you to skip the AI agent and use a form instead.",
      "readingTime": "9m",
      "url": "https://zalt.me/blog/2026/06/when-not-to-automate-with-ai",
      "file": "/data/manual-blog/when-not-to-automate-with-ai.json",
      "category": "insights",
      "hashtags": "#AIAutomation #AIStrategy #LLMOps #SoftwareArchitecture"
    },
    {
      "slug": "2026/06/ai-agent-development-cost",
      "title": "What Does It Cost to Build a Custom AI Agent in 2026?",
      "publishedAt": "2026-06-23T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-949d7436-a12e-4110-8013-46b5fad64ebe-medium.webp",
      "socialMediaPost": "Everyone asks about the build cost for a custom AI agent. Nobody budgets for the recurring run cost, which can exceed the build cost within 6 months. Here's the full 2026 breakdown from production systems.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-development-cost",
      "file": "/data/manual-blog/ai-agent-development-cost.json",
      "category": "insights",
      "hashtags": "#AIAgents #AIEngineering #LLMCost #AIDevelopment #ProductionAI"
    },
    {
      "slug": "2026/06/when-is-fine-tuning-worth-it",
      "title": "When Fine-Tuning Is Worth It (and the 4 Times It Isn't)",
      "publishedAt": "2026-06-23T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-cdda8d00-8da0-407a-8b8c-3c3ef35e8bdb-medium.webp",
      "socialMediaPost": "Most fine-tuning projects are prestige-driven waste. I've seen teams spend 3 months and $40k fine-tuning a model when a well-designed RAG pipeline and a strong system prompt would have solved the same problem in 2 weeks for under $5k.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/when-is-fine-tuning-worth-it",
      "file": "/data/manual-blog/when-is-fine-tuning-worth-it.json",
      "category": "insights",
      "hashtags": "#LLM #FineTuning #AIArchitecture #RAG #AIConsulting #MLEngineering"
    },
    {
      "slug": "2026/06/ai-engineering-skills-roadmap",
      "title": "The AI Engineering Skills Roadmap: What to Learn First (and What to Skip)",
      "publishedAt": "2026-06-23T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-8d9262fb-23b4-464d-9421-92a5e59b37b8-medium.webp",
      "socialMediaPost": "Most AI engineering roadmaps tell you to learn PyTorch before you can ship anything useful. Here is the actual dependency-ordered path that gets you to production in months, not years, and it starts with prompting and evals, not model training.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-engineering-skills-roadmap",
      "file": "/data/manual-blog/ai-engineering-skills-roadmap.json",
      "category": "insights",
      "hashtags": "#AIEngineering #MachineLearning #SoftwareEngineering #CareerDevelopment #LLM"
    },
    {
      "slug": "2026/06/ai-roadmap-prioritization",
      "title": "How to Build an AI Roadmap That Survives Contact With Reality",
      "publishedAt": "2026-06-23T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-b5fd6ab8-239a-4cce-a595-1d0c80ec3fd5-medium.webp",
      "socialMediaPost": "Most AI roadmaps die because teams chase the flashiest demo, not the highest-certainty win. I use a 4-factor scoring model to kill bad bets early and ship the boring initiatives that actually compound.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-roadmap-prioritization",
      "file": "/data/manual-blog/ai-roadmap-prioritization.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIRoadmap #EnterpriseAI #AIConsultant"
    },
    {
      "slug": "2026/06/signs-workflow-ready-for-ai-automation",
      "title": "5 Signs a Workflow Is Ready for AI Automation (and 4 Signs It Isn't)",
      "publishedAt": "2026-06-23T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-0267727c-2ca2-47aa-86f6-2015237c2dbc-medium.webp",
      "socialMediaPost": "Most teams automate the wrong things first and wonder why AI fails to deliver ROI. Here are the 5 signs a workflow is genuinely ready for AI automation, and the 4 signs that mean you should walk away.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/signs-workflow-ready-for-ai-automation",
      "file": "/data/manual-blog/signs-workflow-ready-for-ai-automation.json",
      "category": "insights",
      "hashtags": "#AIAutomation #WorkflowAutomation #AIStrategy #EnterpriseAI #ProductionAI"
    },
    {
      "slug": "2026/06/ai-agent-reliability-accuracy-targets",
      "title": "How Reliable Can an AI Agent Actually Be? Setting Honest Accuracy Targets",
      "publishedAt": "2026-06-22T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-32e38c14-a294-4251-a2d5-ea7207161777-medium.webp",
      "socialMediaPost": "A 95%-accurate agent running 10 steps is only ~60% reliable end-to-end. Compounding error is the thing most teams don't see coming until they're in production. Here's how I actually design around it.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-reliability-accuracy-targets",
      "file": "/data/manual-blog/ai-agent-reliability-accuracy-targets.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMReliability #AIEngineering #ProductionAI #AgentDesign"
    },
    {
      "slug": "2026/06/ai-workshop-that-sticks",
      "title": "How to Run an AI Workshop That Actually Sticks (Not a One-Off Demo Day)",
      "publishedAt": "2026-06-22T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4fd78844-54e7-4d21-88d5-808323c93d69-medium.webp",
      "socialMediaPost": "Most corporate AI workshops are expensive demo days that change nothing. Here is the bring-your-own-real-task format and the 30-day loop that actually makes new habits stick.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/ai-workshop-that-sticks",
      "file": "/data/manual-blog/ai-workshop-that-sticks.json",
      "category": "insights",
      "hashtags": "#AIWorkshop #AITraining #EngineeringTeams #AIProductivity"
    },
    {
      "slug": "2026/06/what-is-an-ai-agent",
      "title": "What Is an AI Agent, Really? A Builder's Definition (Not the Hype)",
      "publishedAt": "2026-06-22T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-36ad1d87-4a67-40a3-aace-7f2e29305a82-medium.webp",
      "socialMediaPost": "Most things sold as AI agents are just if-statements dressed up in LLM clothing. Here's the builder's definition of what a real agent actually is, and why you probably need a workflow instead.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/what-is-an-ai-agent",
      "file": "/data/manual-blog/what-is-an-ai-agent.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLM #AIEngineering #ArtificialIntelligence #SoftwareArchitecture"
    },
    {
      "slug": "2026/06/fractional-ai-officer-vs-consultant",
      "title": "Fractional AI Officer vs AI Consultant: Which One Does Your Company Actually Need?",
      "publishedAt": "2026-06-22T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-9123c905-aab0-4c2a-ac76-4f575f33dd4b-medium.webp",
      "socialMediaPost": "Most companies hire an AI consultant when they need a fractional AI officer, and vice versa. Here is exactly how to tell which one you actually need before you spend a dollar.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/fractional-ai-officer-vs-consultant",
      "file": "/data/manual-blog/fractional-ai-officer-vs-consultant.json",
      "category": "insights",
      "hashtags": "#FractionalAI #AIStrategy #AILeadership #AIConsulting"
    },
    {
      "slug": "2026/06/how-ai-helps-your-business",
      "title": "How Can AI Actually Help My Business? A No-Hype Guide for Owners",
      "publishedAt": "2026-06-22T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-f6a6f440-df5b-4532-b5c8-59bd00062b5f-medium.webp",
      "socialMediaPost": "Most AI advice for business owners is a tech list. Here is the real framing: AI is a cost lever, a revenue lever, and a risk lever. Know which one you need before you build anything.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/how-ai-helps-your-business",
      "file": "/data/manual-blog/how-ai-helps-your-business.json",
      "category": "insights",
      "hashtags": "#AIForBusiness #ArtificialIntelligence #AIStrategy #BusinessAutomation #AIConsulting"
    },
    {
      "slug": "2026/06/rag-vs-fine-tuning-vs-prompting",
      "title": "RAG vs Fine-Tuning vs Prompting: How to Actually Decide",
      "publishedAt": "2026-06-21T18:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-fefc0fc7-b24a-412b-ac6a-33c2f329df2e-medium.webp",
      "socialMediaPost": "Most teams debate RAG vs fine-tuning when they should just be writing better prompts. Here is the decision tree I actually use with production AI teams, and why fine-tuning is almost never the right first move.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/rag-vs-fine-tuning-vs-prompting",
      "file": "/data/manual-blog/rag-vs-fine-tuning-vs-prompting.json",
      "category": "insights",
      "hashtags": "#RAG #FineTuning #AIArchitecture #LLM #PromptEngineering #AIEngineering"
    },
    {
      "slug": "2026/06/backend-engineer-to-ai-engineer",
      "title": "From Backend Engineer to AI Engineer: The Realistic 2026 Transition Path",
      "publishedAt": "2026-06-21T15:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4d620d96-4f28-4fcd-a9ee-f0b20a9099a6-medium.webp",
      "socialMediaPost": "Your backend skills are already 70% of AI engineering. The real gap is not learning a new framework, it is developing judgment about non-determinism, evals, and when NOT to use an LLM.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/backend-engineer-to-ai-engineer",
      "file": "/data/manual-blog/backend-engineer-to-ai-engineer.json",
      "category": "insights",
      "hashtags": "#AIEngineering #BackendDeveloper #CareerTransition #LLMEngineering #SoftwareEngineering"
    },
    {
      "slug": "2026/06/ai-90-day-roadmap",
      "title": "From \"We Should Use AI\" to a 90-Day Roadmap: A Step-by-Step Plan",
      "publishedAt": "2026-06-21T13:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-391718aa-5610-4e79-9c14-33320e2522f6-medium.webp",
      "socialMediaPost": "Most 'we should use AI' conversations die in committee. Here is the exact 90-day sequence I use with clients to get something real into production by day 45, evals running before day 60, and a scaling plan in hand by day 90.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-90-day-roadmap",
      "file": "/data/manual-blog/ai-90-day-roadmap.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIConsulting #ProductAI #AIRoadmap #EnterpriseAI"
    },
    {
      "slug": "2026/06/which-workflows-to-automate-first",
      "title": "Which Business Workflows Should You Automate With AI First? A Prioritization Framework",
      "publishedAt": "2026-06-21T10:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-919019dd-7c92-4d1a-9812-8313bb00820d-medium.webp",
      "socialMediaPost": "Most companies automate the wrong thing first. Here is the scoring model I use to find the one boring back-office workflow that delivers real ROI before you touch anything customer-facing.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/which-workflows-to-automate-first",
      "file": "/data/manual-blog/which-workflows-to-automate-first.json",
      "category": "insights",
      "hashtags": "#AIAutomation #BusinessProcessAutomation #AIStrategy #WorkflowAutomation #EnterpriseAI"
    },
    {
      "slug": "2026/06/ai-agent-demo-to-production-gap",
      "title": "Why Your AI Agent Demo Works but Breaks in Production",
      "publishedAt": "2026-06-21T08:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-e6d82059-e36a-464a-8187-6fa9bb24d66a-medium.webp",
      "socialMediaPost": "Your AI agent works perfectly in the demo, then fails the moment a real user touches it. The problem isn't the model. It's the long tail of failure modes a happy-path demo never exercises.",
      "readingTime": "13m",
      "url": "https://zalt.me/blog/2026/06/ai-agent-demo-to-production-gap",
      "file": "/data/manual-blog/ai-agent-demo-to-production-gap.json",
      "category": "insights",
      "hashtags": "#AIAgents #LLMEngineering #ProductionAI #AIArchitecture #AgentDevelopment"
    },
    {
      "slug": "2026/06/how-to-architect-ai-system",
      "title": "How to Architect a Production AI System: A Senior Architect's Framework",
      "publishedAt": "2026-06-20T10:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-83711de2-272d-407a-9d0e-ced7ec9793e6-medium.webp",
      "socialMediaPost": "Most AI projects do not fail because of the model. They fail because no one architected the system around it. The seven layers of a production AI system, the decisions that matter, and the ones teams overthink.",
      "readingTime": "14m",
      "url": "https://zalt.me/blog/2026/06/how-to-architect-ai-system",
      "file": "/data/manual-blog/how-to-architect-ai-system.json",
      "category": "insights",
      "hashtags": "#AIArchitecture #AISystems #LLM #AIEngineering #ProductionAI"
    },
    {
      "slug": "2026/06/transformations-engine",
      "title": "The Transformations Engine Behind JAX",
      "publishedAt": "2026-06-19T07:13:08+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-3e3514d4-3348-4203-be1c-9312095680af.png",
      "socialMediaPost": "Curious how JAX actually wires gradients, JIT, and vectorization together? This piece breaks down the transformations engine behind JAX’s behavior.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/06/transformations-engine",
      "file": "/data/automated-blog/2026/06/transformations-engine.json",
      "hashtags": "#JAX #Python #MachineLearning #numericalcomputing"
    },
    {
      "slug": "2026/06/missing-files-mental-models",
      "title": "When Missing Files Break Mental Models",
      "publishedAt": "2026-06-12T07:09:33+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-1fb0290b-34d8-4358-98f5-1298664311d1.png",
      "socialMediaPost": "When Missing Files Break Mental Models digs into what happens when your code layout lies to you. If paths don’t match expectations, how far does the damage go?",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2026/06/missing-files-mental-models",
      "file": "/data/automated-blog/2026/06/missing-files-mental-models.json",
      "hashtags": "#softwareengineering #devexperience #codebase #mentalmodels"
    },
    {
      "slug": "2026/06/speech-to-text-vs-transcription-services",
      "title": "Free Speech-to-Text vs Paid Transcription Services: When Each Is Worth It",
      "publishedAt": "2026-06-09T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-5b-medium.webp",
      "socialMediaPost": "People overpay for transcription because they never ask the one question that decides it: is this a single-person job or a system? Here is a clear guide to when free speech-to-text is enough and when it is not.",
      "readingTime": "8m",
      "url": "https://zalt.me/blog/2026/06/speech-to-text-vs-transcription-services",
      "file": "/data/manual-blog/speech-to-text-vs-transcription-services.json",
      "category": "insights",
      "hashtags": "#SpeechToText #Transcription #AIStrategy #AITools #Productivity"
    },
    {
      "slug": "2026/06/autoregressive-loops-friendly",
      "title": "When Autoregressive Loops Stay Friendly",
      "publishedAt": "2026-06-05T07:10:45+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-a0c9fe61-6e87-4d3a-a232-2fc03e5cc472.png",
      "socialMediaPost": "Working with autoregressive generation loops? \"When Autoregressive Loops Stay Friendly\" explores keeping them fast without making them painful to work on.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/06/autoregressive-loops-friendly",
      "file": "/data/automated-blog/2026/06/autoregressive-loops-friendly.json",
      "hashtags": "#machinelearning #LLM #generativemodels"
    },
    {
      "slug": "2026/06/how-to-hire-ai-consultant",
      "title": "How to Hire an AI Consultant: A Practical Guide",
      "publishedAt": "2026-06-02T10:00:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-4a-medium.webp",
      "socialMediaPost": "Most AI projects fail for non-technical reasons: vague goals and the wrong hire. Here’s A Practical Guide to finding and hiring an AI consultant who ships production systems, not demos.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/06/how-to-hire-ai-consultant",
      "file": "/data/manual-blog/how-to-hire-ai-consultant.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIStrategy #AIConsulting #Startups #ArtificialIntelligence"
    },
    {
      "slug": "2026/06/pydantic-facade-simplicity",
      "title": "The Facade That Makes Pydantic Feel Simple",
      "publishedAt": "2026-06-01T10:36:51+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-acd84ac9-24b6-4000-a52f-e9281169e684.png",
      "socialMediaPost": "Struggle with how Pydantic stays so easy to use despite its depth? “The Facade That Makes Pydantic Feel Simple” breaks down the idea behind that simplicity.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/06/pydantic-facade-simplicity",
      "file": "/data/automated-blog/2026/06/pydantic-facade-simplicity.json",
      "hashtags": "#Python #Pydantic #softwaredesign #APIdesign"
    },
    {
      "slug": "2026/05/ai-consultant-cost",
      "title": "How Much Does an AI Consultant Cost? A 2026 Pricing Guide",
      "publishedAt": "2026-05-30T14:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-3cbb120b-e392-4028-bf01-69715c7c9d72-medium.webp",
      "socialMediaPost": "How much does an AI consultant cost in 2026? Hourly rates, day rates, retainers, and project fees broken down, plus how to tell when the cost is actually worth it.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/05/ai-consultant-cost",
      "file": "/data/manual-blog/ai-consultant-cost.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIConsulting #AIStrategy #TechAdvisor"
    },
    {
      "slug": "2026/05/lazy-pipelines-fast-backends",
      "title": "Lazy Pipelines, Fast Backends",
      "publishedAt": "2026-05-29T07:12:36+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-1e303512-a7bc-4dcc-ace2-851824d82398.png",
      "socialMediaPost": "Lazy Pipelines, Fast Backends digs into how to keep data pipelines easy to write while still hitting serious performance in the backend.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/05/lazy-pipelines-fast-backends",
      "file": "/data/automated-blog/2026/05/lazy-pipelines-fast-backends.json",
      "hashtags": "#datapipelines #backend #performance"
    },
    {
      "slug": "2026/05/what-does-ai-consultant-do",
      "title": "What Does an AI Consultant Actually Do?",
      "publishedAt": "2026-05-27T09:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-75455879-7e86-4ede-8eaa-88aacefd86be-medium.webp",
      "socialMediaPost": "What does an AI consultant actually do? They turn vague AI ambition into a costed, de-risked roadmap and make sure pilots reach production instead of stalling as demos. Here is the full breakdown.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/what-does-ai-consultant-do",
      "file": "/data/manual-blog/what-does-ai-consultant-do.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIStrategy #ArtificialIntelligence #AIArchitecture"
    },
    {
      "slug": "2026/05/fractional-cto-vs-full-time-cto",
      "title": "Fractional CTO vs Full-Time CTO: Which Does Your Startup Need?",
      "publishedAt": "2026-05-24T16:00:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-3-medium.webp",
      "socialMediaPost": "Fractional CTO vs full-time CTO: one gives you senior technical judgment for a fraction of the cost and commitment, the other gives you daily ownership. Here is how founders decide which their startup actually needs.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/fractional-cto-vs-full-time-cto",
      "file": "/data/manual-blog/fractional-cto-vs-full-time-cto.json",
      "category": "insights",
      "hashtags": "#FractionalCTO #StartupLeadership #TechStrategy #AILeadership"
    },
    {
      "slug": "2026/05/symbolic-shapes-guarantees",
      "title": "Symbolic Shapes, Real‑World Guarantees",
      "publishedAt": "2026-05-22T07:11:17+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-f9fc07b4-d841-445f-bd7f-0fe84100407d.png",
      "socialMediaPost": "How do you go from abstract models to guarantees you can rely on in production? “Symbolic Shapes, Real‑World Guarantees” digs into that bridge.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/05/symbolic-shapes-guarantees",
      "file": "/data/automated-blog/2026/05/symbolic-shapes-guarantees.json",
      "hashtags": "#softwaredesign #mlsystems #engineering"
    },
    {
      "slug": "2026/05/ai-consultant-vs-agency-vs-inhouse",
      "title": "AI Consultant vs AI Agency vs In-House Hire: How to Choose",
      "publishedAt": "2026-05-21T11:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-434ea093-e55b-4e0a-b8fe-87c423d75a52-medium.webp",
      "socialMediaPost": "AI consultant vs agency vs in-house hire? Each wins on a different axis: cost, capacity, or permanence. Here is a balanced, no-spin framework to decide which fits your project.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/ai-consultant-vs-agency-vs-inhouse",
      "file": "/data/manual-blog/ai-consultant-vs-agency-vs-inhouse.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIStrategy #AIArchitecture #TechAdvisor"
    },
    {
      "slug": "2026/05/llama-time-attention",
      "title": "How Llama Treats Time in Attention",
      "publishedAt": "2026-05-21T08:19:02+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-36bea129-c3a2-4589-b8d8-13eaf6f66e1e.png",
      "socialMediaPost": "Curious how Llama actually thinks about time inside attention? This breakdown of how it treats temporal information in its attention stack is worth a read.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/05/llama-time-attention",
      "file": "/data/automated-blog/2026/05/llama-time-attention.json",
      "hashtags": "#Llama #MachineLearning #AttentionMechanism #AIResearch"
    },
    {
      "slug": "2026/05/registry-pattern-transformers",
      "title": "The Registry Pattern Behind Transformers’ Magic",
      "publishedAt": "2026-05-20T08:19:18+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-708c4adb-87a7-45f8-a95a-3b9ac418d937.png",
      "socialMediaPost": "Transformers feel like magic, but they’re not. Curious how a simple registry pattern quietly powers their behavior behind the scenes?",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2026/05/registry-pattern-transformers",
      "file": "/data/automated-blog/2026/05/registry-pattern-transformers.json",
      "hashtags": "#Transformers #MachineLearning #SoftwareDesign #Python"
    },
    {
      "slug": "2026/05/questions-to-ask-ai-consultant",
      "title": "12 Questions to Ask Before Hiring an AI Consultant",
      "publishedAt": "2026-05-18T13:30:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-ecfb4361-1a26-4960-8158-a5a24d9d7917-medium.webp",
      "socialMediaPost": "Hiring an AI consultant? Here are 12 questions to ask before you sign, with the green-flag and red-flag answers for track record, pricing, data security, and handover.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/05/questions-to-ask-ai-consultant",
      "file": "/data/manual-blog/questions-to-ask-ai-consultant.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIStrategy #HiringTips #ArtificialIntelligence"
    },
    {
      "slug": "2026/05/event-loop-truth",
      "title": "The Event Loop as a Single Source of Truth",
      "publishedAt": "2026-05-17T18:32:19+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-0c3ce381-eacf-494f-83f3-29a721ac1e77.png",
      "socialMediaPost": "Most event-driven systems scatter state across queues, caches, and threads. “The Event Loop as a Single Source of Truth” argues for one clear authority instead.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/05/event-loop-truth",
      "file": "/data/automated-blog/2026/05/event-loop-truth.json",
      "hashtags": "#eventdriven #architecture #eventloop #concurrency"
    },
    {
      "slug": "2026/05/hire-freelance-technical-consultant",
      "title": "How to Hire a Freelance Technical Consultant (Without Getting Burned)",
      "publishedAt": "2026-05-15T10:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-75b95531-d69d-42d8-9db7-18b93d82a069-medium.webp",
      "socialMediaPost": "Hiring a freelance technical consultant is about buying judgment, not hours. This guide covers where to find one, how to vet them, how to scope a paid trial, and the red flags to avoid.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/hire-freelance-technical-consultant",
      "file": "/data/manual-blog/hire-freelance-technical-consultant.json",
      "category": "insights",
      "hashtags": "#TechnicalConsultant #FractionalCTO #StartupAdvice #FreelanceConsultant #AIConsulting"
    },
    {
      "slug": "2026/05/clickhouse-control-tower",
      "title": "The Control Tower Behind ClickHouse",
      "publishedAt": "2026-05-14T23:53:42+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-69f2299a-3bbc-4851-9fcb-8bc556d187ce.png",
      "socialMediaPost": "Designing or running ClickHouse in production? “The Control Tower Behind ClickHouse” walks through how the server process actually coordinates everything.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/05/clickhouse-control-tower",
      "file": "/data/automated-blog/2026/05/clickhouse-control-tower.json",
      "hashtags": "#ClickHouse #databases #backend #infrastructure"
    },
    {
      "slug": "2026/05/ai-consultant-or-ai-engineer",
      "title": "Do You Need an AI Consultant or an AI Engineer?",
      "publishedAt": "2026-05-12T15:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-66eabd2d-c02b-4b9a-ace4-2445e7bd1bb8-medium.webp",
      "socialMediaPost": "AI consultant vs AI engineer: one decides what to build and whether it is worth it, the other ships it. Here is how to tell which you need, and why serious projects need both in sequence.",
      "readingTime": "11m",
      "url": "https://zalt.me/blog/2026/05/ai-consultant-or-ai-engineer",
      "file": "/data/manual-blog/ai-consultant-or-ai-engineer.json",
      "category": "insights",
      "hashtags": "#AIConsultant #AIEngineer #AIStrategy #AIAgents"
    },
    {
      "slug": "2026/05/sparkcontext-control-tower",
      "title": "SparkContext as a Control Tower",
      "publishedAt": "2026-05-12T05:13:35+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-115982ea-bead-452f-9f10-bbd4ed65acae.png",
      "socialMediaPost": "Treating SparkContext as a control tower shifts how you think about Spark: not just as an API, but as the coordinator for your entire distributed engine.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/05/sparkcontext-control-tower",
      "file": "/data/automated-blog/2026/05/sparkcontext-control-tower.json",
      "hashtags": "#ApacheSpark #SparkContext #distributed #systems"
    },
    {
      "slug": "2026/05/python-heart-safety-speed",
      "title": "How Python’s Heart Stays Safe at Full Speed",
      "publishedAt": "2026-05-09T10:31:50+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-71c55dbe-c443-42db-b16e-e4a8fc3ab863.png",
      "socialMediaPost": "Pushing Python to its limits? “How Python’s Heart Stays Safe at Full Speed” digs into how the core runtime stays fast without sacrificing safety.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/05/python-heart-safety-speed",
      "file": "/data/automated-blog/2026/05/python-heart-safety-speed.json",
      "hashtags": "#Python #CPython #programming #softwaredesign"
    },
    {
      "slug": "2026/05/what-is-fractional-ai-officer",
      "title": "What Is a Fractional AI Officer (and When Should You Hire One)?",
      "publishedAt": "2026-05-09T09:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-58e3d8a6-d6ad-4620-92fa-68242cfd1038-medium.webp",
      "socialMediaPost": "Not ready for a full-time Chief AI Officer but need real AI direction now? A fractional AI officer gives you executive-grade strategy, governance, and roadmap leadership without the full-time cost.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/what-is-fractional-ai-officer",
      "file": "/data/manual-blog/what-is-fractional-ai-officer.json",
      "category": "insights",
      "hashtags": "#FractionalAIOfficer #ChiefAIOfficer #AIStrategy #AILeadership #CAIO"
    },
    {
      "slug": "2026/05/flutter-rebuild-engine",
      "title": "The Hidden Engine Behind Flutter Rebuilds",
      "publishedAt": "2026-05-06T15:53:20+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4c2c7f74-7ea0-47d3-9ff9-b64a8a7e7d91.png",
      "socialMediaPost": "If your Flutter app feels janky, it might not be your widgets at all. Understanding the hidden engine behind Flutter rebuilds can change how you design UIs.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/05/flutter-rebuild-engine",
      "file": "/data/automated-blog/2026/05/flutter-rebuild-engine.json",
      "hashtags": "#Flutter #MobileDevelopment #UI"
    },
    {
      "slug": "2026/05/how-ai-consulting-works",
      "title": "How AI Consulting Engagements Work: Process, Timeline, and Deliverables",
      "publishedAt": "2026-05-06T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/auto/zalt-4235b195-1acb-48c2-bd87-62ded5ad8dc7-medium.webp",
      "socialMediaPost": "How does an AI consulting engagement actually work? I broke down the five phases, from discovery to optimization, with real timelines and the exact deliverables you get at each step.",
      "readingTime": "12m",
      "url": "https://zalt.me/blog/2026/05/how-ai-consulting-works",
      "file": "/data/manual-blog/how-ai-consulting-works.json",
      "category": "insights",
      "hashtags": "#AIConsulting #AIStrategy #AIArchitecture #TechAdvisor #ProductionAI"
    },
    {
      "slug": "2026/05/add-subtitles-to-video-free",
      "title": "How to Add Subtitles to a Video for Free (SRT and VTT, No Upload)",
      "publishedAt": "2026-05-05T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-4c-medium.webp",
      "socialMediaPost": "Captions roughly double watch time on social video, and you can generate them for free without uploading your footage anywhere. Here is how to add subtitles to a video in your browser, step by step.",
      "readingTime": "7m",
      "url": "https://zalt.me/blog/2026/05/add-subtitles-to-video-free",
      "file": "/data/manual-blog/add-subtitles-to-video-free.json",
      "category": "insights",
      "hashtags": "#Subtitles #Captions #VideoEditing #Accessibility #AITools"
    },
    {
      "slug": "2026/05/vertex-orchestrates-everything",
      "title": "The Vertex That Orchestrates Everything",
      "publishedAt": "2026-05-03T21:11:26+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-17d4dbb3-2719-4735-b2ce-b2e9995456fc.png",
      "socialMediaPost": "Most systems scatter orchestration across many parts. What if you had a single vertex that quietly coordinates everything behind the scenes?",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/05/vertex-orchestrates-everything",
      "file": "/data/automated-blog/2026/05/vertex-orchestrates-everything.json",
      "hashtags": "#softwaredesign #architecture #orchestration"
    },
    {
      "slug": "2026/05/babel-plugin-conveyor",
      "title": "The Plugin Conveyor Belt Behind Babel",
      "publishedAt": "2026-05-01T02:31:44+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-670a1207-915c-4cab-9ded-8046e98f8907.png",
      "socialMediaPost": "Ever wonder how Babel really works under the hood? The Plugin Conveyor Belt Behind Babel digs into the pipeline powering all those JavaScript transforms.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/05/babel-plugin-conveyor",
      "file": "/data/automated-blog/2026/05/babel-plugin-conveyor.json",
      "hashtags": "#Babel #JavaScript #plugins #buildtools"
    },
    {
      "slug": "2026/04/renderer-conducts-webgl",
      "title": "The Renderer That Conducts WebGL",
      "publishedAt": "2026-04-28T07:52:34+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b69570a7-1570-4a48-b30e-ce940fa97bf0.png",
      "socialMediaPost": "The Renderer That Conducts WebGL rethinks how we see a rendering engine: not just drawing pixels, but coordinating the whole WebGL orchestra.",
      "readingTime": "40m",
      "url": "https://zalt.me/blog/2026/04/renderer-conducts-webgl",
      "file": "/data/automated-blog/2026/04/renderer-conducts-webgl.json",
      "hashtags": "#WebGL #graphics #rendering #javascript"
    },
    {
      "slug": "2026/04/context-powers-mcp",
      "title": "The Context Object That Runs Your MCP Server",
      "publishedAt": "2026-04-25T13:11:52+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4cdad7d5-36e5-49a7-af8c-f744d53be91d.png",
      "socialMediaPost": "Running an MCP server and juggling logging, state, and requests across tools? See how a single context object can hold it all together without chaos.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/04/context-powers-mcp",
      "file": "/data/automated-blog/2026/04/context-powers-mcp.json",
      "hashtags": "#MCP #server #context #backend"
    },
    {
      "slug": "2026/04/dynamic-angular-api",
      "title": "The Tiny API That Powers Dynamic Angular",
      "publishedAt": "2026-04-22T18:33:34+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-e69d77f4-8a22-44d6-aab5-81c462f4edac.png",
      "socialMediaPost": "Most people think Angular’s dynamic behavior comes from a huge surface area. This piece breaks down the tiny API that actually powers it.",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2026/04/dynamic-angular-api",
      "file": "/data/automated-blog/2026/04/dynamic-angular-api.json",
      "hashtags": "#Angular #webdev #TypeScript #frontend"
    },
    {
      "slug": "2026/04/routers-orchestrate-everything",
      "title": "When Routers Orchestrate Everything",
      "publishedAt": "2026-04-19T23:52:42+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-67c62fc0-44ec-4f38-ad0c-7cd1cbc30dcc.png",
      "socialMediaPost": "When routers orchestrate everything, they stop being simple traffic cops and start acting like conductors for the entire request lifecycle. Curious how that works? 🎼",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/routers-orchestrate-everything",
      "file": "/data/automated-blog/2026/04/routers-orchestrate-everything.json",
      "hashtags": "#webdev #backend #APIs #softwaredesign"
    },
    {
      "slug": "2026/04/nginx-boot-engine",
      "title": "How NGINX Boots a Zero‑Downtime Engine",
      "publishedAt": "2026-04-17T05:13:50+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4ac9c827-bbec-4ab2-b100-1b01b0bafc34.png",
      "socialMediaPost": "How does NGINX actually start up and keep serving traffic without interruptions? This breakdown of how it boots a zero‑downtime engine digs into that core idea.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/nginx-boot-engine",
      "file": "/data/automated-blog/2026/04/nginx-boot-engine.json",
      "hashtags": "#NGINX #webserver #infrastructure #devops"
    },
    {
      "slug": "2026/04/ffmpeg-control",
      "title": "How FFmpeg Stays In Control",
      "publishedAt": "2026-04-14T10:32:54+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-a2f7de5c-1ce0-4b19-ba40-8efcf2a07ea6.png",
      "socialMediaPost": "How does FFmpeg keep long, intensive jobs responsive instead of freezing up? “How FFmpeg Stays In Control” digs into the control layer behind the CLI.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/ffmpeg-control",
      "file": "/data/automated-blog/2026/04/ffmpeg-control.json",
      "hashtags": "#FFmpeg #CLI #softwaredesign #programming"
    },
    {
      "slug": "2026/04/agent-loop-control-tower",
      "title": "When an Agent Loop Becomes a Control Tower",
      "publishedAt": "2026-04-11T15:52:22+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-c81b0347-57df-4cc2-92e0-fa83ba9d50d2.png",
      "socialMediaPost": "When does an agent loop stop being simple iteration and start acting like a control tower for your AI system? This piece digs into that turning point ✈️",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/agent-loop-control-tower",
      "file": "/data/automated-blog/2026/04/agent-loop-control-tower.json",
      "hashtags": "#AIagents #orchestration #softwaredesign"
    },
    {
      "slug": "2026/04/engine-single-brain",
      "title": "When Your Engine Has A Single Brain",
      "publishedAt": "2026-04-08T21:15:38+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-263d661b-83eb-46aa-8448-d51c064ea45e.png",
      "socialMediaPost": "When your engine has a single brain, how do you keep it from collapsing under its own weight? This explores what happens when one place runs the whole show.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/engine-single-brain",
      "file": "/data/automated-blog/2026/04/engine-single-brain.json",
      "hashtags": "#software #architecture #engines #orchestration"
    },
    {
      "slug": "2026/04/daemon-orchestration-scale",
      "title": "Daemon Orchestration at Container Scale",
      "publishedAt": "2026-04-08T04:07:41+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-395bcd92-a00c-4126-99f3-42274023c213.png",
      "socialMediaPost": "Most teams focus on container runtimes, not the control plane. Daemon Orchestration at Container Scale digs into how the daemon actually keeps fleets in line.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/04/daemon-orchestration-scale",
      "file": "/data/automated-blog/2026/04/daemon-orchestration-scale.json",
      "hashtags": "#containers #orchestration #devops #infrastructure"
    },
    {
      "slug": "2026/04/prometheus-tsdb-sanity",
      "title": "How Prometheus Keeps Its TSDB Sane",
      "publishedAt": "2026-04-03T07:28:30+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b2776337-0bc6-4c06-88a7-d16456eddd0a.png",
      "socialMediaPost": "Working with time-series data at scale? “How Prometheus Keeps Its TSDB Sane” breaks down how Prometheus keeps its own storage manageable and safe.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/04/prometheus-tsdb-sanity",
      "file": "/data/automated-blog/2026/04/prometheus-tsdb-sanity.json",
      "hashtags": "#Prometheus #TSDB #timeseries #observability"
    },
    {
      "slug": "2026/03/best-free-speech-to-text-tools",
      "title": "Best Free Speech-to-Text Tools in 2026 (No Signup, Browser-Based)",
      "publishedAt": "2026-03-31T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-2-medium.webp",
      "socialMediaPost": "Most free speech-to-text tools quietly upload your audio to their servers. Here is how the free options actually compare in 2026, and which ones keep your recordings on your own device.",
      "readingTime": "8m",
      "url": "https://zalt.me/blog/2026/03/best-free-speech-to-text-tools",
      "file": "/data/manual-blog/best-free-speech-to-text-tools.json",
      "category": "insights",
      "hashtags": "#SpeechToText #Transcription #AITools #Privacy #WhisperAI"
    },
    {
      "slug": "2026/03/invisible-arguments-tools",
      "title": "The Invisible Arguments Powering LangChain Tools",
      "publishedAt": "2026-03-29T10:46:44+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-68b3d79b-f715-44d8-bb5d-f9546766e8ac.png",
      "socialMediaPost": "Most LangChain examples focus on visible tool inputs. This dives into the invisible arguments that actually drive LangChain tools at runtime.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/03/invisible-arguments-tools",
      "file": "/data/automated-blog/2026/03/invisible-arguments-tools.json",
      "hashtags": "#LangChain #LLM #developers #AItools"
    },
    {
      "slug": "2026/03/wrapper-stack-environments",
      "title": "The Wrapper Stack That Shapes RL Environments",
      "publishedAt": "2026-03-24T13:08:27+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-983e16d5-24d8-4ca9-b278-9dedb7b6fb47.png",
      "socialMediaPost": "Most RL tutorials focus on agents, not what they’re actually interacting with. This dives into the wrapper stack that quietly shapes RL environments.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/03/wrapper-stack-environments",
      "file": "/data/automated-blog/2026/03/wrapper-stack-environments.json",
      "hashtags": "#ReinforcementLearning #MachineLearning #AI"
    },
    {
      "slug": "2026/03/trainer-orchestrator",
      "title": "When Your Trainer Becomes an Orchestrator",
      "publishedAt": "2026-03-19T16:29:07+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-0c624ec4-ece5-48e2-bce2-650ed09bb1a0.png",
      "socialMediaPost": "When does a simple ML training loop stop being “just training” and start acting like an orchestrator for your whole system? This post digs into that shift.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/03/trainer-orchestrator",
      "file": "/data/automated-blog/2026/03/trainer-orchestrator.json",
      "hashtags": "#machinelearning #training #mlops #engineering"
    },
    {
      "slug": "2026/03/orchestration-becomes-product",
      "title": "When Orchestration Becomes the Product",
      "publishedAt": "2026-03-14T19:48:33+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-bb6bdadf-9941-4b22-b24f-bb0e9bdd62d7.png",
      "socialMediaPost": "When does coordination logic stop being just glue and start being what users actually feel? “When Orchestration Becomes the Product” digs into that shift.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/03/orchestration-becomes-product",
      "file": "/data/automated-blog/2026/03/orchestration-becomes-product.json",
      "hashtags": "#orchestration #engineering #devtools"
    },
    {
      "slug": "2026/03/database-traffic-cop",
      "title": "When a Database Becomes a Traffic Cop",
      "publishedAt": "2026-03-09T23:10:17+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-cc6d2f03-efd4-4019-a681-13c5f806416f.png",
      "socialMediaPost": "When a database becomes a traffic cop, it’s not just about storing rows, it’s about orchestrating chaos at scale. Curious how that control loop really works?",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/03/database-traffic-cop",
      "file": "/data/automated-blog/2026/03/database-traffic-cop.json",
      "hashtags": "#databases #architecture #backend #programming"
    },
    {
      "slug": "2026/03/agent-god-object",
      "title": "When One Agent Class Knows Too Much",
      "publishedAt": "2026-03-05T02:27:10+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-bd7ab229-5a7f-4164-a1c9-42150c84f842.png",
      "socialMediaPost": "When one agent class knows too much, you don’t just get convenience, you risk a God object. How do you keep your core agent powerful without turning it into a blob?",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/03/agent-god-object",
      "file": "/data/automated-blog/2026/03/agent-god-object.json",
      "hashtags": "#softwaredesign #architecture #agents #LLM"
    },
    {
      "slug": "2026/02/silent-tomcat-bootstrap",
      "title": "The Silent Script That Boots Tomcat",
      "publishedAt": "2026-02-28T05:46:59+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b2ecb967-5ada-4123-a019-2c2a091c528c.png",
      "socialMediaPost": "Ever wonder what really brings your Tomcat JVM to life? “The Silent Script That Boots Tomcat” digs into the unseen startup path running every time.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/02/silent-tomcat-bootstrap",
      "file": "/data/automated-blog/2026/02/silent-tomcat-bootstrap.json",
      "hashtags": "#Tomcat #Java #JVM #webserver"
    },
    {
      "slug": "2026/02/transcribe-audio-to-text-free",
      "title": "How to Transcribe Audio to Text for Free (Private, No Upload)",
      "publishedAt": "2026-02-24T12:00:00+02:00",
      "featured": false,
      "imageUrl": "/images-optimized/blog/blog-1-2-medium.webp",
      "socialMediaPost": "You do not need to upload your audio to a stranger's server to get a transcript. Here is how to transcribe audio to text for free, fully in your browser, with the file never leaving your machine.",
      "readingTime": "7m",
      "url": "https://zalt.me/blog/2026/02/transcribe-audio-to-text-free",
      "file": "/data/manual-blog/transcribe-audio-to-text-free.json",
      "category": "insights",
      "hashtags": "#SpeechToText #Transcription #WhisperAI #Privacy #AITools"
    },
    {
      "slug": "2026/02/fastapi-production-routers",
      "title": "How FastAPI Turns Functions Into Production Routers",
      "publishedAt": "2026-02-23T09:11:57+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-6fdce3f1-d8bd-4186-b641-eed5875dbcd6.png",
      "socialMediaPost": "How does FastAPI take plain Python functions and run them as real production routers? This unpacking of that transformation is worth a closer look.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/02/fastapi-production-routers",
      "file": "/data/automated-blog/2026/02/fastapi-production-routers.json",
      "hashtags": "#FastAPI #Python #webdevelopment #backend"
    },
    {
      "slug": "2026/02/conversation-traffic-controller",
      "title": "The Conversation Traffic Controller Pattern",
      "publishedAt": "2026-02-18T12:30:15+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-0b0ef8cf-b60a-430d-bc7e-63609cdf6a23.png",
      "socialMediaPost": "Most LLM bugs aren’t in the model, they’re in the messy loops around it. The Conversation Traffic Controller Pattern gives you a cleaner way to orchestrate chats.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/02/conversation-traffic-controller",
      "file": "/data/automated-blog/2026/02/conversation-traffic-controller.json",
      "hashtags": "#LLM #AIagents #softwaredesign #architecture"
    },
    {
      "slug": "2026/02/ai-gateway-file",
      "title": "When One File Becomes Your AI Gateway",
      "publishedAt": "2026-02-13T15:43:49+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-49d66bad-d3e9-4711-ab78-0c88920837a1.png",
      "socialMediaPost": "When one file becomes your AI gateway, you’re not just organizing code, you’re defining how every request touches your models. How close is your setup to that?",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/02/ai-gateway-file",
      "file": "/data/automated-blog/2026/02/ai-gateway-file.json",
      "hashtags": "#AI #softwarearchitecture #backend #developers"
    },
    {
      "slug": "2026/02/node-http2-engine",
      "title": "How Node Speaks HTTP‑2 Without You Noticing",
      "publishedAt": "2026-02-08T19:03:20+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-fc13809d-926d-4a05-9859-cb9e3e801801.png",
      "socialMediaPost": "Ever wonder how Node handles HTTP‑2 while your code just sees familiar APIs? This piece walks through how Node “speaks” HTTP‑2 without you noticing.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/02/node-http2-engine",
      "file": "/data/automated-blog/2026/02/node-http2-engine.json",
      "hashtags": "#NodeJS #HTTP2 #JavaScript #WebDev"
    },
    {
      "slug": "2026/02/orchestrator-ai-reply",
      "title": "The Orchestrator Behind Every AI Reply",
      "publishedAt": "2026-02-03T22:22:22+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-19d567ae-4177-41b7-babe-dfa272584562.png",
      "socialMediaPost": "Every AI answer hides an orchestrator deciding what to call, when to respond, and how it all fits together. The Orchestrator Behind Every AI Reply digs into that layer.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/02/orchestrator-ai-reply",
      "file": "/data/automated-blog/2026/02/orchestrator-ai-reply.json",
      "hashtags": "#AI #developers #LLM #architecture"
    },
    {
      "slug": "2026/01/stategraphs-distributed-conversations",
      "title": "How StateGraphs Turn Functions Into Distributed Conversations",
      "publishedAt": "2026-01-30T01:44:22+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-0108ab5b-404b-4110-ac62-cb3582a15f6d.png",
      "socialMediaPost": "How do you go from plain functions to a distributed conversation? This piece on StateGraphs digs into how that transformation actually works.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/stategraphs-distributed-conversations",
      "file": "/data/automated-blog/2026/01/stategraphs-distributed-conversations.json",
      "hashtags": "#distributedSystems #softwareDesign #async #concurrency"
    },
    {
      "slug": "2026/01/async-clients-hanging",
      "title": "When Async Clients Refuse To Hang",
      "publishedAt": "2026-01-27T17:05:16+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-6725a69e-d885-44cc-8ca9-4c52ef30f994.png",
      "socialMediaPost": "When async clients refuse to hang, everything about reliability changes. If you care about async behavior under failure, this one’s worth a read.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/async-clients-hanging",
      "file": "/data/automated-blog/2026/01/async-clients-hanging.json",
      "hashtags": "#async #python #networking #reliability"
    },
    {
      "slug": "2026/01/keybindings-language",
      "title": "When Keybindings Become a Language",
      "publishedAt": "2026-01-26T04:42:41+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-c85570e0-6a67-4161-a17d-ffcc5ae97653.png",
      "socialMediaPost": "When keybindings become a language, config stops being random shortcuts and starts acting like a small, programmable system you can actually reason about.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/keybindings-language",
      "file": "/data/automated-blog/2026/01/keybindings-language.json",
      "hashtags": "#programming #UX #keymaps #softwaredesign"
    },
    {
      "slug": "2026/01/agent-translation-layer",
      "title": "The Translation Layer That Makes Agents Feel Smart",
      "publishedAt": "2026-01-24T16:41:03+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-46857853-998c-4e76-a814-9562259743a0.png",
      "socialMediaPost": "Most agent setups focus on bigger models, not better communication. This post dives into the translation layer that makes agents actually feel smart 🤖",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/agent-translation-layer",
      "file": "/data/automated-blog/2026/01/agent-translation-layer.json",
      "hashtags": "#AI #agents #softwaredesign #architecture"
    },
    {
      "slug": "2026/01/how-to-find-tech-mentor",
      "title": "How To Find The Right Tech Mentor",
      "publishedAt": "2026-01-24T12:00:00+04:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-5b-medium.webp",
      "socialMediaPost": "Choosing a mentor is less about titles and more about fit, goals, and evidence of impact. This guide breaks down how engineers can evaluate mentors and get real career progress.",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2026/01/how-to-find-tech-mentor",
      "file": "/data/manual-blog/how-to-find-tech-mentor.json",
      "category": "insights",
      "hashtags": "#TechMentor #CareerGrowth #EngineeringCareer #AIMentor"
    },
    {
      "slug": "2026/01/front-controller-stealth",
      "title": "The Front Controller That Stays Out Of Your Way",
      "publishedAt": "2026-01-23T04:43:40+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b00de5cd-9988-4a12-93ec-8599373759e5.png",
      "socialMediaPost": "Most front controllers become god objects. “The Front Controller That Stays Out Of Your Way” explores how to keep one central entry point without cluttering your code.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/front-controller-stealth",
      "file": "/data/automated-blog/2026/01/front-controller-stealth.json",
      "hashtags": "#softwaredesign #architecture #webdev"
    },
    {
      "slug": "2026/01/metaclass-guardrails",
      "title": "The Metaclass That Turns Type Hints Into Guardrails",
      "publishedAt": "2026-01-21T16:44:42+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-cb8d5aa0-ec2e-4413-8a8a-037496b23d42.png",
      "socialMediaPost": "Turning type hints from passive comments into active guardrails sounds wild. Curious how a single metaclass can reshape your whole data model? 🤔",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/metaclass-guardrails",
      "file": "/data/automated-blog/2026/01/metaclass-guardrails.json",
      "hashtags": "#python #typing #metaprogramming #softwaredesign"
    },
    {
      "slug": "2026/01/graph-orchestration-power",
      "title": "When Graph Orchestration Becomes a Power Tool",
      "publishedAt": "2026-01-20T04:37:04+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d93e20b7-c201-49cf-b3fc-dae8712f07fb.png",
      "socialMediaPost": "When does graph orchestration stop being glue code and start feeling like a real power tool? This explores that shift and why it matters for your systems.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/graph-orchestration-power",
      "file": "/data/automated-blog/2026/01/graph-orchestration-power.json",
      "hashtags": "#orchestration #graphs #softwaredesign #distributedsystems"
    },
    {
      "slug": "2026/01/ai-consultant-guide",
      "title": "What to Expect from an AI Consultant",
      "publishedAt": "2026-01-19T12:00:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-4c-medium.webp",
      "socialMediaPost": "From prototype to production, the hard part isn’t AI, it’s decisions about data, evaluation, and ownership. This article maps the steps teams skip and how to avoid them.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/ai-consultant-guide",
      "file": "/data/manual-blog/ai-consultant-guide.json",
      "category": "insights",
      "hashtags": "#AIStrategy #AIConsulting #AIRoadmap"
    },
    {
      "slug": "2026/01/hidden-linear-engine",
      "title": "The Hidden Engine Behind LinearRegression",
      "publishedAt": "2026-01-18T16:37:59+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-dce78015-9939-4456-a8cc-a63ae656f886.png",
      "socialMediaPost": "What actually powers LinearRegression under the hood? This piece digs into the hidden engine behind it and why that internal design matters for your models.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/hidden-linear-engine",
      "file": "/data/automated-blog/2026/01/hidden-linear-engine.json",
      "hashtags": "#LinearRegression #MachineLearning #MLModels #SoftwareDesign"
    },
    {
      "slug": "2026/01/dspy-module-gateway",
      "title": "The Gateway Class Behind DSPy Modules",
      "publishedAt": "2026-01-17T04:36:21+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-11bc8122-bed8-4258-8a16-e16e45b48243.png",
      "socialMediaPost": "Curious how DSPy routes every pipeline step before it touches an LLM? This piece breaks down the gateway class behind DSPy modules and why it matters.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/dspy-module-gateway",
      "file": "/data/automated-blog/2026/01/dspy-module-gateway.json",
      "hashtags": "#DSPy #LLM #Python #softwaredesign"
    },
    {
      "slug": "2026/01/blueprint-lock-fastify",
      "title": "The Blueprint Lock Behind Fastify",
      "publishedAt": "2026-01-15T16:36:02+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d13f77f8-497a-4e37-acc5-158357ae07a1.png",
      "socialMediaPost": "Curious how Fastify keeps a high‑performance HTTP server stable under load? This breakdown of the “blueprint lock” shows the core idea behind its design.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/blueprint-lock-fastify",
      "file": "/data/automated-blog/2026/01/blueprint-lock-fastify.json",
      "hashtags": "#Fastify #NodeJS #webframework #softwaredesign"
    },
    {
      "slug": "2026/01/agent-contract-core",
      "title": "The Contract Behind Every AI Agent",
      "publishedAt": "2026-01-14T04:36:03+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-1ea3a720-0732-40ca-999e-6a04b623e384.png",
      "socialMediaPost": "Every AI agent hides an implicit contract. If you’re building with agents, understanding that contract is what keeps your systems predictable and sane.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/agent-contract-core",
      "file": "/data/automated-blog/2026/01/agent-contract-core.json",
      "hashtags": "#AI #agents #softwaredesign #architecture"
    },
    {
      "slug": "2026/01/mongodb-client-tower",
      "title": "The MongoDB Client as Control Tower",
      "publishedAt": "2026-01-12T16:36:54+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-6340acb7-06cc-4ec7-8282-da2db0f2dea5.png",
      "socialMediaPost": "If you think of the MongoDB client as just a connection handle, you’re missing the point. Treat it like a control tower coordinating everything around it.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/mongodb-client-tower",
      "file": "/data/automated-blog/2026/01/mongodb-client-tower.json",
      "hashtags": "#MongoDB #database #backend #softwaredesign"
    },
    {
      "slug": "2026/01/linux-module-world",
      "title": "How Linux Shapes Its Module World",
      "publishedAt": "2026-01-11T16:38:57+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-6887b0a9-3253-49cb-8198-f8da1da8f520.png",
      "socialMediaPost": "Curious how a kernel keeps its module chaos under control? “How Linux Shapes Its Module World” breaks down the ideas behind its module design.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/linux-module-world",
      "file": "/data/automated-blog/2026/01/linux-module-world.json",
      "hashtags": "#Linux #kernel #modules #systems"
    },
    {
      "slug": "2026/01/tiny-tokenizer-llama",
      "title": "The Tiny Tokenizer That Shapes Llama",
      "publishedAt": "2026-01-11T05:59:17+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-2087a30c-2648-4aa7-8916-b2e1f6cd09ae.png",
      "socialMediaPost": "Most people focus on model size, but The Tiny Tokenizer That Shapes Llama shows how a small text step quietly steers everything your LLM does 🔎",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/tiny-tokenizer-llama",
      "file": "/data/automated-blog/2026/01/tiny-tokenizer-llama.json",
      "hashtags": "#LLM #tokenization #Llama #machinelearning"
    },
    {
      "slug": "2026/01/boring-kernel-modules",
      "title": "The Header That Makes Kernel Modules Boring",
      "publishedAt": "2026-01-11T04:34:08+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4088cbb2-1c68-4d15-a9d4-658046682d3b.png",
      "socialMediaPost": "Why would anyone want kernel modules to be boring? This piece digs into the one header that quietly makes Linux module behavior feel predictable.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/boring-kernel-modules",
      "file": "/data/automated-blog/2026/01/boring-kernel-modules.json",
      "hashtags": "#linux #kernel #programming #softwaredesign"
    },
    {
      "slug": "2026/01/react-chaos-commit",
      "title": "How React Turns Chaos Into a Commit",
      "publishedAt": "2026-01-10T02:41:11+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-8ed91127-caab-4e3d-9ef3-3cdab5d00024.png",
      "socialMediaPost": "How does React turn a storm of updates into one clean commit? This piece breaks down the path from chaos to a predictable UI pipeline.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/react-chaos-commit",
      "file": "/data/automated-blog/2026/01/react-chaos-commit.json",
      "hashtags": "#React #frontend #webdev #softwarearchitecture"
    },
    {
      "slug": "2026/01/plain-functions-prompts",
      "title": "When Plain Functions Become Robust Prompts",
      "publishedAt": "2026-01-08T01:59:00+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-dbeadaa9-4af9-4720-983f-cd69495a253d.png",
      "socialMediaPost": "When plain functions become robust prompts, you stop thinking in prompt templates and start thinking in code, while still getting reliable prompt behavior.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2026/01/plain-functions-prompts",
      "file": "/data/automated-blog/2026/01/plain-functions-prompts.json",
      "hashtags": "#promptengineering #python #softwaredesign"
    },
    {
      "slug": "2026/01/numpy-pad-smart",
      "title": "How NumPy Teaches Us to Pad Smart",
      "publishedAt": "2026-01-07T20:57:08+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4100eacf-641e-4deb-8cd7-36764a963c3d.png",
      "socialMediaPost": "How NumPy teaches us to pad smart isn’t just about adding zeros to arrays; it’s about designing padding that stays flexible, predictable, and clean.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/numpy-pad-smart",
      "file": "/data/automated-blog/2026/01/numpy-pad-smart.json",
      "hashtags": "#NumPy #Python #DataScience #softwaredesign"
    },
    {
      "slug": "2026/01/local-llm-microservice",
      "title": "The Local Microservice Behind Every Model",
      "publishedAt": "2026-01-05T18:26:34+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-ff1a71fb-17aa-44db-8b75-2f4f07f19b2c.png",
      "socialMediaPost": "What does “The Local Microservice Behind Every Model” really mean in practice? Think of each model as its own small service running right beside your app.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/local-llm-microservice",
      "file": "/data/automated-blog/2026/01/local-llm-microservice.json",
      "hashtags": "#microservices #softwarearchitecture #machinelearning #backend"
    },
    {
      "slug": "2026/01/eval-execution-engine",
      "title": "When Eval Becomes an Execution Engine",
      "publishedAt": "2026-01-03T10:52:35+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-19dd9139-4b65-4b2d-b04e-98e82df2cc5e.png",
      "socialMediaPost": "When does a simple eval stop being a helper and start acting like a full execution engine? Exploring the boundary where evaluation turns into control.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2026/01/eval-execution-engine",
      "file": "/data/automated-blog/2026/01/eval-execution-engine.json",
      "hashtags": "#programming #softwaredesign #runtime #execution"
    },
    {
      "slug": "2026/01/pandas-facade",
      "title": "The Facade That Makes Pandas Feel Simple",
      "publishedAt": "2026-01-01T03:19:46+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-87f63bde-85f5-4989-adec-7dfc4c44b75f.png",
      "socialMediaPost": "Ever wondered why working with pandas can feel so straightforward despite what’s under the hood? This dives into the facade that keeps it simple.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2026/01/pandas-facade",
      "file": "/data/automated-blog/2026/01/pandas-facade.json",
      "hashtags": "#pandas #python #datascience #softwaredesign"
    },
    {
      "slug": "2025/12/one-function-llm",
      "title": "One Function To Call Every LLM",
      "publishedAt": "2025-12-29T19:46:06+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-8d90914d-f1d7-4f07-b6a1-39c2a60f8802.png",
      "socialMediaPost": "What if your stack only needed one function to talk to every LLM? This piece breaks down the idea and why it can simplify your architecture.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/12/one-function-llm",
      "file": "/data/automated-blog/2025/12/one-function-llm.json",
      "hashtags": "#LLM #AI #softwarearchitecture #devtools"
    },
    {
      "slug": "2025/12/training-conductor",
      "title": "The Training Conductor Behind Keras Models",
      "publishedAt": "2025-12-29T13:46:38+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b1e381ec-5abd-4f98-a2aa-e8abab8bc1f9.png",
      "socialMediaPost": "How does Keras actually run your training under the hood? Think of a training conductor quietly coordinating every step behind model.fit().",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/training-conductor",
      "file": "/data/automated-blog/2025/12/training-conductor.json",
      "hashtags": "#Keras #DeepLearning #MachineLearning #NeuralNetworks"
    },
    {
      "slug": "2025/12/tiny-grafana-bootstrap",
      "title": "The Tiny Struct That Boots Grafana",
      "publishedAt": "2025-12-27T12:12:23+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-e351c42a-a860-4d45-b814-6ebe3e8d0ca7.png",
      "socialMediaPost": "A huge observability platform, kicked off by a tiny struct. “The Tiny Struct That Boots Grafana” is a neat reminder of how small coordination logic can be.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/12/tiny-grafana-bootstrap",
      "file": "/data/automated-blog/2025/12/tiny-grafana-bootstrap.json",
      "hashtags": "#grafana #observability #golang #softwaredesign"
    },
    {
      "slug": "2025/12/guidance-engine",
      "title": "The Guidance Engine Behind Stable Diffusion",
      "publishedAt": "2025-12-25T04:43:13+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-3e3a2dfc-d393-418f-83cb-66f1f70933c1.png",
      "socialMediaPost": "Curious how a single text prompt becomes a full image? This breakdown of the guidance engine behind Stable Diffusion focuses on the orchestration, not the magic ✨",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/guidance-engine",
      "file": "/data/automated-blog/2025/12/guidance-engine.json",
      "hashtags": "#stablediffusion #genai #diffusionmodels"
    },
    {
      "slug": "2025/12/linux-next-slice",
      "title": "How Linux Chooses Your Next CPU Time Slice",
      "publishedAt": "2025-12-23T01:32:35+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d3692d0f-c2f1-490d-8f01-8f2f28e16ee5.png",
      "socialMediaPost": "Wondering how Linux decides what runs next on your machine? This breakdown of how it picks each new CPU time slice makes the scheduler’s logic much clearer.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/linux-next-slice",
      "file": "/data/automated-blog/2025/12/linux-next-slice.json",
      "hashtags": "#Linux #kernel #scheduler #CPU"
    },
    {
      "slug": "2025/12/bitcoin-boot-safely",
      "title": "How Bitcoin Boots Safely",
      "publishedAt": "2025-12-23T00:10:35+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-e4a6d5e3-833e-4411-8e47-85375207d0bb.png",
      "socialMediaPost": "How does Bitcoin actually start up without putting funds at risk? “How Bitcoin Boots Safely” breaks down the boot process and the safety mindset behind it.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/bitcoin-boot-safely",
      "file": "/data/automated-blog/2025/12/bitcoin-boot-safely.json",
      "hashtags": "#Bitcoin #cryptocurrency #security #softwareengineering"
    },
    {
      "slug": "2025/12/electron-app-control-tower",
      "title": "The App Module as Electron’s Control Tower",
      "publishedAt": "2025-12-22T21:07:40+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-a0922042-d913-4ac8-82e3-eaa4765b78f2.png",
      "socialMediaPost": "Building desktop apps with Electron? Think of the App Module as your control tower, coordinating everything from one place instead of scattered hooks ✈️",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/12/electron-app-control-tower",
      "file": "/data/automated-blog/2025/12/electron-app-control-tower.json",
      "hashtags": "#Electron #desktopapps #softwarearchitecture #javascript"
    },
    {
      "slug": "2025/12/filesystem-sync-sleep",
      "title": "When a Filesystem Sync Decides Your Sleep",
      "publishedAt": "2025-12-20T16:40:34+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-a654d4c9-7f21-4d90-b4a5-961ddbdab7a9.png",
      "socialMediaPost": "Ever had a “sleep” request vetoed by storage? This piece digs into how a filesystem sync can be the final arbiter of whether your system actually sleeps 😴",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/12/filesystem-sync-sleep",
      "file": "/data/automated-blog/2025/12/filesystem-sync-sleep.json",
      "hashtags": "#linux #filesystem #powersaving #kernel"
    },
    {
      "slug": "2025/12/vllm-attention-switchboard",
      "title": "The Hidden Switchboard Behind vLLM Attention",
      "publishedAt": "2025-12-20T13:35:08+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-15aa4c78-a8ee-4216-9b0e-b14560b6db96.png",
      "socialMediaPost": "Working with vLLM and ever wonder what’s really happening inside its attention layers? This post traces the hidden switchboard wiring that makes it all work.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/vllm-attention-switchboard",
      "file": "/data/automated-blog/2025/12/vllm-attention-switchboard.json",
      "hashtags": "#vLLM #LLM #attention #AIinference"
    },
    {
      "slug": "2025/12/kafka-broker-cop",
      "title": "Kafka’s Broker As A Traffic Cop",
      "publishedAt": "2025-12-18T06:05:13+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-5b5ab3f1-58cf-4239-a824-e5850d35ecdd.png",
      "socialMediaPost": "Kafka’s broker as a traffic cop: once you see it as a single point directing every request, a lot of its design choices suddenly make sense 🚦",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/kafka-broker-cop",
      "file": "/data/automated-blog/2025/12/kafka-broker-cop.json",
      "hashtags": "#Kafka #distributedSystems #streaming"
    },
    {
      "slug": "2025/12/engine-room-models",
      "title": "The Engine Room of Massive Models",
      "publishedAt": "2025-12-15T22:28:26+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-9a2e28b9-72bb-47ef-9d4b-db1bf48cb1f2.png",
      "socialMediaPost": "Curious what really keeps massive models running? “The Engine Room of Massive Models” digs into the hidden machinery behind large-scale training.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/engine-room-models",
      "file": "/data/automated-blog/2025/12/engine-room-models.json",
      "hashtags": "#machinelearning #largemodels #training #engineering"
    },
    {
      "slug": "2025/12/kubelet-micro-os",
      "title": "Kubelet As A Pod Micro‑OS",
      "publishedAt": "2025-12-13T15:00:05+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-347fdb6b-5832-4a6b-bfb0-5d97b4ea4cff.png",
      "socialMediaPost": "What if you treated kubelet like a tiny operating system just for pods? Viewing it as a pod micro‑OS can change how you think about Kubernetes internals.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/kubelet-micro-os",
      "file": "/data/automated-blog/2025/12/kubelet-micro-os.json",
      "hashtags": "#Kubernetes #kubelet #cloudnative #devops"
    },
    {
      "slug": "2025/12/torch-control-tower",
      "title": "The Control Tower Behind `import torch`",
      "publishedAt": "2025-12-11T07:26:57+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-2733b294-3dab-49a1-adaf-82ac275c25c9.png",
      "socialMediaPost": "Every PyTorch script begins with `import torch`, but what actually happens in that moment? This explores the control tower quietly running behind it.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/torch-control-tower",
      "file": "/data/automated-blog/2025/12/torch-control-tower.json",
      "hashtags": "#PyTorch #Python #MachineLearning #SoftwareArchitecture"
    },
    {
      "slug": "2025/12/vscode-startup-tower",
      "title": "The Control Tower Behind VS Code Startup",
      "publishedAt": "2025-12-08T23:52:55+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-81f5d8a8-aae2-48c6-84b7-ea3669ae44e4.png",
      "socialMediaPost": "Ever wondered what coordinates everything before VS Code even shows a window? The Control Tower Behind VS Code Startup breaks down the orchestration.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/12/vscode-startup-tower",
      "file": "/data/automated-blog/2025/12/vscode-startup-tower.json",
      "hashtags": "#VSCode #Electron #softwarearchitecture #startupsequence"
    },
    {
      "slug": "2025/12/checkpoint-ledger-langgraph",
      "title": "The Checkpoint Ledger Behind LangGraph",
      "publishedAt": "2025-12-06T16:19:22+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-a1fba479-53be-4207-a39c-466b8b352cdd.png",
      "socialMediaPost": "Curious how LangGraph keeps long-running workflows consistent? This breakdown of the checkpoint ledger behind it shows how the story stays coherent over time.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/12/checkpoint-ledger-langgraph",
      "file": "/data/automated-blog/2025/12/checkpoint-ledger-langgraph.json",
      "hashtags": "#LangGraph #LLM #checkpointing #distributedSystems"
    },
    {
      "slug": "2025/12/lightweight-imports",
      "title": "Why Transformers Imports Feel Lightweight",
      "publishedAt": "2025-12-05T03:14:38+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-47c476a7-35f2-4f4c-bb19-a7ecdcc24fb1.png",
      "socialMediaPost": "Why do transformers imports feel so light for such a big library? This digs into how that “lightweight” feeling happens and what it means for your own code.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/lightweight-imports",
      "file": "/data/automated-blog/2025/12/lightweight-imports.json",
      "hashtags": "#python #transformers #softwaredesign #devtools"
    },
    {
      "slug": "2025/12/one-class-cluster",
      "title": "When One Class Runs Your Cluster",
      "publishedAt": "2025-12-04T08:46:31+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-2118f3ad-9fb4-4fa1-959a-9cd7ec3a56b3.png",
      "socialMediaPost": "When one class runs your cluster, you get power and risk in the same place. Curious how that trade-off plays out in real distributed systems? ⚙️",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/one-class-cluster",
      "file": "/data/automated-blog/2025/12/one-class-cluster.json",
      "hashtags": "#distributedSystems #softwareDesign #architecture #scalability"
    },
    {
      "slug": "2025/12/transformers-listen",
      "title": "When Transformers Learn To Listen",
      "publishedAt": "2025-12-02T01:10:30+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-c271a904-dfe0-40a1-99a2-d4df73956ef4.png",
      "socialMediaPost": "When transformers learn to listen, they stop being just text models and become full speech partners. Curious how that shift changes what we build? 🎧",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/12/transformers-listen",
      "file": "/data/automated-blog/2025/12/transformers-listen.json",
      "hashtags": "#Transformers #MachineLearning #SpeechAI #DeepLearning"
    },
    {
      "slug": "2025/11/cli-operating-system",
      "title": "When a CLI Becomes an Operating System",
      "publishedAt": "2025-11-29T17:38:08+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-55340d3e-5edb-45ea-a908-389697d3d32a.png",
      "socialMediaPost": "When a CLI starts feeling more like an operating system than a simple command, you know something interesting is going on. Where’s that line for your tools?",
      "readingTime": "35m",
      "url": "https://zalt.me/blog/2025/11/cli-operating-system",
      "file": "/data/automated-blog/2025/11/cli-operating-system.json",
      "hashtags": "#cli #operatingsystem #developers #softwaredesign"
    },
    {
      "slug": "2025/11/jax-transformation-machine",
      "title": "How JAX Turns Ordinary Python Into a Transformation Machine",
      "publishedAt": "2025-11-27T10:07:49+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-5293f5c0-a887-45cc-a1d0-01b7d6f97857.png",
      "socialMediaPost": "What does it really mean for JAX to turn ordinary Python into a transformation machine? This walks through how that shift changes how you think about code.",
      "readingTime": "35m",
      "url": "https://zalt.me/blog/2025/11/jax-transformation-machine",
      "file": "/data/automated-blog/2025/11/jax-transformation-machine.json",
      "hashtags": "#JAX #Python #MachineLearning #Programming"
    },
    {
      "slug": "2025/11/batching-tokens-mind",
      "title": "Batching Tokens Without Losing Your Mind",
      "publishedAt": "2025-11-25T02:30:39+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d2971f8b-e76f-44e4-b286-7dca2739cf04.png",
      "socialMediaPost": "Working on high-throughput AI and juggling batching logic? “Batching Tokens Without Losing Your Mind” breaks down how to stay fast without drowning in complexity.",
      "readingTime": "35m",
      "url": "https://zalt.me/blog/2025/11/batching-tokens-mind",
      "file": "/data/automated-blog/2025/11/batching-tokens-mind.json",
      "hashtags": "#AI #LLM #inference #scaling"
    },
    {
      "slug": "2025/11/linux-time-namespaces",
      "title": "How Linux Bends Time Safely",
      "publishedAt": "2025-11-22T18:15:40+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-f8604db4-634d-4e28-aae1-87ebe5d2b0fb.png",
      "socialMediaPost": "How does an OS bend time without breaking everything that depends on it? This breakdown of Linux shows how time can be shifted while staying safe 🕒",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/11/linux-time-namespaces",
      "file": "/data/automated-blog/2025/11/linux-time-namespaces.json",
      "hashtags": "#Linux #kernel #systems"
    },
    {
      "slug": "2025/11/rails-application-security-nerve",
      "title": "Rails::Application as a Security Nerve Center",
      "publishedAt": "2025-11-18T16:02:26+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-781c1f17-63cb-494d-8de3-97f75525930a.png",
      "socialMediaPost": "Make Rails::Application your security nerve center: centralize your app's security into one clear, auditable place so wiring and behavior become easier to reason about.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/11/rails-application-security-nerve",
      "file": "/data/automated-blog/2025/11/rails-application-security-nerve.json",
      "hashtags": "#FrameworkDesign #SecureArchitecture #EngineeringPractices"
    },
    {
      "slug": "2025/11/node-esm-resolver",
      "title": "How Node’s ESM Resolver Balances Strictness and Helpfulness",
      "publishedAt": "2025-11-15T14:34:33+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-5c87ae85-6800-4e68-bfda-430de8f76263.png",
      "socialMediaPost": "How Node’s ESM resolver balances strictness and helpfulness: it enforces tight module rules yet offers actionable hints so engineers see precise errors and quicker paths to fix imports.",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/11/node-esm-resolver",
      "file": "/data/automated-blog/2025/11/node-esm-resolver.json",
      "hashtags": "#ModuleResolution #DevDX #JSModules"
    },
    {
      "slug": "2025/11/frontend-performance",
      "title": "Frontend Performance Optimization Guide",
      "publishedAt": "2025-11-08T16:00:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-3-medium.webp",
      "socialMediaPost": "Master the art of achieving perfect Lighthouse scores! Learn the ultimate frontend best practices for Performance, SEO, and Accessibility in this comprehensive guide.",
      "readingTime": "1h 35m",
      "url": "https://zalt.me/blog/2025/11/frontend-performance",
      "file": "/data/manual-blog/frontend-performance.json",
      "category": "Code Cracking",
      "template": "collapsible",
      "hashtags": "#Lighthouse #SEO #Accessibility #Frontend"
    },
    {
      "slug": "2025/11/decoding-linux-boot-start-kernel",
      "title": "Decoding Linux Boot: start_kernel",
      "publishedAt": "2025-11-07T20:45:41+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-28798968-30ac-40e6-9c4a-f2b4bd698bbb.png",
      "socialMediaPost": "Curious how Linux actually starts? Decoding Linux Boot: start_kernel walks through the start_kernel entry point so engineers can follow the initial boot sequence and its responsibilities.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/11/decoding-linux-boot-start-kernel",
      "file": "/data/automated-blog/2025/11/decoding-linux-boot-start-kernel.json",
      "hashtags": "#OSInternals #KernelInternals #StartupSequence"
    },
    {
      "slug": "2025/11/inside-elasticsearch-node-orchestrator",
      "title": "Inside Elasticsearch’s Node Orchestrator",
      "publishedAt": "2025-11-04T23:54:55+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-e5977b2d-ab89-4649-87d0-d835a7f478af.png",
      "socialMediaPost": "Curious how Elasticsearch’s Node Orchestrator manages a node’s lifecycle? A clear inside look with practical takeaways for engineers who design or operate distributed systems.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/11/inside-elasticsearch-node-orchestrator",
      "file": "/data/automated-blog/2025/11/inside-elasticsearch-node-orchestrator.json",
      "hashtags": "#Elasticsearch #NodeLifecycle #Orchestration"
    },
    {
      "slug": "2025/11/inside-fastmcp-context",
      "title": "Inside the fastmcp Context",
      "publishedAt": "2025-11-02T00:26:23+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-43a4d8ff-8fdf-423e-8a3b-ad5e5e904bc0.png",
      "socialMediaPost": "Don't treat the Context as a black box, Inside the fastmcp Context pulls back the curtain so engineers can see what the Context contains and how it frames request handling in fastmcp.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/11/inside-fastmcp-context",
      "file": "/data/automated-blog/2025/11/inside-fastmcp-context.json",
      "hashtags": "#MCP #Server #Engineering"
    },
    {
      "slug": "2025/11/taming-llama-generation",
      "title": "Taming LLaMA Generation APIs",
      "publishedAt": "2025-11-01T20:54:50+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d4359e22-7792-4926-8622-c62488053f63.png",
      "socialMediaPost": "Struggling with LLaMA generation APIs? Tame them for predictable, safer outputs and smoother integration, practical steps engineers can apply to make model serving less surprising.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/11/taming-llama-generation",
      "file": "/data/automated-blog/2025/11/taming-llama-generation.json",
      "hashtags": "#LLM #MLOps #Inference"
    },
    {
      "slug": "2025/10/inside-pydantics-lazy-facade",
      "title": "Inside Pydantic\u0019s Lazy Facade",
      "publishedAt": "2025-10-29T17:57:30+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-d88b9fa7-247c-40c8-ab88-f38a344dae77.png",
      "socialMediaPost": "Get a clear view of Pydantic's lazy facade: Inside Pydantic's Lazy Facade explains how the package surface defers work until needed and what that means for library authors.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-pydantics-lazy-facade",
      "file": "/data/automated-blog/2025/10/inside-pydantics-lazy-facade.json",
      "hashtags": "#Python #APIDesign #DesignPatterns"
    },
    {
      "slug": "2025/10/inside-fastapi-routing",
      "title": "Inside FastAPI’s Routing Core",
      "publishedAt": "2025-10-26T14:55:56+01:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-26158c97-3054-4ee6-8048-eed4ba4d2ab6.png",
      "socialMediaPost": "Most resources skim routing; Inside FastAPI’s Routing Core opens the router internals so backend engineers can reason about routing behavior and design choices for production APIs.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-fastapi-routing",
      "file": "/data/automated-blog/2025/10/inside-fastapi-routing.json",
      "hashtags": "#python #webframework #architecture"
    },
    {
      "slug": "2025/10/chatgpt-apps-playbook",
      "title": "A Strategic Guide to Building ChatGPT Apps",
      "publishedAt": "2025-10-25T10:17:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-2-medium.webp",
      "socialMediaPost": "The Next Frontier of Software is Here: Where Intent is the Currency and Conversation is the Operating System. The current, dense marketplaces of apps are expected to dissolve, giving way to a new ecosystem that trades the friction of rigid UIs for the natural fluency of human conversation!",
      "readingTime": "30m",
      "url": "https://zalt.me/blog/2025/10/chatgpt-apps-playbook",
      "file": "/data/manual-blog/chatgpt-apps-playbook.json",
      "category": "insights",
      "hashtags": "#AIMarketplace #ChatGPT #MCP #AppsSDK"
    },
    {
      "slug": "2025/10/inside-wordpress-wp-class",
      "title": "Inside WordPress WP Class",
      "publishedAt": "2025-10-23T12:56:25+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4a516926-727c-4c8f-8085-5de355778630.png",
      "socialMediaPost": "Curious about WordPress internals? Inside WordPress WP Class gives engineers a clear look at the core class so you can reason about how it works.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-wordpress-wp-class",
      "file": "/data/automated-blog/2025/10/inside-wordpress-wp-class.json",
      "hashtags": "#Internals #WebDev #PHP"
    },
    {
      "slug": "2025/10/inside-laravel-application-kernel",
      "title": "Inside Laravel\u0019s Application Kernel",
      "publishedAt": "2025-10-20T09:48:44+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-f0c9c7dd-a935-4223-9a9e-12a2c5ba7711.png",
      "socialMediaPost": "Get a clear tour of Laravel's Application Kernel, understand its purpose, the responsibilities it centralizes, and why developers should care when working on Laravel apps.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-laravel-application-kernel",
      "file": "/data/automated-blog/2025/10/inside-laravel-application-kernel.json",
      "hashtags": "#FrameworkInternals #PHPFrameworks #WebDev"
    },
    {
      "slug": "2025/10/inside-llamas-transformer-core",
      "title": "Inside Llama’s Transformer Core",
      "publishedAt": "2025-10-17T06:49:39+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-c337d88b-ab23-4dbf-b84e-b4cca6b0d2fd.png",
      "socialMediaPost": "Want a clear look inside Llama's Transformer core? A concise, engineer-focused tour of the model internals that explains how the core is structured and why those choices matter.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-llamas-transformer-core",
      "file": "/data/automated-blog/2025/10/inside-llamas-transformer-core.json",
      "hashtags": "#LLMs #Transformers #MLSystems"
    },
    {
      "slug": "2025/10/ai-history-timeline",
      "title": "The History of AI in One Timeline",
      "publishedAt": "2025-10-15T19:00:00+02:00",
      "featured": true,
      "imageUrl": "/images-optimized/blog/blog-1-2-medium.webp",
      "socialMediaPost": "So who invented AI? Maybe we all did. Human survival drove farming → farming needed counting → counting birthed math → math built machines → machines created computers → computers generated data → data trained AI → AI got transformers → transformers power AI. </br> Call it the longest relay race in tech, passed hand-to-hand for thousands of years.",
      "readingTime": "1h 5m",
      "url": "https://zalt.me/blog/2025/10/ai-history-timeline",
      "file": "/data/manual-blog/ai-history-timeline.json",
      "category": "insights",
      "template": "timeline",
      "hashtags": "#TechHistory #AI #Innovation #Timeline"
    },
    {
      "slug": "2025/10/inside-gits-front-controller",
      "title": "Inside Git’s Front Controller",
      "publishedAt": "2025-10-14T03:50:18+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-949d7436-a12e-4110-8013-46b5fad64ebe.png",
      "socialMediaPost": "Understand Git's front controller to see how the top-level dispatcher turns raw input into the correct subcommand and environment for engineers building or debugging CLIs.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-gits-front-controller",
      "file": "/data/automated-blog/2025/10/inside-gits-front-controller.json",
      "hashtags": "#Git #CLI #DevTools"
    },
    {
      "slug": "2025/10/bootstrapping-curls-cli-safely",
      "title": "Bootstrapping curl’s CLI Safely",
      "publishedAt": "2025-10-11T00:50:37+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-cdda8d00-8da0-407a-8b8c-3c3ef35e8bdb.png",
      "socialMediaPost": "Make the CLI entry safe: Bootstrapping curl’s CLI safely aims to keep startup logic small and predictable so engineers can reason about early failures with far fewer surprises.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/bootstrapping-curls-cli-safely",
      "file": "/data/automated-blog/2025/10/bootstrapping-curls-cli-safely.json",
      "hashtags": "#reliability #devtools #bootstrap"
    },
    {
      "slug": "2025/10/inside-polars-lazyframe",
      "title": "Inside Polars LazyFrame",
      "publishedAt": "2025-10-07T21:50:06+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-8d9262fb-23b4-464d-9421-92a5e59b37b8.png",
      "socialMediaPost": "Curious what's inside Polars LazyFrame? Engineers get a clear tour of its internals to better reason about lazy execution and spot refactors.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-polars-lazyframe",
      "file": "/data/automated-blog/2025/10/inside-polars-lazyframe.json",
      "hashtags": "#DataEngineering #Python #QueryEngine"
    },
    {
      "slug": "2025/10/inside-redis-server-c-orchestrator",
      "title": "Inside Redis server.c Orchestrator",
      "publishedAt": "2025-10-04T18:47:49+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-b5fd6ab8-239a-4cce-a595-1d0c80ec3fd5.png",
      "socialMediaPost": "Inside Redis server.c Orchestrator peels back server.c to show how Redis coordinates its runtime, a concise look engineers can use to understand core orchestration and patterns to borrow.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/10/inside-redis-server-c-orchestrator",
      "file": "/data/automated-blog/2025/10/inside-redis-server-c-orchestrator.json",
      "hashtags": "#InMemoryDB #SystemsEngineering #CProgramming"
    },
    {
      "slug": "2025/09/inside-etcds-bootstrap-brain",
      "title": "Inside etcd’s Bootstrap Brain",
      "publishedAt": "2025-09-28T12:50:02+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-0267727c-2ca2-47aa-86f6-2015237c2dbc.png",
      "socialMediaPost": "See inside etcd's bootstrap brain to learn what governs startup decisions, ideal for engineers who need clarity on config checks, disk classification, and readiness signaling.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/09/inside-etcds-bootstrap-brain",
      "file": "/data/automated-blog/2025/09/inside-etcds-bootstrap-brain.json",
      "hashtags": "#DistributedSystems #ControlPlanes #DevOps"
    },
    {
      "slug": "2025/09/demystifying-terraform-cli-bootstrap",
      "title": "Demystifying Terraform CLI Bootstrap",
      "publishedAt": "2025-09-25T09:49:23+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-32e38c14-a294-4251-a2d5-ea7207161777.png",
      "socialMediaPost": "Understand Terraform CLI bootstrap end to end: a clear look at the bootstrap sequence so engineers can read the entrypoint and reason about initialization, with clear steps.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/demystifying-terraform-cli-bootstrap",
      "file": "/data/automated-blog/2025/09/demystifying-terraform-cli-bootstrap.json",
      "hashtags": "#DevTools #CommandLine #Observability"
    },
    {
      "slug": "2025/09/inside-fastapi-routing-core",
      "title": "Inside FastAPI’s Router: Requests, Dependencies, and Responses",
      "publishedAt": "2025-09-22T06:43:11+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4fd78844-54e7-4d21-88d5-808323c93d69.png",
      "socialMediaPost": "Understand FastAPI routing internals: Inside FastAPI’s Routing Core explains how the router and request handler wire requests, dependencies, and responses, useful for backend engineers.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-fastapi-routing-core",
      "file": "/data/automated-blog/2025/09/inside-fastapi-routing-core.json",
      "hashtags": "#Python #WebFrameworks #APIDesign"
    },
    {
      "slug": "2025/09/inside-celerys-app-core",
      "title": "Inside Celery\u0019s App Core",
      "publishedAt": "2025-09-19T03:43:53+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-36ad1d87-4a67-40a3-aace-7f2e29305a82.png",
      "socialMediaPost": "Want to see what's under the hood of Celery's App Core? A practical tour for engineers to understand the app lifecycle, key seams, and where to start when debugging or extending it.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-celerys-app-core",
      "file": "/data/automated-blog/2025/09/inside-celerys-app-core.json",
      "hashtags": "#TaskQueue #Internals #DevOps"
    },
    {
      "slug": "2025/09/inside-flasks-request-engine",
      "title": "Inside Flask’s Request Engine",
      "publishedAt": "2025-09-16T00:44:25+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-9123c905-aab0-4c2a-ac76-4f575f33dd4b.png",
      "socialMediaPost": "Inside Flask's Request Engine: a clear, engineer-focused walk through the app's lifecycle so you can reason about how requests flow, where hooks run, and what to test or refactor.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/09/inside-flasks-request-engine",
      "file": "/data/automated-blog/2025/09/inside-flasks-request-engine.json",
      "hashtags": "#WebInternals #Python #WSGI"
    },
    {
      "slug": "2025/09/inside-djangos-basehandler",
      "title": "Inside Django\u00199s BaseHandler",
      "publishedAt": "2025-09-12T21:43:39+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-f6a6f440-df5b-4532-b5c8-59bd00062b5f.png",
      "socialMediaPost": "Curious what's under the hood of Django? Inside Django's BaseHandler walks engineers through the handler's internals so you can better understand how the framework processes requests.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-djangos-basehandler",
      "file": "/data/automated-blog/2025/09/inside-djangos-basehandler.json",
      "hashtags": "#Python #WebFramework #WebDev"
    },
    {
      "slug": "2025/09/inside-vites-dev-server",
      "title": "Inside Vite’s Dev Server Orchestrator",
      "publishedAt": "2025-09-09T18:37:12+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-fefc0fc7-b24a-412b-ac6a-33c2f329df2e.png",
      "socialMediaPost": "See inside Vite’s Dev Server Orchestrator: a concise view for engineers of the orchestrator’s role in managing the dev server and keeping its components coordinated.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-vites-dev-server",
      "file": "/data/automated-blog/2025/09/inside-vites-dev-server.json",
      "hashtags": "#Frontend #BuildTools #ViteJS"
    },
    {
      "slug": "2025/09/decoding-torch-init-py",
      "title": "Decoding torch/__init__.py: Design Lessons",
      "publishedAt": "2025-09-09T09:34:17+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4d620d96-4f28-4fcd-a9ee-f0b20a9099a6.png",
      "socialMediaPost": "Get design lessons by decoding torch/__init__.py - practical insights into the initializer that engineers can use to improve API clarity, module responsibilities, and long-term maintenance.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/decoding-torch-init-py",
      "file": "/data/automated-blog/2025/09/decoding-torch-init-py.json",
      "hashtags": "#PyTorch #SoftwareArchitecture #PythonDev"
    },
    {
      "slug": "2025/09/inside-the-piece-executor",
      "title": "Inside the Piece Executor",
      "publishedAt": "2025-09-08T08:34:43+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-391718aa-5610-4e79-9c14-33320e2522f6.png",
      "socialMediaPost": "Peek inside the Piece Executor, a compact tour of its internals and design intent for engineers who maintain or extend execution code, so you can reason clearly about runtime behavior.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-the-piece-executor",
      "file": "/data/automated-blog/2025/09/inside-the-piece-executor.json",
      "hashtags": "#Architecture #Runtime #Engineering"
    },
    {
      "slug": "2025/09/inside-nextjs-base-server",
      "title": "Inside Next.js Base Server",
      "publishedAt": "2025-09-07T11:47:23+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-3cbb120b-e392-4028-bf01-69715c7c9d72.png",
      "socialMediaPost": "Curious what runs at the heart of Next.js? Inside Next.js Base Server explores the server core so engineers can understand its internals, key design trade‑offs, and practical patterns to borrow.",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/09/inside-nextjs-base-server",
      "file": "/data/automated-blog/2025/09/inside-nextjs-base-server.json",
      "hashtags": "#WebDev #Backend #Frameworks"
    },
    {
      "slug": "2025/09/deconstructing-nestfactory-nestjs",
      "title": "Deconstructing NestFactory in NestJS",
      "publishedAt": "2025-09-07T08:28:45+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-919019dd-7c92-4d1a-9812-8313bb00820d.png",
      "socialMediaPost": "NestFactory (nestjs/nest): how create(), microservices and app context wire DI, UuidFactory and ExceptionsZone, 3 fixes: stronger adapter guard, warn on UUID mode, flush logs before abort.",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/deconstructing-nestfactory-nestjs",
      "file": "/data/automated-blog/2025/09/deconstructing-nestfactory-nestjs.json",
      "hashtags": "#NestJS #NodeJS #Observability"
    },
    {
      "slug": "2025/09/inside-fastify-factory-core",
      "title": "Inside Fastify’s Factory Core",
      "publishedAt": "2025-09-07T07:33:52+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-75455879-7e86-4ede-8eaa-88aacefd86be.png",
      "socialMediaPost": "Stared at a framework's big factory file and felt lost? I walk Fastify's core to show the tiny guards that keep requests fast, where bugs hide, and a one-line fix that fixes multibyte responses. 🔍",
      "readingTime": "25m",
      "url": "https://zalt.me/blog/2025/09/inside-fastify-factory-core",
      "file": "/data/automated-blog/2025/09/inside-fastify-factory-core.json",
      "hashtags": "#nodejs #fastify #architecture #Zalt"
    },
    {
      "slug": "2025/09/inside-n8n-workflow-engine",
      "title": "Inside n8n’s Workflow Engine",
      "publishedAt": "2025-09-07T07:07:53+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-83711de2-272d-407a-9d0e-ced7ec9793e6.png",
      "socialMediaPost": "Ever wondered how n8n runs workflows? I unpack the orchestrator that schedules nodes, syncs multi-input joins, keeps runs cancelable, plus 3 practical refactors to scale 🚀",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/inside-n8n-workflow-engine",
      "file": "/data/automated-blog/2025/09/inside-n8n-workflow-engine.json",
      "hashtags": "#n8n #automation #architecture #Zalt"
    },
    {
      "slug": "2025/09/inside-llama-transformer-core",
      "title": "Inside Llama Transformer Core",
      "publishedAt": "2025-09-07T05:45:15+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-434ea093-e55b-4e0a-b8fe-87c423d75a52.png",
      "socialMediaPost": "Ever stared at a transformer file and wondered how it works? I unpack Llama's compact core: embeddings, rotary encoding, KV cache for fast generation, plus tiny refactors and tests to make it reliable. 🔧",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2025/09/inside-llama-transformer-core",
      "file": "/data/automated-blog/2025/09/inside-llama-transformer-core.json",
      "hashtags": "#programming #transformers #ml #Zalt"
    },
    {
      "slug": "2025/09/taming-giant-registries-safely",
      "title": "Taming Giant Registries Safely",
      "publishedAt": "2025-09-06T15:13:15+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-e6d82059-e36a-464a-8187-6fa9bb24d66a.png",
      "socialMediaPost": "Ever had a huge plugin table go wrong in production? I dug into how to keep giant registries safe, lazy loading, tiny validation tests, and simple doc fixes that stop subtle breakage 🚨🧰",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2025/09/taming-giant-registries-safely",
      "file": "/data/automated-blog/2025/09/taming-giant-registries-safely.json",
      "hashtags": "#programming #architecture #devops #Zalt"
    },
    {
      "slug": "2025/09/trust-your-timeouts-less",
      "title": "Trust Your Timeouts Less",
      "publishedAt": "2025-09-06T06:38:55+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-ecfb4361-1a26-4960-8158-a5a24d9d7917.png",
      "socialMediaPost": "Ever had an env var silently disable a safety check? I found NaN timeouts can turn pause limits into no-ops, clamp and validate env-derived timeouts to keep long-lived flows from blowing up. 🔧",
      "readingTime": "10m",
      "url": "https://zalt.me/blog/2025/09/trust-your-timeouts-less",
      "file": "/data/automated-blog/2025/09/trust-your-timeouts-less.json",
      "hashtags": "#programming #devops #Zalt"
    },
    {
      "slug": "2025/09/why-transformers-imports-feel-fast",
      "title": "Why Transformers Imports Feel Fast",
      "publishedAt": "2025-09-06T06:18:05+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-58e3d8a6-d6ad-4620-92fa-68242cfd1038.png",
      "socialMediaPost": "Slow imports killing your flow? I explain why transformers feels fast: it exposes names quickly but only loads heavy backends when used, keeps IDEs happy, and shows clear error messages ⚡",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/why-transformers-imports-feel-fast",
      "file": "/data/automated-blog/2025/09/why-transformers-imports-feel-fast.json",
      "hashtags": "#ML #Python #performance #Zalt"
    },
    {
      "slug": "2025/09/why-pydantic-models-feel-fast",
      "title": "Why Pydantic Models Feel Fast",
      "publishedAt": "2025-09-05T11:32:50+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-4235b195-1acb-48c2-bd87-62ded5ad8dc7.png",
      "socialMediaPost": "",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2025/09/why-pydantic-models-feel-fast",
      "file": "/data/automated-blog/2025/09/why-pydantic-models-feel-fast.json"
    },
    {
      "slug": "2025/09/the-router-factory-pattern",
      "title": "The Router Factory Pattern",
      "publishedAt": "2025-09-05T11:14:24+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-66eabd2d-c02b-4b9a-ace4-2445e7bd1bb8.png",
      "socialMediaPost": "",
      "readingTime": "15m",
      "url": "https://zalt.me/blog/2025/09/the-router-factory-pattern",
      "file": "/data/automated-blog/2025/09/the-router-factory-pattern.json"
    },
    {
      "slug": "2025/09/torch-init-lesson-learned",
      "title": "Torch init! The 2,000-Line Bootstrap That Powers AI",
      "publishedAt": "2025-09-05T10:47:04+02:00",
      "featured": false,
      "imageUrl": "https://zalt-me-blog.s3.us-west-1.amazonaws.com/assets/blog-images/zalt-75b95531-d69d-42d8-9db7-18b93d82a069.png",
      "socialMediaPost": "",
      "readingTime": "20m",
      "url": "https://zalt.me/blog/2025/09/torch-init-lesson-learned",
      "file": "/data/automated-blog/2025/09/torch-init-lesson-learned.json"
    }
  ],
  "totalPosts": 269,
  "generatedAt": "2026-07-21T03:29:06.010Z"
}