{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Umesh Malik's Blog",
  "home_page_url": "https://umesh-malik.com",
  "feed_url": "https://umesh-malik.com/feed.json",
  "description": "Articles on AI engineering, GenAI applications, LLMs, RAG pipelines, and modern software development",
  "language": "en-US",
  "authors": [
    {
      "name": "Umesh Malik",
      "url": "https://umesh-malik.com",
      "avatar": "https://umesh-malik.com/images/umesh-malik.jpg"
    }
  ],
  "items": [
    {
      "id": "https://umesh-malik.com/blog/npm-encrypted-loader-malware-detection",
      "url": "https://umesh-malik.com/blog/npm-encrypted-loader-malware-detection",
      "title": "How to Detect npm Encrypted Loader Malware: 3.1M Downloads",
      "summary": "Detect npm encrypted loader malware before it runs: the trigger matrix, AES-256-GCM payload, and IOCs behind mathmain's 3.1M weekly downloads.",
      "date_published": "2026-09-22T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "npm",
        "Supply Chain Security",
        "Malware Analysis",
        "AI Security",
        "Node.js"
      ],
      "image": "https://umesh-malik.com/blog/npm-encrypted-loader-malware-detection-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/libheif-avif-rce-cve-2026-84383",
      "url": "https://umesh-malik.com/blog/libheif-avif-rce-cve-2026-84383",
      "title": "Fix the libheif AVIF RCE: A CVSS 9.8 Bug in Sharp and Next.js",
      "summary": "A CVSS 9.8 heap-buffer-overflow in libheif AVIF RCE (CVE-2026-84383) reaches Sharp, libvips, ImageMagick, and Next.js. Here's who's exposed and how to patch.",
      "date_published": "2026-09-20T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Security",
        "AI Security",
        "Node.js",
        "Next.js",
        "Image Processing",
        "Vulnerability Disclosure"
      ],
      "image": "https://umesh-malik.com/blog/libheif-avif-rce-cve-2026-84383-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/multi-agent-llm-latency-text-handoffs",
      "url": "https://umesh-malik.com/blog/multi-agent-llm-latency-text-handoffs",
      "title": "How to Fix Multi-Agent LLM Latency: Text Handoffs Cost 2.5x",
      "summary": "Multi-agent LLM latency isn't random: an ICLR 2026 paper measured the cause — text handoffs cost 2.5x more time and 3-5% less accuracy than skipping text.",
      "date_published": "2026-09-20T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Agents",
        "Multi-Agent Systems",
        "LLM Engineering",
        "KV Cache",
        "AI Research",
        "Performance Engineering"
      ],
      "image": "https://umesh-malik.com/blog/multi-agent-llm-latency-text-handoffs-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/scope-ai-agent-reverse-engineering-tasks",
      "url": "https://umesh-malik.com/blog/scope-ai-agent-reverse-engineering-tasks",
      "title": "How to Scope an AI Agent for Reverse Engineering: 4 Weeks, Not Years",
      "summary": "How to scope an AI agent for reverse engineering: one failing test beats a full spec. A GPU driver project shipped in 4 weeks, not years.",
      "date_published": "2026-09-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents & DX",
        "Reverse Engineering",
        "LLM Agents",
        "Codex",
        "GPU Drivers",
        "Developer Tooling"
      ],
      "image": "https://umesh-malik.com/blog/scope-ai-agent-reverse-engineering-tasks-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/when-to-give-ai-agents-autonomy",
      "url": "https://umesh-malik.com/blog/when-to-give-ai-agents-autonomy",
      "title": "How to Decide When to Give an AI Agent Autonomy: 3:1 Test",
      "summary": "How to decide when to give an AI agent autonomy: chip design keeps 3 to 5 spec engineers per builder before trusting it — the same ratio tests your task.",
      "date_published": "2026-09-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Agent Autonomy",
        "AI Coding Agents",
        "Engineering Management",
        "Risk Management"
      ],
      "image": "https://umesh-malik.com/blog/when-to-give-ai-agents-autonomy-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/migrate-large-system-prompt-ollama",
      "url": "https://umesh-malik.com/blog/migrate-large-system-prompt-ollama",
      "title": "How to Migrate a Large System Prompt to Ollama Without Breaking It",
      "summary": "Migrate a large system prompt to Ollama and it can burn 14% of a 65K context window before the first turn. What breaks, why, and the fix that worked.",
      "date_published": "2026-09-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Self-Hosting",
        "Ollama",
        "LLM Engineering",
        "Prompt Engineering",
        "Context Window",
        "AI Coding Agents",
        "Open Source LLMs"
      ],
      "image": "https://umesh-malik.com/blog/migrate-large-system-prompt-ollama-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/scope-ai-agent-cloudflare-workers-access",
      "url": "https://umesh-malik.com/blog/scope-ai-agent-cloudflare-workers-access",
      "title": "How to Scope AI Agent Access to Cloudflare Workers, Not Admin",
      "summary": "Cloudflare's new roles let you scope AI agent access to Cloudflare Workers per resource, not per account. Four roles, ten legacy ones replaced, 5 steps.",
      "date_published": "2026-09-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Cloudflare",
        "Cloudflare Workers",
        "AI Agents",
        "Access Control",
        "Permissions",
        "AI Security"
      ],
      "image": "https://umesh-malik.com/blog/scope-ai-agent-cloudflare-workers-access-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-generated-code-guardrails",
      "url": "https://umesh-malik.com/blog/ai-generated-code-guardrails",
      "title": "Build AI-Generated Code Guardrails: The 6 Checks Anthropic Runs",
      "summary": "How to build AI-generated code guardrails before shipping: the six checks Anthropic runs, what each catches, and the cost of running them on your own repo.",
      "date_published": "2026-09-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents",
        "Claude Code",
        "Code Quality",
        "DevOps",
        "Anthropic",
        "Testing"
      ],
      "image": "https://umesh-malik.com/blog/ai-generated-code-guardrails-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/compare-llm-architectures-pytorch",
      "url": "https://umesh-malik.com/blog/compare-llm-architectures-pytorch",
      "title": "How to Compare LLM Architectures: 16 Models, One File Each",
      "summary": "Compare LLM architectures fast: GQA cuts KV cache 8x on Llama 3 70B, MLA cuts it 93.3% on DeepSeek-V2. One PyTorch repo shows why, file by file.",
      "date_published": "2026-09-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "PyTorch",
        "Transformers",
        "Model Architecture",
        "Open Source",
        "Attention Mechanisms"
      ],
      "image": "https://umesh-malik.com/blog/compare-llm-architectures-pytorch-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/package-registry-rce-auto-build",
      "url": "https://umesh-malik.com/blog/package-registry-rce-auto-build",
      "title": "Package registry RCE: close the auto-build path 2,000 gems used",
      "summary": "Package registry RCE starts the moment an upload triggers a build. Here is the four-hop chain 2,000 gems used on RubyGems, and the controls that break it.",
      "date_published": "2026-09-13T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Supply Chain Security",
        "Package Registries",
        "Sandboxing",
        "AI Agents"
      ],
      "image": "https://umesh-malik.com/blog/package-registry-rce-auto-build-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/automate-saas-security-remediation",
      "url": "https://umesh-malik.com/blog/automate-saas-security-remediation",
      "title": "Automate SaaS Security Remediation: Fixed in Under 5 Minutes",
      "summary": "Automate SaaS security remediation and cut fixes from hours to under 5 minutes: the queue-policy-workflow pattern, plus when it still needs a human in the loop.",
      "date_published": "2026-09-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Cloud Security",
        "Security Automation",
        "SaaS Security",
        "Serverless Architecture",
        "DevSecOps",
        "Cloudflare Workers"
      ],
      "image": "https://umesh-malik.com/blog/automate-saas-security-remediation-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/openrouter-production-provider-bugs",
      "url": "https://umesh-malik.com/blog/openrouter-production-provider-bugs",
      "title": "Debugging OpenRouter in production: the 10 provider bugs that bite",
      "summary": "Debugging OpenRouter in production means auditing providers, not models: the same weights score 90% vs 58% GPQA, and pinned fallbacks cascade-fail in 14 days.",
      "date_published": "2026-09-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "OpenRouter",
        "AI Infrastructure",
        "Model Routing",
        "Production Reliability",
        "Open Weight Models"
      ],
      "image": "https://umesh-malik.com/blog/openrouter-production-provider-bugs-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/looped-transformers-parameter-compute-tradeoff",
      "url": "https://umesh-malik.com/blog/looped-transformers-parameter-compute-tradeoff",
      "title": "How to Decide: Loop Transformer Blocks or Add More Layers",
      "summary": "Loop transformer blocks or add more layers? Reusing weights cuts training compute 6.8-18% at equal loss, but forward passes and KV cache never shrink.",
      "date_published": "2026-09-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "Model Architecture",
        "Transformers",
        "AI Engineering",
        "Performance Engineering"
      ],
      "image": "https://umesh-malik.com/blog/looped-transformers-parameter-compute-tradeoff-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/yo-yo-ddos-attack-mitigation",
      "url": "https://umesh-malik.com/blog/yo-yo-ddos-attack-mitigation",
      "title": "How to Stop a Yo-Yo DDoS Attack: the Read the Docs Playbook",
      "summary": "How to stop a yo-yo DDoS attack: Read the Docs held 5.5M requests/minute for 10 days using JA4 fingerprinting and edge caching, not IP bans.",
      "date_published": "2026-09-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "DDoS Mitigation",
        "Bot Defense",
        "Web Infrastructure",
        "Open Source Infra"
      ],
      "image": "https://umesh-malik.com/blog/yo-yo-ddos-attack-mitigation-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/run-kimi-k3-locally-macbook-ssd-streaming",
      "url": "https://umesh-malik.com/blog/run-kimi-k3-locally-macbook-ssd-streaming",
      "title": "Run Kimi K3 Locally: 2.8T Params From 4 SSDs at 1 Tok/s",
      "summary": "Run Kimi K3 locally on a MacBook by streaming 1.45TB of experts from four SSDs — the 1 tok/s number, and why doubling drives doesn't double speed.",
      "date_published": "2026-09-09T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "Local Inference",
        "Mixture of Experts",
        "Rust",
        "Apple Silicon"
      ],
      "image": "https://umesh-malik.com/blog/run-kimi-k3-locally-macbook-ssd-streaming-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/post-quantum-tls-migration-checklist",
      "url": "https://umesh-malik.com/blog/post-quantum-tls-migration-checklist",
      "title": "Post-Quantum TLS Migration: Stop Paying the 150ms Retry Tax",
      "summary": "Post-quantum TLS migration checklist: X25519MLKEM768 cut Cloudflare's handshake retries from 52% to 3.7%. How to check, enable, and verify on your own origin.",
      "date_published": "2026-09-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "TLS",
        "Post-Quantum Cryptography",
        "Web Engineering",
        "Network Security",
        "Cloudflare",
        "Performance Engineering"
      ],
      "image": "https://umesh-malik.com/blog/post-quantum-tls-migration-checklist-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/stop-ai-scrapers-overloading-your-server",
      "url": "https://umesh-malik.com/blog/stop-ai-scrapers-overloading-your-server",
      "title": "How to Stop AI Scrapers Overloading Your Server: the 20% CPU Toll",
      "summary": "How to stop AI scrapers overloading your server: git.kernel.org now loses 14-16 of its 90 CPU cores to bots, and proof-of-work only bought a few months.",
      "date_published": "2026-09-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Bot Defense",
        "Web Infrastructure",
        "DDoS Mitigation",
        "Open Source Infra"
      ],
      "image": "https://umesh-malik.com/blog/stop-ai-scrapers-overloading-your-server-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/reactive-dom-javascript-proxy",
      "url": "https://umesh-malik.com/blog/reactive-dom-javascript-proxy",
      "title": "Build JavaScript Proxy Reactive State: 855 Bytes, No Framework",
      "summary": "Javascript proxy reactive state in under a kilobyte: an 80-line get/set trap that tracks reads, batches writes, and quietly breaks on one property name.",
      "date_published": "2026-09-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "JavaScript",
        "Web Engineering",
        "Proxy",
        "State Management",
        "Performance Engineering",
        "Frontend"
      ],
      "image": "https://umesh-malik.com/blog/reactive-dom-javascript-proxy-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/zero-downtime-cms-migration-playbook",
      "url": "https://umesh-malik.com/blog/zero-downtime-cms-migration-playbook",
      "title": "Migrate to a New CMS With Zero Downtime: a 28K RPS DDoS Mid-Rollout",
      "summary": "Here is how to migrate to a new CMS with zero downtime: a cookie-routed proxy Worker, staged 1%-100% rollout, and a 28,000 RPS DDoS absorbed mid-migration.",
      "date_published": "2026-09-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Web Engineering",
        "Cloudflare Workers",
        "Site Reliability",
        "Load Testing",
        "DevOps"
      ],
      "image": "https://umesh-malik.com/blog/zero-downtime-cms-migration-playbook-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-incident-response-skill-decay",
      "url": "https://umesh-malik.com/blog/ai-incident-response-skill-decay",
      "title": "AI incident response skill decay: the aviation fix that works",
      "summary": "AI incident response skill decay is real: aviation solved the same problem decades ago with forced recurrent training, not less hands-on practice.",
      "date_published": "2026-09-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "SRE",
        "Incident Response",
        "Career & Productivity",
        "AI Engineering",
        "Automation",
        "On-Call"
      ],
      "image": "https://umesh-malik.com/blog/ai-incident-response-skill-decay-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rust-dyn-trait-vs-generics-memory-cost",
      "url": "https://umesh-malik.com/blog/rust-dyn-trait-vs-generics-memory-cost",
      "title": "Rust dyn Trait vs generics: how to switch, and the 16-byte cost",
      "summary": "Rust dyn Trait vs generics: how to switch, and the 16-byte fat-pointer cost dyn Trait pays on every call — the cost generics compile away.",
      "date_published": "2026-09-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Rust",
        "Systems Programming",
        "Memory Management",
        "Performance Engineering",
        "Web Engineering"
      ],
      "image": "https://umesh-malik.com/blog/rust-dyn-trait-vs-generics-memory-cost-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-agent-cms-write-access",
      "url": "https://umesh-malik.com/blog/ai-agent-cms-write-access",
      "title": "How to Give an AI Agent CMS Write Access Without Melting the Cache",
      "summary": "AI agent CMS write access breaks caches fast. The layered invalidation pattern that let one CMS absorb 5,000 RPS spikes and a 28,000 RPS DDoS without a hiccup.",
      "date_published": "2026-09-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "MCP",
        "AI Agents",
        "Web Engineering",
        "Caching",
        "Cloudflare",
        "CMS"
      ],
      "image": "https://umesh-malik.com/blog/ai-agent-cms-write-access-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-agent-egress-bypass-get-requests",
      "url": "https://umesh-malik.com/blog/ai-agent-egress-bypass-get-requests",
      "title": "AI Agent Egress Bypass: Fix the GET Trick Behind 18k Wiki Edits",
      "summary": "Researchers traced 18,000 wiki edits to an AI agent egress bypass: sandboxed OpenAI agents used GET requests and a wildcard domain to reach the internet.",
      "date_published": "2026-09-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "AI Agents",
        "Sandboxing",
        "Network Security",
        "Agent Governance"
      ],
      "image": "https://umesh-malik.com/blog/ai-agent-egress-bypass-get-requests-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-agent-knowledge-base-architecture",
      "url": "https://umesh-malik.com/blog/ai-agent-knowledge-base-architecture",
      "title": "Build an AI Agent Knowledge Base: The Pattern That Cut Tokens 80%",
      "summary": "How to build an AI agent knowledge base: the wiki-plus-recipes pattern that cut per-turn tokens 80% and turned days of expert review into minutes.",
      "date_published": "2026-09-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Context Engineering",
        "AI Coding Agents",
        "LLM Engineering",
        "Knowledge Management"
      ],
      "image": "https://umesh-malik.com/blog/ai-agent-knowledge-base-architecture-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/reduce-rust-struct-memory-footprint",
      "url": "https://umesh-malik.com/blog/reduce-rust-struct-memory-footprint",
      "title": "How to Reduce Rust Struct Memory Footprint: 5 Techniques, 56% Smaller",
      "summary": "How to reduce Rust struct memory footprint: the 5 layout changes that shrank a real cache entry from 953 to 420 bytes, and what each one costs.",
      "date_published": "2026-09-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Rust",
        "Performance Engineering",
        "Memory Optimization",
        "Systems Programming",
        "Web Engineering"
      ],
      "image": "https://umesh-malik.com/blog/reduce-rust-struct-memory-footprint-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/openai-python-httpx2-migration-guide",
      "url": "https://umesh-malik.com/blog/openai-python-httpx2-migration-guide",
      "title": "OpenAI Python HTTPX2 Migration: Fix the TLS Trap First",
      "summary": "The OpenAI Python HTTPX2 migration breaks certifi TLS in containers and proxies. The full checklist, OS trust store fix, and legacy escape hatch.",
      "date_published": "2026-08-29T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "OpenAI",
        "Python",
        "LLM Engineering",
        "API",
        "SDK",
        "TLS",
        "Security",
        "Migration"
      ],
      "image": "https://umesh-malik.com/blog/openai-python-httpx2-migration-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training",
      "url": "https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training",
      "title": "Fix the PCIe Bottleneck in AI Training: How Built-in NICs Work",
      "summary": "Fix the PCIe bottleneck in AI training with built-in NICs. Meta's MTIA 300 reclaims 1.2 TB/s by eliminating host CPU mediation.",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Engineering",
        "AI Infrastructure",
        "Distributed Training",
        "GPU",
        "Networking",
        "Meta AI",
        "Performance"
      ],
      "image": "https://umesh-malik.com/blog/eliminate-pcie-bottleneck-ai-training-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid",
      "url": "https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid",
      "title": "MS Paint Invisible Watermark: How to Find the GUID in AI Images",
      "summary": "The MS Paint invisible watermark embeds a server GUID into every AI image — even when inference runs locally. Here's how to detect it.",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Privacy Engineering",
        "Content Provenance",
        "Reverse Engineering",
        "Windows",
        "AI Ethics"
      ],
      "image": "https://umesh-malik.com/blog/ms-paint-invisible-watermark-guid-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141",
      "url": "https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141",
      "title": "How to Harden vLLM Inference: CVE-2025-9141 Defense Guide",
      "summary": "How to harden vLLM inference against token exploits. CVE-2025-9141 let models run code via eval(). Separate GPU hosts from parsers.",
      "date_published": "2026-08-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "LLM Engineering",
        "vLLM",
        "Vulnerability Management",
        "Supply Chain Security",
        "Inference"
      ],
      "image": "https://umesh-malik.com/blog/secure-llm-inference-vllm-cve-2025-9141-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo",
      "url": "https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo",
      "title": "ChatGPT Search Optimization After the Site-Scoping Shift",
      "summary": "ChatGPT search optimization changed when 17% of queries started scoping to specific sites. What the GPT-5.6 shift means and how to get cited.",
      "date_published": "2026-08-24T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Search",
        "GEO",
        "SEO",
        "ChatGPT",
        "LLM Engineering",
        "Content Strategy"
      ],
      "image": "https://umesh-malik.com/blog/chatgpt-search-site-scoping-geo-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks",
      "url": "https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks",
      "title": "How to Block AI Training Without Losing Search Visibility",
      "summary": "Block AI training without losing search by setting one toggle. Bot Preference Sync writes robots.txt from your dashboard — no static file to maintain.",
      "date_published": "2026-08-24T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Web Crawlers",
        "Cloudflare",
        "robots.txt",
        "Bot Management",
        "AI Training",
        "SEO"
      ],
      "image": "https://umesh-malik.com/blog/sync-robots-txt-ai-bot-blocks-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers",
      "url": "https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers",
      "title": "Configure Optional OAuth Scopes for MCP Servers and Agents",
      "summary": "Configure optional OAuth scopes so users can narrow agent permissions at consent. The API call, the UX, and handling partial grants.",
      "date_published": "2026-08-23T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "OAuth",
        "MCP",
        "Cloudflare",
        "API Design",
        "Agent Architecture",
        "Security"
      ],
      "image": "https://umesh-malik.com/blog/optional-oauth-scopes-mcp-servers-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rust-glancer-low-memory-lsp",
      "url": "https://umesh-malik.com/blog/rust-glancer-low-memory-lsp",
      "title": "Rust LSP Low Memory: How to Run Glancer Locally on 8GB RAM",
      "summary": "Rust LSP low memory is achievable: Rust Glancer runs on 8GB machines by freezing analysis at save and offloading to disk.",
      "date_published": "2026-08-23T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Rust",
        "Developer Tooling",
        "LSP",
        "Performance Engineering",
        "AI Coding Agents"
      ],
      "image": "https://umesh-malik.com/blog/rust-glancer-low-memory-lsp-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox",
      "url": "https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox",
      "title": "Self-Hosted AI Coding Agent: Sandboxed Prompt-to-Deploy for $25/mo",
      "summary": "Build a self-hosted AI coding agent with sandboxed execution. One prompt produces a repo, tests, CI, and deployed app — $25/mo, no cloud bills.",
      "date_published": "2026-08-23T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents",
        "Self-Hosting",
        "DevOps",
        "Sandboxing",
        "Developer Tooling",
        "Security",
        "Docker",
        "CI/CD"
      ],
      "image": "https://umesh-malik.com/blog/self-hosted-ai-coding-agent-sandbox-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/vercel-cli-dns-commands",
      "url": "https://umesh-malik.com/blog/vercel-cli-dns-commands",
      "title": "Vercel CLI DNS Commands: Manage Records Without the Dashboard",
      "summary": "Use Vercel CLI DNS commands to manage records, renew domains, and pause projects from terminal. Automate with --json output.",
      "date_published": "2026-08-23T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Vercel",
        "CLI",
        "DNS",
        "Developer Tooling",
        "DevOps",
        "Automation"
      ],
      "image": "https://umesh-malik.com/blog/vercel-cli-dns-commands-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-code-macos-printer-driver",
      "url": "https://umesh-malik.com/blog/claude-code-macos-printer-driver",
      "title": "Claude Code macOS printer driver: fixing the DPI bug HP missed",
      "summary": "A Claude Code macOS printer driver project fixed a printer HP never supported — by diffing raw output byte-by-byte until a silent DPI mismatch turned up.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents & DX",
        "Claude Code",
        "Reverse Engineering",
        "macOS",
        "CUPS",
        "Debugging"
      ],
      "image": "https://umesh-malik.com/blog/claude-code-macos-printer-driver-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/gemini-agent-hooks-fail-open",
      "url": "https://umesh-malik.com/blog/gemini-agent-hooks-fail-open",
      "title": "Gemini agent hooks fail open: how to block a tool call anyway",
      "summary": "Gemini agent hooks fail open on every error path, and never fire for MCP or function tools. The deny contract, the coverage gap, and what to gate instead.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Agent Harness",
        "Gemini",
        "MCP",
        "Sandboxing",
        "Tool Calling"
      ],
      "image": "https://umesh-malik.com/blog/gemini-agent-hooks-fail-open-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks",
      "url": "https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks",
      "title": "Rust GPU Offload Without unsafe: The 400x Mistake That Isn't Safety",
      "summary": "Rust GPU offload now works without unsafe code. Real benchmarks: 11% faster to 46% slower than CUDA on an H100, and a transfer bug that costs 400x more.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Rust",
        "GPU Programming",
        "LLVM",
        "Performance Engineering",
        "Systems Programming",
        "Compilers"
      ],
      "image": "https://umesh-malik.com/blog/rust-safe-gpu-offload-benchmarks-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/svg-to-mp4-in-the-browser",
      "url": "https://umesh-malik.com/blog/svg-to-mp4-in-the-browser",
      "title": "SVG to MP4 in the browser: a two-step workflow, no server",
      "summary": "SVG to MP4 in the browser needs no server: paste a URL and 30MB of ffmpeg.wasm renders every frame in your tab. The one catch that trips people up.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Web Engineering",
        "WebAssembly",
        "SVG",
        "Browser Tools",
        "Developer Tooling",
        "ffmpeg"
      ],
      "image": "https://umesh-malik.com/blog/svg-to-mp4-in-the-browser-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method",
      "url": "https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method",
      "title": "Traffic Anomaly or Outage? What a 30% Drop Actually Means",
      "summary": "A 15-30% traffic anomaly or outage? Cloudflare's eclipse analysis shows the fix: five-minute buckets against a three-week matched baseline.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Observability",
        "Cloudflare",
        "Networking",
        "Monitoring",
        "SRE",
        "Incident Response"
      ],
      "image": "https://umesh-malik.com/blog/traffic-anomaly-or-outage-baseline-method-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/use-postgres-for-everything",
      "url": "https://umesh-malik.com/blog/use-postgres-for-everything",
      "title": "Use Postgres for everything in production: 5 swaps, 1 cliff",
      "summary": "Use Postgres for everything and four of the five swaps hold. The queue is the one that death-spirals: 383,000 dead tuples and 300ms locks at 800 jobs/sec.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Web Engineering",
        "PostgreSQL",
        "Backend Architecture",
        "Databases",
        "Performance"
      ],
      "image": "https://umesh-malik.com/blog/use-postgres-for-everything-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims",
      "url": "https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims",
      "title": "How to verify AI-generated benchmark claims: 1.4x to 1.5x slower",
      "summary": "How to verify AI-generated benchmark claims: an LLM agent's regex engine beat Rust's regex crate by 1.4x on rebar, then lost 10x on a holdout it never saw.",
      "date_published": "2026-08-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents & DX",
        "Benchmarking",
        "Evals",
        "LLM Agents",
        "Developer Tooling"
      ],
      "image": "https://umesh-malik.com/blog/verify-ai-agent-benchmark-claims-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/turn-off-ai-features-permanently",
      "url": "https://umesh-malik.com/blog/turn-off-ai-features-permanently",
      "title": "Turn off AI features permanently: configure 1 policy, not 25 toggles",
      "summary": "Turn off AI features permanently with policy, not toggles: one Chrome default covers 25 gen-AI features, and Microsoft has deprecated the Copilot policy.",
      "date_published": "2026-08-18T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Privacy",
        "Chrome",
        "Windows",
        "Google Workspace",
        "Enterprise IT",
        "Data Governance"
      ],
      "image": "https://umesh-malik.com/blog/turn-off-ai-features-permanently-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-writing-policy-for-engineers",
      "url": "https://umesh-malik.com/blog/ai-writing-policy-for-engineers",
      "title": "AI writing policy for engineers: the template and 5 checks",
      "summary": "An AI writing policy for engineers works only if it governs accountability, not tool use. The five-line template, the mechanism behind it, five review checks.",
      "date_published": "2026-08-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Technical Writing",
        "Engineering Culture",
        "AI Policy",
        "Documentation",
        "Productivity",
        "LLM"
      ],
      "image": "https://umesh-malik.com/blog/ai-writing-policy-for-engineers-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js",
      "url": "https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js",
      "title": "Remove Cloudflare beacon.min.js: you must opt in to opt out",
      "summary": "Remove Cloudflare beacon.min.js for good: the disable toggle hides behind adding your site to Web Analytics first, and no-transform is the stronger lever.",
      "date_published": "2026-08-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Cloudflare",
        "Web Performance",
        "Content Security Policy",
        "Privacy",
        "Web Engineering",
        "Edge Computing"
      ],
      "image": "https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext",
      "url": "https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext",
      "title": "Fix EEVDF latency regressions with sched_ext: Meta's 28% p99 win",
      "summary": "Your p99 got worse after a kernel upgrade and nothing else changed? That is an EEVDF latency regression. Meta cut p99 28% with a two-pool sched_ext policy.",
      "date_published": "2026-08-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Linux",
        "Performance",
        "Kernel",
        "Tail Latency",
        "eBPF",
        "Infrastructure"
      ],
      "image": "https://umesh-malik.com/blog/fix-eevdf-latency-regression-sched-ext-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/how-dna-wires-a-brain",
      "url": "https://umesh-malik.com/blog/how-dna-wires-a-brain",
      "title": "How DNA wires a brain: 300M bits for 100 trillion connections",
      "summary": "How DNA wires a brain: a ~10B-bit genome must wire 100 trillion connections. The scheme that closes the gap in 300M bits, and why two simpler plans fail first.",
      "date_published": "2026-08-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Neuroscience",
        "Information Theory",
        "AI Engineering",
        "Algorithms",
        "Connectome",
        "Computational Biology"
      ],
      "image": "https://umesh-malik.com/blog/how-dna-wires-a-brain-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes",
      "url": "https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes",
      "title": "Zero downtime database migration: 5 flags and a 17x P90 gap",
      "summary": "A zero downtime database migration is five feature-flagged phases, not a cutover. P95 said 4x slower, P90 said 17x, and the comparison code took a region down.",
      "date_published": "2026-08-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Databases",
        "Infrastructure",
        "Migration",
        "Observability",
        "Platform Engineering"
      ],
      "image": "https://umesh-malik.com/blog/zero-downtime-database-migration-dual-writes-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/cloudflare-access-for-workers",
      "url": "https://umesh-malik.com/blog/cloudflare-access-for-workers",
      "title": "Configure Cloudflare Access for Workers: auth before your code runs",
      "summary": "Cloudflare Access for Workers checks requests before your code runs — no JWT validation. The three scopes, the local-dev config, and what it still misses.",
      "date_published": "2026-08-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Cloudflare",
        "Cloudflare Workers",
        "Zero Trust",
        "AI Security",
        "Authentication",
        "Edge Computing"
      ],
      "image": "https://umesh-malik.com/blog/cloudflare-access-for-workers-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math",
      "url": "https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math",
      "title": "Qwen3.8 27B VRAM: how to fit 262K context in 16 GiB, not 64",
      "summary": "Qwen3.8 27B VRAM math: 25.9 GiB of FP8 weights plus 16 GiB of KV cache at 262,144 tokens, not 64. The arithmetic, and where a 48 GB card breaks.",
      "date_published": "2026-08-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Inference",
        "vLLM",
        "Qwen",
        "KV Cache",
        "Long Context",
        "Linear Attention",
        "GPU"
      ],
      "image": "https://umesh-malik.com/blog/qwen3-8-27b-vram-kv-cache-math-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite",
      "url": "https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite",
      "title": "Cut agent tool call cost: GitHub's 20% fix was a prompt rewrite",
      "summary": "Agent tool call cost jumped after you gave it better tools? GitHub hit that on Copilot code review and won ~20% back with a prompt rewrite, not new tools.",
      "date_published": "2026-08-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents",
        "Agent Design",
        "Developer Tooling",
        "Prompt Engineering",
        "Code Review",
        "Evaluation"
      ],
      "image": "https://umesh-malik.com/blog/cut-agent-tool-call-cost-prompt-rewrite-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations",
      "url": "https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations",
      "title": "Kubernetes on bare metal: the 4 cloud integrations you must build",
      "summary": "Run Kubernetes on bare metal and four integrations become yours: node identity, LoadBalancer IPs, provisioning, storage. Oxide shipped three; one is blocked.",
      "date_published": "2026-08-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Kubernetes",
        "Infrastructure",
        "Bare Metal",
        "Storage",
        "Networking",
        "Platform Engineering"
      ],
      "image": "https://umesh-malik.com/blog/kubernetes-on-bare-metal-cloud-integrations-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/research-spike-as-running-code",
      "url": "https://umesh-malik.com/blog/research-spike-as-running-code",
      "title": "Build your research spike as running code: 8 blockers a doc missed",
      "summary": "A research spike should ship as running code, not a design doc. alchemy-utils surfaced 8 engine blockers a doc would miss, and priced the fix at 3-5 weeks.",
      "date_published": "2026-08-13T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Engineering Practice",
        "AI Coding Agents",
        "Prototyping",
        "Databases",
        "SQLAlchemy",
        "Developer Tooling"
      ],
      "image": "https://umesh-malik.com/blog/research-spike-as-running-code-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents",
      "url": "https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents",
      "title": "How to Verify AI Crawler IPs: 3 Lists Are Over a Year Stale",
      "summary": "Verify AI crawler IPs instead of trusting the User-Agent: the CIDR check for ClaudeBot and GPTBot, and the three published lists that are over a year stale.",
      "date_published": "2026-08-13T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Web Crawlers",
        "Bot Verification",
        "Agentic Web",
        "robots.txt"
      ],
      "image": "https://umesh-malik.com/blog/verify-ai-crawler-ips-not-user-agents-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agent-context-compaction-what-survives",
      "url": "https://umesh-malik.com/blog/agent-context-compaction-what-survives",
      "title": "Agent context compaction: keep what the 150K cutoff drops",
      "summary": "Agent context compaction drops every block before the summary at 150K tokens. What survives, what instructions silently replaces, and the usage field that lies.",
      "date_published": "2026-08-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Context Engineering",
        "Claude API",
        "Agent Architecture",
        "LLM Engineering"
      ],
      "image": "https://umesh-malik.com/blog/agent-context-compaction-what-survives-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee",
      "url": "https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee",
      "title": "Build on-device AI without breaking E2EE: the metrics leak first",
      "summary": "Local inference is the easy half of on-device AI without breaking E2EE. The hard half is telemetry: two TEEs, k-anonymity, DP noise, and a ledger you don't own.",
      "date_published": "2026-08-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Privacy Engineering",
        "On-Device ML",
        "Confidential Computing",
        "Differential Privacy"
      ],
      "image": "https://umesh-malik.com/blog/on-device-ai-without-breaking-e2ee-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms",
      "url": "https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms",
      "title": "Fix slow LLM inference in macOS VMs: 12.6 → 207 tok/s",
      "summary": "LLM inference in macOS VMs collapses to 12.63 tok/s because the guest reports GPU family 5 and llama.cpp drops its matrix kernels. The check, and its limits.",
      "date_published": "2026-08-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Inference",
        "Apple Silicon",
        "Virtualization",
        "llama.cpp",
        "Metal",
        "Sandboxing"
      ],
      "image": "https://umesh-malik.com/blog/fix-slow-llm-inference-macos-vms-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations",
      "url": "https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations",
      "title": "Learn Complex Topics With Claude Code: Build a Simulation, Not Notes",
      "summary": "Learn complex topics with Claude Code by building a small simulation of the mechanism: the 4-step loop, the fact-check gate LLMs skip, and how to ship it free.",
      "date_published": "2026-08-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "AI Coding Agents",
        "Learning",
        "Developer Productivity",
        "Simulations"
      ],
      "image": "https://umesh-malik.com/blog/learn-complex-topics-claude-code-simulations-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/run-muse-glimmer-30b-locally",
      "url": "https://umesh-malik.com/blog/run-muse-glimmer-30b-locally",
      "title": "Run Muse Glimmer 30B locally: 55GB shrinks to under 20GB",
      "summary": "How to run Muse Glimmer 30B locally: the K-Quant setup that fits a single 24GB GPU, the drafter model that triples decode speed, and where it breaks.",
      "date_published": "2026-08-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Local LLM",
        "Quantization",
        "AI Coding Agents",
        "Open Weights",
        "Speculative Decoding",
        "Meta AI"
      ],
      "image": "https://umesh-malik.com/blog/run-muse-glimmer-30b-locally-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5",
      "url": "https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5",
      "title": "How to Test an LLM's Knowledge Cutoff: Opus 5's May Claim Falls Short",
      "summary": "Here's how to test an LLM's knowledge cutoff with three reproducible probes — the method showing Opus 5 claims May 2026 but answers like January 2026.",
      "date_published": "2026-08-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "Model Evaluation",
        "Claude Opus 5",
        "GPT-5.6",
        "AI Research",
        "Benchmarks"
      ],
      "image": "https://umesh-malik.com/blog/testing-llm-knowledge-cutoffs-opus-5-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/sandbox-ai-agent-internet-access",
      "url": "https://umesh-malik.com/blog/sandbox-ai-agent-internet-access",
      "title": "How to sandbox an AI agent: 10 of 122 eval runs went rogue",
      "summary": "AISI logged 19 unsanctioned actions across 122 cyber-eval runs. How to sandbox an AI agent at the network layer — the control that blocks, not just detects.",
      "date_published": "2026-08-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "AI Agents",
        "Sandboxing",
        "Supply Chain Security",
        "Model Evaluation"
      ],
      "image": "https://umesh-malik.com/blog/sandbox-ai-agent-internet-access-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/vllm-throughput-tuning-flags",
      "url": "https://umesh-malik.com/blog/vllm-throughput-tuning-flags",
      "title": "vLLM throughput tuning: configure these four flags, not a bigger GPU",
      "summary": "vLLM throughput tuning starts with KV cache blocks, not a bigger GPU. The four flags that decide your tokens/sec, and the one that quietly backfires.",
      "date_published": "2026-08-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "LLM Inference",
        "vLLM",
        "GPU",
        "Performance"
      ],
      "image": "https://umesh-malik.com/blog/vllm-throughput-tuning-flags-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue",
      "url": "https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue",
      "title": "Configuring AI Agent Permissions: Humans Miss 1 in 3 Threats",
      "summary": "409,000 approve/deny decisions show humans miss 1 in 3 agent threats, and 52.5% of npm-shaped exfiltration. The AI agent permissions config that works instead.",
      "date_published": "2026-08-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "AI Coding Agents",
        "Claude Code",
        "Permissions",
        "Sandboxing",
        "Developer Tooling"
      ],
      "image": "https://umesh-malik.com/blog/ai-agent-permissions-approval-fatigue-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-gateway-for-workers-ai",
      "url": "https://umesh-malik.com/blog/ai-gateway-for-workers-ai",
      "title": "Set up AI Gateway for Workers AI: one argument, every call logged",
      "summary": "AI Gateway for Workers AI is now one argument on env.AI.run. What it logs instantly, why caching stays off until you ask, and the 60-second TTL floor.",
      "date_published": "2026-08-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Engineering",
        "Cloudflare",
        "Workers AI",
        "Observability",
        "Edge Computing",
        "LLM Infrastructure"
      ],
      "image": "https://umesh-malik.com/blog/ai-gateway-for-workers-ai-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/datasette-sql-injection-patch",
      "url": "https://umesh-malik.com/blog/datasette-sql-injection-patch",
      "title": "Fix the Datasette SQL Injection: Why execute-sql Won't Save You",
      "summary": "The Datasette SQL injection patched in 1.0a38 and 0.65.3 leaks private tables via unescaped filter columns. The check, upgrade, and why execute-sql is no fix.",
      "date_published": "2026-08-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Web Engineering",
        "Security",
        "SQL Injection",
        "SQLite",
        "Datasette",
        "Patch Management"
      ],
      "image": "https://umesh-malik.com/blog/datasette-sql-injection-patch-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/make-your-site-agent-readable",
      "url": "https://umesh-malik.com/blog/make-your-site-agent-readable",
      "title": "How to Make Your Site Agent-Readable: 4 Layers, One Worker",
      "summary": "Make your site agent-readable in four layers — readable, discoverable, callable, payable. Three are build-time files; only /mcp needs a Worker.",
      "date_published": "2026-08-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Agentic Web",
        "Web Engineering",
        "MCP",
        "Cloudflare",
        "SEO",
        "llms.txt"
      ],
      "image": "https://umesh-malik.com/blog/make-your-site-agent-readable-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/writing-agent-tool-instructions",
      "url": "https://umesh-malik.com/blog/writing-agent-tool-instructions",
      "title": "Fix your agent tool instructions: GitHub's 20% review-cost cut",
      "summary": "Agent tool instructions decide what your agent costs. GitHub kept the same grep/glob/view toolset, rewrote the guidance, and cut review cost by ~20%.",
      "date_published": "2026-08-07T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents",
        "Tool Design",
        "MCP",
        "Developer Tooling",
        "GitHub Copilot"
      ],
      "image": "https://umesh-malik.com/blog/writing-agent-tool-instructions-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers",
      "url": "https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers",
      "title": "Ads for AI Agents: TIME Serves Crawlers a Different Site",
      "summary": "Ads for AI agents are live. TIME serves crawlers a 42 KB markdown site with sponsored blocks; humans and Googlebot get 1.2 MB of HTML. I measured all of it.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Agentic Web",
        "Web Engineering",
        "GEO",
        "Content Provenance",
        "RAG"
      ],
      "image": "https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise",
      "url": "https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise",
      "title": "Configure Dependabot grouped updates: one PR a month, CVEs instant",
      "summary": "Dependabot grouped updates fold a month of version bumps into one pull request while CVE fixes still land same-day. The cooldown key most configs miss.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "dependabot",
        "github",
        "supply-chain-security",
        "dependency-management",
        "ci-cd",
        "developer-experience"
      ],
      "image": "https://umesh-malik.com/blog/dependabot-grouped-updates-cut-pr-noise-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness",
      "url": "https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness",
      "title": "Run agent tool calls in parallel: 10 turns become 2 DAG levels",
      "summary": "Run agent tool calls in parallel by swapping the loop for a DAG planner: ten round trips become two levels, plus the cap, budget and critic on top.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "agent-architecture",
        "parallelism",
        "agent-harness",
        "observability",
        "python",
        "llm-engineering"
      ],
      "image": "https://umesh-malik.com/blog/parallel-agent-tool-calls-dag-harness-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/reinforcement-fine-tuning-small-models-retrieval",
      "url": "https://umesh-malik.com/blog/reinforcement-fine-tuning-small-models-retrieval",
      "title": "Reinforcement Fine-Tuning: When a 4B Model Beats GPT-5.6",
      "summary": "Reinforcement fine-tuning let a 4B open model match GPT-5.6 Sol on retrieval at 100x lower cost. How RFT works, and when it beats prompting a frontier LLM.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "Fine-Tuning",
        "RAG",
        "Reinforcement Learning",
        "Model Evaluation",
        "Cost Optimization"
      ],
      "image": "https://umesh-malik.com/blog/reinforcement-fine-tuning-small-models-retrieval-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/run-cicd-cloudflare-workflows",
      "url": "https://umesh-malik.com/blog/run-cicd-cloudflare-workflows",
      "title": "Run CI/CD on Cloudflare Workflows: deploy in 18 lines, 33 free runs",
      "summary": "Run CI/CD on Cloudflare Workflows and a GitHub Actions YAML becomes 18 lines of TypeScript. Which meter bills first, and what private beta still blocks.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "cloudflare",
        "ci-cd",
        "workflows",
        "developer-experience",
        "typescript",
        "platform-engineering"
      ],
      "image": "https://umesh-malik.com/blog/run-cicd-cloudflare-workflows-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rust-llm-policy-ai-generated-code",
      "url": "https://umesh-malik.com/blog/rust-llm-policy-ai-generated-code",
      "title": "Rust LLM Policy: Use AI to Review, Not to Create",
      "summary": "The Rust LLM policy bans AI-created code and prose but allows AI review, analysis, and bug-finding. Here's the exact rule, why it works, and how to copy it.",
      "date_published": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Open Source",
        "AI Coding Agents",
        "Rust",
        "Code Review",
        "Engineering Culture",
        "Developer Tooling"
      ],
      "image": "https://umesh-malik.com/blog/rust-llm-policy-ai-generated-code-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agent-harness-design-arc-agi-3",
      "url": "https://umesh-malik.com/blog/agent-harness-design-arc-agi-3",
      "title": "Agent Harness Design: Why an ARC-AGI-3 Score Tripled",
      "summary": "Agent harness design decided a benchmark: OpenAI's ARC-AGI-3 score went 13.3% → 38.3% with zero model changes. What that means for your agent loop.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Agent Design",
        "Benchmarks",
        "LLM Engineering",
        "Context Engineering",
        "OpenAI"
      ],
      "image": "https://umesh-malik.com/blog/agent-harness-design-arc-agi-3-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/insider-threat-offboarding-controls",
      "url": "https://umesh-malik.com/blog/insider-threat-offboarding-controls",
      "title": "Insider Threat Offboarding Controls: The Apple v. OpenAI Lesson",
      "summary": "Insider threat offboarding controls, read through Apple v. OpenAI: retained devices, live access, and why weak offboarding also weakens your legal claim.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Insider Threat",
        "Offboarding",
        "Trade Secrets",
        "Access Control",
        "Compliance"
      ],
      "image": "https://umesh-malik.com/blog/insider-threat-offboarding-controls-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/llm-abuse-detection-openai-scam-network",
      "url": "https://umesh-malik.com/blog/llm-abuse-detection-openai-scam-network",
      "title": "LLM Abuse Detection: What OpenAI's Scam Ban Reveals",
      "summary": "LLM abuse detection failed at the message level and worked at the account level. OpenAI's Cambodia scam ban shows which signal actually catches misuse.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Trust and Safety",
        "Threat Intelligence",
        "LLM Engineering",
        "Abuse Detection",
        "OpenAI"
      ],
      "image": "https://umesh-malik.com/blog/llm-abuse-detection-openai-scam-network-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/mcp-write-controls-cloudflare-writeguard",
      "url": "https://umesh-malik.com/blog/mcp-write-controls-cloudflare-writeguard",
      "title": "MCP Write Controls: Lessons from Cloudflare WriteGuard",
      "summary": "MCP write controls decide what your agents can break. Cloudflare's WriteGuard shows the pattern: per-tool risk tiers, agent attribution, central audit.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "MCP",
        "AI Agents",
        "AI Security",
        "Cloudflare",
        "Agent Governance",
        "Audit Logging"
      ],
      "image": "https://umesh-malik.com/blog/mcp-write-controls-cloudflare-writeguard-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/secure-mcp-write-tools-writeguard",
      "url": "https://umesh-malik.com/blog/secure-mcp-write-tools-writeguard",
      "title": "How to Secure MCP Write Tools: Cloudflare's WriteGuard Lesson",
      "summary": "How to secure MCP write tools: the spec puts confirmation on the client — the one layer you don't control. Cloudflare's WriteGuard moves the gate server-side.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "MCP",
        "AI Security",
        "AI Agents",
        "Access Control",
        "Cloudflare",
        "Observability"
      ],
      "image": "https://umesh-malik.com/blog/secure-mcp-write-tools-writeguard-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/cloudflare-wallets-x402-agent-payments",
      "url": "https://umesh-malik.com/blog/cloudflare-wallets-x402-agent-payments",
      "title": "Cloudflare Wallets and x402: How AI Agents Pay for APIs",
      "summary": "Cloudflare Wallets and x402 explained: how AI agents get a spending identity, how HTTP 402 payments work, and what breaks when your agent holds a budget.",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Cloudflare",
        "x402",
        "Agentic Web",
        "API Design",
        "Payments"
      ],
      "image": "https://umesh-malik.com/blog/cloudflare-wallets-x402-agent-payments-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/fake-cve-reports-ai-slop-sqlite",
      "url": "https://umesh-malik.com/blog/fake-cve-reports-ai-slop-sqlite",
      "title": "Fake CVE Reports: 54 of 55 SQLite Advisories Were AI Slop",
      "summary": "Fake CVE reports are now cheaper to write than to disprove. JFrog found 54 of 55 SQLite advisories fabricated by an LLM. How to spot them before you patch.",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Security",
        "Vulnerability Management",
        "Open Source",
        "SQLite",
        "LLM Failure Modes",
        "Supply Chain"
      ],
      "image": "https://umesh-malik.com/blog/fake-cve-reports-ai-slop-sqlite-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/llm-eval-framework-smevals",
      "url": "https://umesh-malik.com/blog/llm-eval-framework-smevals",
      "title": "LLM Eval Framework: Grade Prompts, Models and Harnesses",
      "summary": "An LLM eval framework turns vibes into scores. How smevals structures tasks, configs, runners and graders — and how to ship your first eval today.",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "Evals",
        "Prompt Engineering",
        "Developer Tooling",
        "AI Engineering",
        "Testing"
      ],
      "image": "https://umesh-malik.com/blog/llm-eval-framework-smevals-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/production-grade-ai-agents-vibe-to-live-gap",
      "url": "https://umesh-malik.com/blog/production-grade-ai-agents-vibe-to-live-gap",
      "title": "Production-Grade AI Agents: The Vibe-to-Live Gap",
      "summary": "Production-grade AI agents need more than a working demo. 353,000 signed up to learn agents; 6,000 shipped a capstone. Here's exactly what closes the gap.",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "AI Engineering",
        "Evals",
        "Observability",
        "Developer Experience",
        "Production"
      ],
      "image": "https://umesh-malik.com/blog/production-grade-ai-agents-vibe-to-live-gap-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm",
      "url": "https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm",
      "title": "Run 70B LLM on 4GB GPU: AirLLM's Real Tradeoff",
      "summary": "Run 70B LLM on 4GB GPU hardware with AirLLM's layer-by-layer inference. The VRAM math is real — you just pay for it in disk bandwidth. The honest tradeoff.",
      "date_published": "2026-08-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "LLM Engineering",
        "LLM Inference",
        "Local LLM",
        "Quantization",
        "Open Weights",
        "Performance"
      ],
      "image": "https://umesh-malik.com/blog/run-70b-llm-on-4gb-gpu-airllm-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agent-to-human-delegation",
      "url": "https://umesh-malik.com/blog/agent-to-human-delegation",
      "title": "Agent-to-Human Delegation: Why Your AI Shouldn't DM Coworkers",
      "summary": "Agent-to-human delegation is the pattern nobody designed for: your AI messaging a coworker. Why it lands badly, and the handoff rules that fix it.",
      "date_published": "2026-08-03T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Agent Design",
        "Human in the Loop",
        "OpenAI",
        "Developer Experience",
        "Engineering Culture"
      ],
      "image": "https://umesh-malik.com/blog/agent-to-human-delegation-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/explorative-modeling-train-on-best-of-k",
      "url": "https://umesh-malik.com/blog/explorative-modeling-train-on-best-of-k",
      "title": "Explorative Modeling: Train on the Best of K Guesses",
      "summary": "Explorative modeling factors the training loop instead of generation: sample K guesses, train only on the best. 4.1x FLOP efficiency, 1.43 FID on ImageNet.",
      "date_published": "2026-08-02T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Generative Models",
        "Diffusion",
        "Training",
        "Scaling Laws",
        "Research",
        "Computer Vision"
      ],
      "image": "https://umesh-malik.com/blog/explorative-modeling-train-on-best-of-k-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/deepseek-v4-flash-0731-benchmarks",
      "url": "https://umesh-malik.com/blog/deepseek-v4-flash-0731-benchmarks",
      "title": "DeepSeek V4 Flash 0731 Benchmarks: 13B Active Beats 1.6T",
      "summary": "DeepSeek V4 Flash 0731 benchmarks: same 284B/13B architecture as the preview, re-post-trained only — and it beats the 1.6T V4-Pro Preview on nine agent tests.",
      "date_published": "2026-08-01T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "DeepSeek",
        "LLMs",
        "Open Weights",
        "AI Agents",
        "Benchmarks",
        "Post-Training"
      ],
      "image": "https://umesh-malik.com/blog/deepseek-v4-flash-0731-benchmarks-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/increase-seo-traffic-ai-era-techniques",
      "url": "https://umesh-malik.com/blog/increase-seo-traffic-ai-era-techniques",
      "title": "How to Increase SEO Traffic in the AI Era: 10 Techniques (2026)",
      "summary": "How to increase SEO traffic in the AI era: 10 genuine, white-hat techniques anyone can use to earn clicks and citations from ChatGPT, Perplexity and AI Mode.",
      "date_published": "2026-07-29T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "SEO",
        "GEO",
        "AI Search",
        "Content Strategy",
        "Web Performance",
        "llms.txt"
      ],
      "image": "https://umesh-malik.com/blog/increase-seo-traffic-ai-era-techniques-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/seo-in-the-ai-era-geo-playbook",
      "url": "https://umesh-malik.com/blog/seo-in-the-ai-era-geo-playbook",
      "title": "SEO in the AI Era: The 2026 GEO Playbook for Winning AI Search Traffic",
      "summary": "SEO in the AI era: what actually changed, why clicks fell 60%, and the GEO playbook to earn traffic from ChatGPT, Perplexity and Google AI Mode in 2026.",
      "date_published": "2026-07-27T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "SEO",
        "GEO",
        "AI Search",
        "Content Strategy",
        "Web Performance",
        "llms.txt"
      ],
      "image": "https://umesh-malik.com/blog/seo-in-the-ai-era-geo-playbook-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-opus-5-guide",
      "url": "https://umesh-malik.com/blog/claude-opus-5-guide",
      "title": "Claude Opus 5 Migration: The Two API Changes That Break Your Code",
      "summary": "Two API changes break a Claude Opus 5 migration, and the effort parameter needs re-sweeping, not reusing. The fixes, the real cost math, and the benchmarks.",
      "date_published": "2026-07-24T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Opus 5",
        "Anthropic",
        "LLM",
        "AI Coding Agents",
        "Claude Code",
        "LLM Cost Optimization",
        "Model Comparison"
      ],
      "image": "https://umesh-malik.com/blog/claude-opus-5-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rag-chatbot-nextjs-guide",
      "url": "https://umesh-malik.com/blog/rag-chatbot-nextjs-guide",
      "title": "Build a RAG Chatbot in Next.js: Retrieval, Streaming & Citations (2026)",
      "summary": "Build a RAG chatbot in Next.js with the AI SDK: embed the query, search pgvector, stream a grounded answer with citations, and stop hallucinations.",
      "date_published": "2026-07-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "RAG",
        "Next.js",
        "Vector Databases",
        "LLM Engineering",
        "AI Engineering",
        "Vercel AI SDK"
      ],
      "image": "https://umesh-malik.com/blog/rag-chatbot-nextjs-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/react-server-components-guide",
      "url": "https://umesh-malik.com/blog/react-server-components-guide",
      "title": "React Server Components in 2026: The Mental Model, the use client Boundary & When Not to Use Them",
      "summary": "React Server Components in 2026: the mental model that finally clicks, the use client boundary rules, and when NOT to use them — with the Web Vitals payoff.",
      "date_published": "2026-07-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "React",
        "React Server Components",
        "Next.js",
        "Web Performance",
        "Core Web Vitals",
        "Web Engineering"
      ],
      "image": "https://umesh-malik.com/blog/react-server-components-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/vercel-ai-sdk-production-guide",
      "url": "https://umesh-malik.com/blog/vercel-ai-sdk-production-guide",
      "title": "Vercel AI SDK in Production: Streaming, Tool-Calling & the Gotchas Nobody Tells You (2026)",
      "summary": "Vercel AI SDK in production: streaming, tool-calling, aborting generations, error retry UX, rate limiting, and cost control — the layer every tutorial skips.",
      "date_published": "2026-07-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Vercel AI SDK",
        "Next.js",
        "React",
        "Streaming",
        "LLM Engineering",
        "AI Engineering"
      ],
      "image": "https://umesh-malik.com/blog/vercel-ai-sdk-production-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/kimi-k3-vs-claude-fable-5",
      "url": "https://umesh-malik.com/blog/kimi-k3-vs-claude-fable-5",
      "title": "Kimi K3 vs Claude Fable 5: When the Open Model Is Worth the Switch",
      "summary": "Kimi K3 beats Claude Fable 5 on cost by a wide margin and loses on agentic tasks. The benchmarks that decide it, and how to run K3 where it actually wins.",
      "date_published": "2026-07-19T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Kimi K3",
        "Claude",
        "Moonshot AI",
        "LLMs",
        "Open Source",
        "Benchmarks",
        "API"
      ],
      "image": "https://umesh-malik.com/blog/kimi-k3-vs-fable-5-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript",
      "url": "https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript",
      "title": "Streaming HTML Out of Order Without JavaScript (2026)",
      "summary": "Streaming HTML out of order without JavaScript: how Declarative Partial Updates and Declarative Shadow DOM reorder content natively in Chrome 148.",
      "date_published": "2026-07-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "HTML",
        "Web Platform",
        "Performance",
        "Streaming",
        "Web Engineering",
        "Browsers"
      ],
      "image": "https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/chatgpt-apps-sdk-super-app-guide",
      "url": "https://umesh-malik.com/blog/chatgpt-apps-sdk-super-app-guide",
      "title": "ChatGPT Apps SDK and the Super App Reform: How Apps in ChatGPT Work (2026)",
      "summary": "The ChatGPT Apps SDK explained: how apps in ChatGPT work, why it's built on MCP, who the launch partners are, and how developers build and submit apps.",
      "date_published": "2026-07-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "Apps SDK",
        "MCP",
        "AI Agents",
        "Developer Tools"
      ],
      "image": "https://umesh-malik.com/blog/chatgpt-apps-sdk-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/gpt-5-6-sol-vs-terra-vs-luna",
      "url": "https://umesh-malik.com/blog/gpt-5-6-sol-vs-terra-vs-luna",
      "title": "GPT-5.6 Sol vs Terra vs Luna: The Routing Strategy That Cuts Cost",
      "summary": "GPT-5.6 Sol vs Terra vs Luna compared on price, coding, latency, and cost per task — plus a routing strategy that cuts your bill without wrecking quality.",
      "date_published": "2026-07-11T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "GPT-5.6",
        "API",
        "AI Agents",
        "LLMs",
        "LLM cost optimization"
      ],
      "image": "https://umesh-malik.com/blog/gpt-5-6-sol-terra-luna-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/openai-gpt-5-6-sol-terra-luna-guide",
      "url": "https://umesh-malik.com/blog/openai-gpt-5-6-sol-terra-luna-guide",
      "title": "GPT-5.6 API: Pricing, Thinking Modes, and the Shared Context Trap",
      "summary": "GPT-5.6 API pricing ($1-$30/1M), the Ultra and Max thinking modes, and a 1.05M context window that is shared — with the fine print that breaks agent loops.",
      "date_published": "2026-07-11T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "GPT-5.6",
        "API",
        "AI Agents",
        "LLMs",
        "Machine Learning"
      ],
      "image": "https://umesh-malik.com/blog/gpt-5-6-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/build-enterprise-ai-agents-free",
      "url": "https://umesh-malik.com/blog/build-enterprise-ai-agents-free",
      "title": "How to Build Enterprise-Grade AI Agents for Free (MaxKB, 2026)",
      "summary": "How to build enterprise-grade AI agents for free in 2026: a hands-on MaxKB + local LLM guide to RAG precision, security, and $0 API cost.",
      "date_published": "2026-07-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "MaxKB",
        "Open Source",
        "RAG",
        "Self-Hosting",
        "GenAI 2026"
      ],
      "image": "https://umesh-malik.com/blog/build-enterprise-ai-agents-free-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/http-query-method-rfc-10008-guide",
      "url": "https://umesh-malik.com/blog/http-query-method-rfc-10008-guide",
      "title": "HTTP QUERY Method Explained (RFC 10008): GET vs POST",
      "summary": "RFC 10008's HTTP QUERY method is safe, idempotent, and cacheable like GET but carries a body like POST. What it fixes and where it works today.",
      "date_published": "2026-07-03T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "HTTP QUERY Method",
        "RFC 10008",
        "REST API Design",
        "HTTP",
        "API Caching",
        "GraphQL",
        "Web Standards"
      ],
      "image": "https://umesh-malik.com/blog/http-query-method-rfc-10008-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-fable-5-guide",
      "url": "https://umesh-malik.com/blog/claude-fable-5-guide",
      "title": "Claude Fable 5: Capabilities, Cost & When to Use It (2026)",
      "summary": "Claude Fable 5 is Anthropic's most capable model yet. The honest deep-dive: capabilities, the $10/$50 cost math, API behavior, and when to use it.",
      "date_published": "2026-07-02T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Fable 5",
        "Anthropic",
        "LLM",
        "AI Coding Agents",
        "Agentic AI",
        "LLM Cost Optimization",
        "Claude API"
      ],
      "image": "https://umesh-malik.com/blog/claude-fable-5-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-sonnet-5-guide",
      "url": "https://umesh-malik.com/blog/claude-sonnet-5-guide",
      "title": "Claude Sonnet 5 for Coding: The Tokenizer Change That Moves Your Bill",
      "summary": "Claude Sonnet 5 for coding lands near Opus level at Sonnet prices — until the tokenizer change moves your bill. The real cost math, and when it beats Opus 4.8.",
      "date_published": "2026-07-01T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Sonnet 5",
        "Anthropic",
        "LLM",
        "AI Coding Agents",
        "Claude Code",
        "LLM Cost Optimization",
        "Model Comparison"
      ],
      "image": "https://umesh-malik.com/blog/claude-sonnet-5-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-code-auto-mode-production-field-report",
      "url": "https://umesh-malik.com/blog/claude-code-auto-mode-production-field-report",
      "title": "Is Claude Code Auto Mode Reliable in Production? A Field Report",
      "summary": "I ran Claude Code auto mode in production for a week — where it's reliable, where it broke, real token costs from my usage logs, and my honest verdict.",
      "date_published": "2026-06-25T00:00:00.000Z",
      "date_modified": "2026-06-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "AI Coding Agents",
        "Auto Mode",
        "Developer Productivity",
        "Production Engineering",
        "AI Pair Programming",
        "DevEx"
      ],
      "image": "https://umesh-malik.com/blog/claude-code-auto-mode-production-field-report-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-code-vs-cursor-production-work-2026",
      "url": "https://umesh-malik.com/blog/claude-code-vs-cursor-production-work-2026",
      "title": "Claude Code vs Cursor for Production: A Shipping Engineer's Field Report (2026)",
      "summary": "Claude Code vs Cursor for production, field-tested on real shipping tasks: a working engineer's decision table, failure modes, pricing, and which to use when.",
      "date_published": "2026-06-25T00:00:00.000Z",
      "date_modified": "2026-06-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "Cursor",
        "GitHub Copilot",
        "AI Coding Agents",
        "Developer Tooling",
        "AI Pair Programming",
        "DevEx"
      ],
      "image": "https://umesh-malik.com/blog/claude-code-vs-cursor-production-work-2026-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/use-claude-code-codex-for-free",
      "url": "https://umesh-malik.com/blog/use-claude-code-codex-for-free",
      "title": "Can You Use Claude Code and Codex for Free? Honest 2026 Guide",
      "summary": "The honest answer to using Claude Code and Codex for free in 2026: what's truly $0, what isn't, the best free AI coding CLIs, and how to cut your bill.",
      "date_published": "2026-06-23T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "Codex",
        "Gemini CLI",
        "GitHub Copilot",
        "AI Coding Agents",
        "Developer Tools"
      ],
      "image": "https://umesh-malik.com/blog/use-claude-code-codex-for-free-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained",
      "url": "https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained",
      "title": "FastAPI Finally Has Native SPA Support: app.frontend() Explained",
      "summary": "FastAPI 0.138.0 ships app.frontend() — a native way to serve React, Vue, and Svelte SPA builds. How it works, real use cases, and what it still can't do.",
      "date_published": "2026-06-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "FastAPI",
        "Python",
        "SPA",
        "Backend",
        "Web Engineering",
        "Starlette"
      ],
      "image": "https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready",
      "url": "https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready",
      "title": "Agentic Browsing in PageSpeed Insights: How to Make Your Website AI-Ready (2026)",
      "summary": "Agentic browsing in PageSpeed Insights grades your site for AI agents, not just humans. What the category checks, why Google added it, how to pass it.",
      "date_published": "2026-06-19T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Agentic Browsing",
        "PageSpeed Insights",
        "AI Agents",
        "GEO",
        "Web Performance",
        "llms.txt"
      ],
      "image": "https://umesh-malik.com/blog/agentic-browsing-pagespeed-ai-ready-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/autonomous-ai-agents-production-gap-2026",
      "url": "https://umesh-malik.com/blog/autonomous-ai-agents-production-gap-2026",
      "title": "Why 77% of Autonomous AI Agents Never Reach Production (2026)",
      "summary": "Only 23% of autonomous AI agents reach production in 2026. The demo-to-production gap, why agents fail, and the playbook the winners actually use.",
      "date_published": "2026-06-14T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Agents",
        "Agentic AI",
        "LLM Engineering",
        "AI in Production",
        "GenAI 2026"
      ],
      "image": "https://umesh-malik.com/blog/autonomous-ai-agents-production-gap-2026-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-fable-5-streaming-microservice-one-day",
      "url": "https://umesh-malik.com/blog/claude-fable-5-streaming-microservice-one-day",
      "title": "How I Built a Full Audio/Video Streaming Microservice in One Day with Claude Fable 5 Auto Mode",
      "summary": "Claude Fable 5 in auto mode built my entire HLS streaming microservice in under a day — AWS infra, security, backend, frontend, CI/CD, migrations, runbooks.",
      "date_published": "2026-06-13T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Fable 5",
        "Claude Code",
        "AI Coding Agents",
        "AWS",
        "Video Streaming",
        "HLS",
        "Microservices",
        "Terraform",
        "CI/CD"
      ],
      "image": "https://umesh-malik.com/blog/claude-fable-5-streaming-microservice-one-day-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/build-rag-pipeline-from-scratch",
      "url": "https://umesh-malik.com/blog/build-rag-pipeline-from-scratch",
      "title": "Build a RAG Pipeline From Scratch: Production Patterns That Matter",
      "summary": "Build a RAG pipeline from scratch: chunking, embeddings, retrieval, reranking, grounded generation, and the production patterns that decide whether it works.",
      "date_published": "2026-06-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "RAG",
        "LLM Engineering",
        "Vector Databases",
        "Embeddings",
        "GenAI",
        "AI Architecture"
      ],
      "image": "https://umesh-malik.com/blog/build-rag-pipeline-from-scratch-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/cursor-vs-claude-code-vs-copilot",
      "url": "https://umesh-malik.com/blog/cursor-vs-claude-code-vs-copilot",
      "title": "Cursor vs Claude Code vs Copilot (2026): Which Tool for What",
      "summary": "Cursor vs Claude Code vs Copilot in 2026 — how they actually differ in model, workflow, and autonomy, and which to use for what (I use all three).",
      "date_published": "2026-06-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI Coding Agents",
        "Claude Code",
        "Cursor",
        "GitHub Copilot",
        "Developer Tooling",
        "AI Pair Programming"
      ],
      "image": "https://umesh-malik.com/blog/cursor-vs-claude-code-vs-copilot-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/deploy-mcp-server-cloudflare-workers",
      "url": "https://umesh-malik.com/blog/deploy-mcp-server-cloudflare-workers",
      "title": "Deploy an MCP Server on Cloudflare Workers (Free, at the Edge)",
      "summary": "Deploy an MCP server on Cloudflare Workers: wrangler.toml, the run_worker_first model, routing /mcp, local testing, and going live on the free tier.",
      "date_published": "2026-06-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "MCP",
        "Model Context Protocol",
        "Cloudflare Workers",
        "Wrangler",
        "Edge Computing",
        "AI Tooling"
      ],
      "image": "https://umesh-malik.com/blog/deploy-mcp-server-cloudflare-workers-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/how-to-build-mcp-server",
      "url": "https://umesh-malik.com/blog/how-to-build-mcp-server",
      "title": "How to Build an MCP Server: A Step-by-Step Guide (2026)",
      "summary": "How to build an MCP server, step by step: JSON-RPC 2.0, the Streamable HTTP transport, typed tools, and agent discovery — from a real one I shipped.",
      "date_published": "2026-06-08T00:00:00.000Z",
      "date_modified": "2026-07-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "MCP",
        "Model Context Protocol",
        "AI Agents",
        "Cloudflare Workers",
        "LLM Engineering",
        "AI Tooling"
      ],
      "image": "https://umesh-malik.com/blog/how-to-build-mcp-server-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/how-to-write-claude-md",
      "url": "https://umesh-malik.com/blog/how-to-write-claude-md",
      "title": "How to Write a CLAUDE.md That Actually Helps",
      "summary": "How to write a CLAUDE.md that actually helps Claude Code: what to include, what to leave out, a real structure, and how to stop it from rotting.",
      "date_published": "2026-06-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "CLAUDE.md",
        "AI Coding Agents",
        "Developer Tooling",
        "Anthropic"
      ],
      "image": "https://umesh-malik.com/blog/how-to-write-claude-md-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-swap-multi-account-switcher-guide",
      "url": "https://umesh-malik.com/blog/claude-swap-multi-account-switcher-guide",
      "title": "How to Switch Between Multiple Claude Code Accounts Without Re-Logging In (claude-swap Guide)",
      "summary": "claude-swap is an open-source CLI that switches Claude Code accounts in seconds — no browser re-login. How it works, how to use it, and what it misses.",
      "date_published": "2026-05-30T00:00:00.000Z",
      "date_modified": "2026-07-27T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Claude Code",
        "Claude",
        "Developer Tools",
        "CLI",
        "OAuth",
        "Productivity",
        "Open Source",
        "Python"
      ],
      "image": "https://umesh-malik.com/blog/claude-swap-multi-account-switcher-guide-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/claude-code-leak-march-2026",
      "url": "https://umesh-malik.com/blog/claude-code-leak-march-2026",
      "title": "Claude Code Leak 2026: What Escaped and What Didn't",
      "summary": "The Claude Code leak of March 31, 2026, explained: what the source-map exposure revealed, Anthropic's DMCA sweep, and the fallout.",
      "date_published": "2026-04-02T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Anthropic",
        "Claude Code",
        "Security",
        "Open Source",
        "DMCA",
        "Supply Chain",
        "AI Ethics"
      ],
      "image": "https://umesh-malik.com/blog/claude-code-leak-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/axios-compromised-npm-cross-platform-rat",
      "url": "https://umesh-malik.com/blog/axios-compromised-npm-cross-platform-rat",
      "title": "Axios Compromised on npm: 1.14.1, 0.30.4 Drop a Cross-Platform RAT",
      "summary": "Axios compromised on npm on March 31, 2026: versions 1.14.1 and 0.30.4 dropped a cross-platform RAT. Verified timeline, impact, IOCs, and recovery.",
      "date_published": "2026-03-31T00:00:00.000Z",
      "date_modified": "2026-03-31T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Axios",
        "npm",
        "Security",
        "Supply Chain Security",
        "DevSecOps",
        "JavaScript",
        "Node.js",
        "Open Source Security",
        "Malware"
      ],
      "image": "https://umesh-malik.com/blog/axios-compromised-npm-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/nvidia-openclaw-strategy-ai-agent-plan",
      "url": "https://umesh-malik.com/blog/nvidia-openclaw-strategy-ai-agent-plan",
      "title": "Nvidia OpenClaw Explained: Your AI Agent Strategy (GTC 2026)",
      "summary": "At GTC 2026, Jensen Huang said every company needs a Nvidia OpenClaw strategy. Here is what it means and what U.S. teams should do next.",
      "date_published": "2026-03-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "NVIDIA",
        "OpenClaw",
        "NemoClaw",
        "AI Agents",
        "Enterprise AI",
        "GTC",
        "Agentic AI"
      ],
      "image": "https://umesh-malik.com/blog/nvidia-openclaw-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/chatgpt-adult-mode-delay-guide",
      "url": "https://umesh-malik.com/blog/chatgpt-adult-mode-delay-guide",
      "title": "ChatGPT Adult Mode: Is It Live Yet? (Status Explained)",
      "summary": "ChatGPT adult mode is still delayed — OpenAI's official status, what the feature would allow, why it was pushed back, and answers for parents.",
      "date_published": "2026-03-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "Online Safety",
        "Privacy",
        "Parents",
        "Consumer Tech",
        "AI Policy"
      ],
      "image": "https://umesh-malik.com/blog/chatgpt-adult-mode-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/chatgpt-interactive-math-science-visuals-guide",
      "url": "https://umesh-malik.com/blog/chatgpt-interactive-math-science-visuals-guide",
      "title": "ChatGPT Interactive Math and Science Visuals: What to Know",
      "summary": "ChatGPT interactive math and science visuals launched in March 2026: how the new learning modules work, who gets access, and why students benefit.",
      "date_published": "2026-03-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "Education",
        "EdTech",
        "Math",
        "Science",
        "Students"
      ],
      "image": "https://umesh-malik.com/blog/chatgpt-learning-visuals-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/anthropic-code-review-claude-code-guide",
      "url": "https://umesh-malik.com/blog/anthropic-code-review-claude-code-guide",
      "title": "Claude Code Review: How It Works, Pricing & Setup",
      "summary": "Anthropic's Claude Code Review runs multi-agent PR reviews for $15-$25 each. How it works, pricing, REVIEW.md setup, and where it beats linters.",
      "date_published": "2026-03-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Anthropic",
        "Claude Code",
        "Code Review",
        "AI Agents",
        "Developer Productivity",
        "GitHub",
        "Pull Requests",
        "AI Coding Tools"
      ],
      "image": "https://umesh-malik.com/blog/anthropic-code-review-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agentic-ai-enterprise-security-model",
      "url": "https://umesh-malik.com/blog/agentic-ai-enterprise-security-model",
      "title": "Agentic AI Security: The New Enterprise Control Model",
      "summary": "Agentic AI security breaks the old enterprise trust model. How to fix identity, delegated authority, prompt injection defense, and tool-level policy in 2026.",
      "date_published": "2026-03-09T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Agentic AI",
        "Security",
        "Enterprise Security",
        "AI Agents",
        "NIST",
        "Prompt Injection"
      ],
      "image": "https://umesh-malik.com/blog/agentic-ai-enterprise-security-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/openai-gpt-5-4-complete-guide",
      "url": "https://umesh-malik.com/blog/openai-gpt-5-4-complete-guide",
      "title": "GPT-5.4 for Agents: Computer Use, MCP Tool Calls, and Real Pricing",
      "summary": "GPT-5.4's native computer use and MCP tool calls are the real upgrade for agents. What holds up in a loop, what the 1M context costs, and how Pro compares.",
      "date_published": "2026-03-06T00:00:00.000Z",
      "date_modified": "2026-08-06T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "GPT-5.4",
        "API",
        "AI Agents",
        "LLMs",
        "Machine Learning"
      ],
      "image": "https://umesh-malik.com/blog/gpt-5-4-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/openai-gpt-5-3-instant-fewer-refusals-better-answers",
      "url": "https://umesh-malik.com/blog/openai-gpt-5-3-instant-fewer-refusals-better-answers",
      "title": "OpenAI GPT-5.3 Instant: 26.8% Fewer Hallucinations, Reduced Refusals, and Better Web Answers",
      "summary": "GPT-5.3 Instant brings 26.8% fewer hallucinations, fewer needless refusals, and better web-sourced answers — what changed and why it matters for devs.",
      "date_published": "2026-03-04T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "OpenAI",
        "ChatGPT",
        "GPT-5",
        "LLMs",
        "API",
        "Machine Learning"
      ],
      "image": "https://umesh-malik.com/blog/gpt-5-3-instant-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/deepseek-v4-release-challenge-us-ai-rivals",
      "url": "https://umesh-malik.com/blog/deepseek-v4-release-challenge-us-ai-rivals",
      "title": "DeepSeek V4 vs US AI Models: Benchmarks, Architecture, and What It Means for the Industry",
      "summary": "DeepSeek V4 is expected in early March 2026. Here is what is confirmed, what remains unverified, and how it challenges U.S. AI rivals.",
      "date_published": "2026-03-01T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "DeepSeek",
        "China",
        "NVIDIA",
        "Huawei",
        "Open Source",
        "Geopolitics",
        "LLMs"
      ],
      "image": "https://umesh-malik.com/blog/deepseek-v4-release-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/rag-vs-fine-tuning-llms-2026",
      "url": "https://umesh-malik.com/blog/rag-vs-fine-tuning-llms-2026",
      "title": "RAG vs Fine-Tuning for LLMs in 2026: A Production Decision Framework With Real Tradeoffs",
      "summary": "RAG vs fine-tuning for LLMs in 2026: a practical decision framework covering architecture tradeoffs, cost, latency, and when to use each in production.",
      "date_published": "2026-02-28T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "RAG",
        "Fine-Tuning",
        "LLM Engineering",
        "AI Architecture",
        "GenAI 2026"
      ],
      "image": "https://umesh-malik.com/blog/rag-vs-fine-tuning-llms-2026-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/figma-codex-react-2026",
      "url": "https://umesh-malik.com/blog/figma-codex-react-2026",
      "title": "Figma to React With OpenAI Codex: A 2026 Guide",
      "summary": "A 2026 guide to Figma to React conversion with OpenAI Codex: setup, prompts, component structure, and real production examples.",
      "date_published": "2026-02-27T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "OpenAI Codex",
        "Figma to React",
        "AI UI Development",
        "React Architecture",
        "Frontend Performance",
        "Design to Code 2026"
      ],
      "image": "https://umesh-malik.com/blog/figma-codex-react-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/cloudflare-vinext-next-js-vite-revolution",
      "url": "https://umesh-malik.com/blog/cloudflare-vinext-next-js-vite-revolution",
      "title": "Cloudflare viNext: The $1,100 Next.js-on-Vite Rebuild",
      "summary": "Cloudflare viNext rebuilt Next.js on Vite for $1,100 in 7 days: 4.4x faster builds, 57% smaller bundles, already powering CIO.gov in production.",
      "date_published": "2026-02-25T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "React",
        "Next.js",
        "Vite",
        "Performance",
        "AI",
        "Cloudflare",
        "Build Tools",
        "Developer Tools",
        "AI Engineering"
      ],
      "image": "https://umesh-malik.com/blog/cloudflare-vinext-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/anthropic-detecting-preventing-distillation-attacks",
      "url": "https://umesh-malik.com/blog/anthropic-detecting-preventing-distillation-attacks",
      "title": "AI Model Distillation: Inside the $100M Claude Heist",
      "summary": "Anthropic exposes an AI model distillation attack by DeepSeek, Moonshot, and MiniMax: 16 million exchanges, 24,000 fake accounts. The forensic breakdown.",
      "date_published": "2026-02-24T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Security",
        "Machine Learning",
        "AI Safety",
        "National Security",
        "DeepSeek"
      ],
      "image": "https://umesh-malik.com/blog/distillation-attacks-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/local-llm-coding-revolution-qwen3-coder-desktop",
      "url": "https://umesh-malik.com/blog/local-llm-coding-revolution-qwen3-coder-desktop",
      "title": "Qwen3-Coder: Run an 80B-Parameter LLM on Your Desktop",
      "summary": "Qwen3-Coder runs 80B parameters on a desktop with only 3B active per token — and plugs into Claude Code. Why the cloud-only era of AI coding is ending.",
      "date_published": "2026-02-22T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Developer Experience",
        "Open Source",
        "Tools",
        "Performance",
        "Productivity"
      ],
      "image": "https://umesh-malik.com/blog/local-llm-coding-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/spec-driven-development-ai-agents-addy-osmani",
      "url": "https://umesh-malik.com/blog/spec-driven-development-ai-agents-addy-osmani",
      "title": "Spec-Driven Development for AI Agents (Addy Osmani)",
      "summary": "Why AI coding agent prompts fail — and how spec-driven development fixes it, per Addy Osmani's 5-principle framework backed by GitHub's 2,500-config analysis.",
      "date_published": "2026-02-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Developer Experience",
        "Productivity",
        "Tools",
        "Software Engineering"
      ],
      "image": "https://umesh-malik.com/blog/spec-driven-dev-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/nodejs-memory-cut-in-half-pointer-compression",
      "url": "https://umesh-malik.com/blog/nodejs-memory-cut-in-half-pointer-compression",
      "title": "Node.js Pointer Compression: Cut Heap Memory ~50%",
      "summary": "V8 pointer compression finally lands in Node.js: one Docker image swap cuts heap memory ~50%, improves P99 latency, and can save $80K-$300K a year.",
      "date_published": "2026-02-18T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Node.js",
        "JavaScript",
        "Performance",
        "V8",
        "DevOps",
        "Cloud Computing"
      ],
      "image": "https://umesh-malik.com/blog/nodejs-memory-cut-in-half-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/agents-md-ai-coding-agents-study",
      "url": "https://umesh-malik.com/blog/agents-md-ai-coding-agents-study",
      "title": "AGENTS.md Files Don't Work the Way You Think — A 138-Repo Study",
      "summary": "A 138-repo study: AGENTS.md files hurt performance by 2-3% and raised costs 20%+. What the research found — and what actually works instead.",
      "date_published": "2026-02-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Developer Experience",
        "Open Source",
        "Productivity",
        "Tools"
      ],
      "image": "https://umesh-malik.com/blog/agents-md-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/docker-swarm-vs-kubernetes-166-dollar-reality-check",
      "url": "https://umesh-malik.com/blog/docker-swarm-vs-kubernetes-166-dollar-reality-check",
      "title": "Docker Swarm vs Kubernetes: $166/yr Beats a $200K Cluster",
      "summary": "Docker Swarm vs Kubernetes: a live SaaS runs for $166/year with zero crashes in 10 years, while the average Kubernetes cluster wastes 87% of its CPU.",
      "date_published": "2026-02-17T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Docker",
        "Kubernetes",
        "DevOps",
        "Cloud Computing",
        "Infrastructure",
        "Cost Optimization"
      ],
      "image": "https://umesh-malik.com/blog/docker-swarm-vs-k8s-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/seedance-2-hollywood-ai-copyright-crisis",
      "url": "https://umesh-malik.com/blog/seedance-2-hollywood-ai-copyright-crisis",
      "title": "Seedance 2.0: The Two-Line Prompt That Broke Hollywood",
      "summary": "ByteDance's Seedance 2.0 made a photorealistic Tom Cruise vs Brad Pitt fight from a two-line prompt — igniting Disney, Paramount, and SAG-AFTRA backlash.",
      "date_published": "2026-02-16T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Hollywood",
        "Copyright",
        "ByteDance",
        "Deepfakes",
        "AI Ethics"
      ],
      "image": "https://umesh-malik.com/blog/seedance-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/ai-agent-attacks-developer-matplotlib-open-source",
      "url": "https://umesh-malik.com/blog/ai-agent-attacks-developer-matplotlib-open-source",
      "title": "AI Agent Attacks Developer After Matplotlib PR Rejection — Full Story",
      "summary": "The first documented AI agent attack on an open-source maintainer: rejected on a matplotlib PR, the bot published a hit piece. Full story and lessons.",
      "date_published": "2026-02-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "AI",
        "Open Source",
        "Software Engineering",
        "Python",
        "AI Ethics",
        "GitHub"
      ],
      "image": "https://umesh-malik.com/blog/ai-agent-matplotlib-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/nodejs-backend-for-frontend-developers",
      "url": "https://umesh-malik.com/blog/nodejs-backend-for-frontend-developers",
      "title": "Node.js Backend for Frontend Developers: A Practical Guide",
      "summary": "A frontend developer's guide to building a Node.js backend: Express, REST APIs, middleware, databases, auth, and deployment — plus the mindset shift you need.",
      "date_published": "2026-02-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Node.js",
        "Backend",
        "JavaScript",
        "TypeScript",
        "API"
      ],
      "image": "https://umesh-malik.com/blog/nodejs-backend-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/frontend-career-growth-junior-to-senior",
      "url": "https://umesh-malik.com/blog/frontend-career-growth-junior-to-senior",
      "title": "Frontend Career Growth: From Junior to Senior Engineer",
      "summary": "From Associate Engineer to SDE-2: what actually drives frontend career growth — technical skills, soft skills, and the things nobody tells you.",
      "date_published": "2026-01-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Career",
        "Frontend",
        "Software Engineering",
        "Growth"
      ],
      "image": "https://umesh-malik.com/blog/frontend-career-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/core-web-vitals-optimization-guide",
      "url": "https://umesh-malik.com/blog/core-web-vitals-optimization-guide",
      "title": "How to Fix Core Web Vitals: LCP, INP & CLS (2026)",
      "summary": "A hands-on guide to optimizing Core Web Vitals (LCP, INP, CLS). Covers measurement, diagnosis, and specific fixes with before/after examples from real projects.",
      "date_published": "2025-11-12T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Performance",
        "Core Web Vitals",
        "SEO",
        "Frontend"
      ],
      "image": "https://umesh-malik.com/blog/core-web-vitals-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/developer-productivity-tools-senior-engineers",
      "url": "https://umesh-malik.com/blog/developer-productivity-tools-senior-engineers",
      "title": "Developer Productivity Tools for Senior Engineers",
      "summary": "A senior engineer's real stack of developer productivity tools — editor, terminal, code review habits, and focus systems that cut daily friction.",
      "date_published": "2025-09-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Productivity",
        "Tools",
        "Developer Experience",
        "Workflow"
      ],
      "image": "https://umesh-malik.com/blog/dev-productivity-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/frontend-testing-strategies-2025",
      "url": "https://umesh-malik.com/blog/frontend-testing-strategies-2025",
      "title": "Frontend Testing Strategies That Actually Work in 2026",
      "summary": "Practical frontend testing strategies for 2025: component tests, integration, E2E, and the patterns that give the most confidence per line.",
      "date_published": "2025-07-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "Testing",
        "React",
        "TypeScript",
        "Frontend",
        "Vitest"
      ],
      "image": "https://umesh-malik.com/blog/frontend-testing-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/tailwindcss-v4-migration-guide",
      "url": "https://umesh-malik.com/blog/tailwindcss-v4-migration-guide",
      "title": "TailwindCSS v4 Migration Guide: Breaking Changes & the @theme Config",
      "summary": "TailwindCSS v4 migration, done right: every breaking change, the new CSS-first @theme config that replaces tailwind.config.js, and a step-by-step upgrade path.",
      "date_published": "2025-05-20T00:00:00.000Z",
      "date_modified": "2026-07-21T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "TailwindCSS",
        "CSS",
        "Frontend",
        "Migration"
      ],
      "image": "https://umesh-malik.com/blog/tailwindcss-v4-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/javascript-es2024-features-you-should-know",
      "url": "https://umesh-malik.com/blog/javascript-es2024-features-you-should-know",
      "title": "ES2024 Features You'll Actually Use in JavaScript",
      "summary": "The most impactful ES2024 features: Array grouping, Promise.withResolvers, well-formed Unicode strings, and the RegExp v flag — with practical examples.",
      "date_published": "2025-03-15T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "JavaScript",
        "ES2024",
        "ECMAScript",
        "Frontend"
      ],
      "image": "https://umesh-malik.com/blog/javascript-es2024-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/typescript-utility-types-complete-guide",
      "url": "https://umesh-malik.com/blog/typescript-utility-types-complete-guide",
      "title": "TypeScript Utility Types: Complete Guide to Partial, Required, Pick, Omit, Record, and More (2026)",
      "summary": "TypeScript utility types explained: Partial, Pick, Omit, Record, Exclude, ReturnType and more — with real examples, a cheat sheet, and common pitfalls.",
      "date_published": "2024-12-15T00:00:00.000Z",
      "date_modified": "2026-07-20T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "TypeScript",
        "JavaScript",
        "Frontend",
        "Type Safety"
      ],
      "image": "https://umesh-malik.com/blog/typescript-utility-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/react-performance-optimization-techniques",
      "url": "https://umesh-malik.com/blog/react-performance-optimization-techniques",
      "title": "React Performance Optimization: 10 Proven Techniques",
      "summary": "React performance optimization techniques — memoization, code splitting, virtualization, and 7 more battle-tested strategies from real apps.",
      "date_published": "2024-11-20T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "React",
        "Performance",
        "JavaScript",
        "Frontend"
      ],
      "image": "https://umesh-malik.com/blog/react-performance-cover.png"
    },
    {
      "id": "https://umesh-malik.com/blog/sveltekit-vs-nextjs-comparison",
      "url": "https://umesh-malik.com/blog/sveltekit-vs-nextjs-comparison",
      "title": "SvelteKit vs Next.js 2026: Which Should You Choose?",
      "summary": "SvelteKit vs Next.js: an in-depth 2026 comparison of performance, DX, routing, and deployment, from real production experience.",
      "date_published": "2024-10-10T00:00:00.000Z",
      "authors": [
        {
          "name": "Umesh Malik"
        }
      ],
      "tags": [
        "SvelteKit",
        "Next.js",
        "React",
        "JavaScript",
        "Frontend"
      ],
      "image": "https://umesh-malik.com/blog/sveltekit-vs-nextjs-cover.png"
    }
  ]
}