<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming on Hi, I&#39;m Muhammad Amal</title>
    <link>https://muhammadamal.my.id/tracks/programming/</link>
    <description>Recent content in Programming on Hi, I&#39;m Muhammad Amal</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 19 Dec 2025 09:00:00 +0700</lastBuildDate>
    <atom:link href="https://muhammadamal.my.id/tracks/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Predictions for 2026, The Post Agent Era for Backend Engineers</title>
      <link>https://muhammadamal.my.id/blog/predictions-for-2026-the-post-agent-era-for-backend-engineers/</link>
      <pubDate>Fri, 19 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/predictions-for-2026-the-post-agent-era-for-backend-engineers/</guid>
      <description>What 2026 likely brings for backend engineers, agents as boring infrastructure, OS-level AI, agent-native data systems, and the calibration adjustments to make.</description>
    </item>
    <item>
      <title>Talking to Executives About Technical Risk, A Practical Framework</title>
      <link>https://muhammadamal.my.id/blog/talking-to-executives-about-technical-risk-a-practical-framework/</link>
      <pubDate>Wed, 17 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/talking-to-executives-about-technical-risk-a-practical-framework/</guid>
      <description>A practical framework for senior engineers to communicate technical risk to executives, with concrete framing, a risk taxonomy, and templates for the conversation.</description>
    </item>
    <item>
      <title>Lessons From Running Platform Engineering Teams in 2025</title>
      <link>https://muhammadamal.my.id/blog/lessons-from-running-platform-engineering-teams-in-2025/</link>
      <pubDate>Mon, 15 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/lessons-from-running-platform-engineering-teams-in-2025/</guid>
      <description>What actually works when running a platform engineering team, framed around internal product thinking, golden paths, RACI for shared services, and the failures I learned from.</description>
    </item>
    <item>
      <title>The 2025 Technical Retrospective, Agents, Wasm, Edge AI, and MCP</title>
      <link>https://muhammadamal.my.id/blog/the-2025-technical-retrospective-agents-wasm-edge-ai-and-mcp/</link>
      <pubDate>Fri, 12 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/the-2025-technical-retrospective-agents-wasm-edge-ai-and-mcp/</guid>
      <description>What actually mattered in 2025, agents went multi-step, Wasm grew up on the server, edge AI got real, and MCP became the wire format. Plus what I got wrong.</description>
    </item>
    <item>
      <title>Architecture Reviews That Don&#39;t Waste Senior Time</title>
      <link>https://muhammadamal.my.id/blog/architecture-reviews-that-dont-waste-senior-time/</link>
      <pubDate>Wed, 10 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/architecture-reviews-that-dont-waste-senior-time/</guid>
      <description>A practical playbook for architecture reviews that actually inform decisions, with templates for prep docs, review rubrics, and the rules that keep meetings short.</description>
    </item>
    <item>
      <title>Building Influence Without Authority, A Tech Lead&#39;s Guide</title>
      <link>https://muhammadamal.my.id/blog/building-influence-without-authority-a-tech-leads-guide/</link>
      <pubDate>Mon, 08 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-influence-without-authority-a-tech-leads-guide/</guid>
      <description>How to move organizations when you don&amp;rsquo;t have the org chart power to do it, with concrete frameworks for credibility, allyship, and the long game of influence.</description>
    </item>
    <item>
      <title>Writing ADRs That Actually Inform Decisions</title>
      <link>https://muhammadamal.my.id/blog/writing-adrs-that-actually-inform-decisions/</link>
      <pubDate>Fri, 05 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/writing-adrs-that-actually-inform-decisions/</guid>
      <description>An opinionated guide to ADRs that work in real engineering orgs, with a battle-tested template, scoring rubric, and the structural choices that make ADRs readable.</description>
    </item>
    <item>
      <title>Consultative Discovery for Complex Software Architectures</title>
      <link>https://muhammadamal.my.id/blog/consultative-discovery-for-complex-software-architectures/</link>
      <pubDate>Wed, 03 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/consultative-discovery-for-complex-software-architectures/</guid>
      <description>A senior engineer&amp;rsquo;s discovery playbook for ambiguous architecture work, with question sets, interview structure, and a discovery brief template that drives real decisions.</description>
    </item>
    <item>
      <title>Transitioning to Technical Leadership, A Senior Engineer&#39;s Playbook</title>
      <link>https://muhammadamal.my.id/blog/transitioning-to-technical-leadership-a-senior-engineers-playbook/</link>
      <pubDate>Mon, 01 Dec 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/transitioning-to-technical-leadership-a-senior-engineers-playbook/</guid>
      <description>What actually changes when you move from senior IC to technical leader, plus concrete frameworks for ramp, delegation, and the identity shift nobody warns you about.</description>
    </item>
    <item>
      <title>Closing the Loop, Support Feedback to Product Engineering</title>
      <link>https://muhammadamal.my.id/blog/closing-the-loop-support-feedback-to-product-engineering/</link>
      <pubDate>Fri, 21 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/closing-the-loop-support-feedback-to-product-engineering/</guid>
      <description>A working model for routing support insights into product engineering decisions, with data structures, reporting cadence, and the political work of making engineering listen.</description>
    </item>
    <item>
      <title>Escalation Paths and Runbooks for Enterprise Support</title>
      <link>https://muhammadamal.my.id/blog/escalation-paths-and-runbooks-for-enterprise-support/</link>
      <pubDate>Wed, 19 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/escalation-paths-and-runbooks-for-enterprise-support/</guid>
      <description>How to design escalation paths and write runbooks that hold up when an enterprise customer is in pain, with explicit decision criteria and operational templates.</description>
    </item>
    <item>
      <title>Measuring Support Engineering Effectiveness, Metrics That Matter</title>
      <link>https://muhammadamal.my.id/blog/measuring-support-engineering-effectiveness-metrics-that-matter/</link>
      <pubDate>Mon, 17 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/measuring-support-engineering-effectiveness-metrics-that-matter/</guid>
      <description>Which support engineering metrics actually predict customer outcomes, which ones get gamed, and how to build a measurement stack that drives the right behavior.</description>
    </item>
    <item>
      <title>Triage Automation with LLMs and Zendesk, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/triage-automation-with-llms-and-zendesk-a-hands-on-tutorial/</link>
      <pubDate>Fri, 14 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/triage-automation-with-llms-and-zendesk-a-hands-on-tutorial/</guid>
      <description>A working LLM triage system for Zendesk in Python, covering classification, routing, agent-assist suggestions, evaluation, and the rollout pattern that doesn&amp;rsquo;t break production.</description>
    </item>
    <item>
      <title>SLA Driven Operations for Tech Support Managers</title>
      <link>https://muhammadamal.my.id/blog/sla-driven-operations-for-tech-support-managers/</link>
      <pubDate>Wed, 12 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sla-driven-operations-for-tech-support-managers/</guid>
      <description>A practical operating model for SLA-driven support orgs, covering queue topology, staffing math, on-call rotations, and the dashboards that actually drive behavior.</description>
    </item>
    <item>
      <title>Bridging L3 Engineers and Enterprise Clients, A Tech Support Playbook</title>
      <link>https://muhammadamal.my.id/blog/bridging-l3-engineers-and-enterprise-clients-a-tech-support-playbook/</link>
      <pubDate>Mon, 10 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/bridging-l3-engineers-and-enterprise-clients-a-tech-support-playbook/</guid>
      <description>A playbook for the technical translation work that holds enterprise support together, with templates, escalation patterns, and the human gotchas that nobody trains for.</description>
    </item>
    <item>
      <title>Embedding Strategies for Support Documentation in 2025</title>
      <link>https://muhammadamal.my.id/blog/embedding-strategies-for-support-documentation-in-2025/</link>
      <pubDate>Fri, 07 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/embedding-strategies-for-support-documentation-in-2025/</guid>
      <description>A senior engineer&amp;rsquo;s decision guide for picking, mixing, and fine-tuning embeddings for technical support corpora, with runnable benchmarks and real recall numbers.</description>
    </item>
    <item>
      <title>Building a Support Knowledge Base from Zendesk and Jira</title>
      <link>https://muhammadamal.my.id/blog/building-a-support-knowledge-base-from-zendesk-and-jira/</link>
      <pubDate>Wed, 05 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-a-support-knowledge-base-from-zendesk-and-jira/</guid>
      <description>How to extract, dedupe, anonymize, and rank tickets from Zendesk and Jira into a knowledge base that&amp;rsquo;s actually safe to feed into a RAG pipeline.</description>
    </item>
    <item>
      <title>RAG Systems for Technical Support Teams in 2025</title>
      <link>https://muhammadamal.my.id/blog/rag-systems-for-technical-support-teams-in-2025/</link>
      <pubDate>Mon, 03 Nov 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rag-systems-for-technical-support-teams-in-2025/</guid>
      <description>A field-tested walkthrough of building retrieval-augmented generation for L1 through L3 support, with runnable Python, pgvector and Qdrant pipelines, and the failure modes nobody talks about.</description>
    </item>
    <item>
      <title>Measuring Developer Experience with DORA and SPACE in Backstage</title>
      <link>https://muhammadamal.my.id/blog/measuring-developer-experience-dora-space-backstage/</link>
      <pubDate>Wed, 29 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/measuring-developer-experience-dora-space-backstage/</guid>
      <description>A working tutorial on turning Backstage into a real DX measurement platform.</description>
    </item>
    <item>
      <title>Service Catalog Design That Scales, Lessons From Production</title>
      <link>https://muhammadamal.my.id/blog/service-catalog-design-that-scales/</link>
      <pubDate>Mon, 27 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/service-catalog-design-that-scales/</guid>
      <description>Catalog modeling decisions that pay back at scale, learned the hard way.</description>
    </item>
    <item>
      <title>Developer Onboarding with Backstage and ArgoCD, An End to End Tutorial</title>
      <link>https://muhammadamal.my.id/blog/developer-onboarding-backstage-argocd-end-to-end/</link>
      <pubDate>Wed, 22 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/developer-onboarding-backstage-argocd-end-to-end/</guid>
      <description>How to build an onboarding loop that a new hire can finish in their first morning.</description>
    </item>
    <item>
      <title>Score Spec for Workload Portability in 2025</title>
      <link>https://muhammadamal.my.id/blog/score-spec-workload-portability-2025/</link>
      <pubDate>Mon, 20 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/score-spec-workload-portability-2025/</guid>
      <description>Where Score Spec actually fits in a 2025 platform stack, with working examples.</description>
    </item>
    <item>
      <title>TechDocs at Scale with Backstage, A Production Setup</title>
      <link>https://muhammadamal.my.id/blog/techdocs-at-scale-backstage-production-setup/</link>
      <pubDate>Wed, 15 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/techdocs-at-scale-backstage-production-setup/</guid>
      <description>How to make TechDocs fast and reliable past the first ten repositories.</description>
    </item>
    <item>
      <title>Writing Custom Backstage Plugins in TypeScript, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/writing-custom-backstage-plugins-typescript/</link>
      <pubDate>Mon, 13 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/writing-custom-backstage-plugins-typescript/</guid>
      <description>A working engineer&amp;rsquo;s tutorial on building Backstage plugins that survive contact with production.</description>
    </item>
    <item>
      <title>Golden Paths and Software Templates in Backstage, A Step by Step Guide</title>
      <link>https://muhammadamal.my.id/blog/golden-paths-software-templates-backstage/</link>
      <pubDate>Wed, 08 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/golden-paths-software-templates-backstage/</guid>
      <description>How to turn a portal into a paved road with real Backstage 1.34 software templates.</description>
    </item>
    <item>
      <title>Building an Internal Developer Portal with Backstage 1.34</title>
      <link>https://muhammadamal.my.id/blog/building-internal-developer-portal-backstage-1-34/</link>
      <pubDate>Mon, 06 Oct 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-internal-developer-portal-backstage-1-34/</guid>
      <description>A working engineer&amp;rsquo;s walkthrough of building an IDP from scratch with Backstage 1.34 on Node.js 22.</description>
    </item>
    <item>
      <title>Supply Chain Security for AI Models, Signing and SBOM</title>
      <link>https://muhammadamal.my.id/blog/supply-chain-security-ai-models-signing-and-sbom/</link>
      <pubDate>Wed, 24 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/supply-chain-security-ai-models-signing-and-sbom/</guid>
      <description>How to sign models, produce SBOMs that mean something for ML, and verify everything at runtime without slowing your team down.</description>
    </item>
    <item>
      <title>Content Moderation for LLMs with Llama Guard 3.2</title>
      <link>https://muhammadamal.my.id/blog/content-moderation-for-llms-llama-guard-3-2/</link>
      <pubDate>Mon, 22 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/content-moderation-for-llms-llama-guard-3-2/</guid>
      <description>How to deploy Llama Guard 3.2 for input and output moderation without crippling latency, with custom rules and real benchmarks.</description>
    </item>
    <item>
      <title>Policy as Code with OPA 1.0, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/policy-as-code-opa-1-0-production-walkthrough/</link>
      <pubDate>Wed, 17 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/policy-as-code-opa-1-0-production-walkthrough/</guid>
      <description>How to run OPA 1.0 in production without footguns, with real policies, bundle infrastructure, and the operational habits that keep it healthy.</description>
    </item>
    <item>
      <title>SPIFFE and SPIRE for Service Identity, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/spiffe-spire-service-identity-hands-on-tutorial/</link>
      <pubDate>Mon, 15 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/spiffe-spire-service-identity-hands-on-tutorial/</guid>
      <description>Install SPIRE 1.10, register workloads, and use SVIDs from real applications without faking your way through the docs.</description>
    </item>
    <item>
      <title>Securing RAG Systems Against Data Exfiltration in 2025</title>
      <link>https://muhammadamal.my.id/blog/securing-rag-against-data-exfiltration-2025/</link>
      <pubDate>Wed, 10 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securing-rag-against-data-exfiltration-2025/</guid>
      <description>Practical controls that stop the most common RAG exfiltration vectors without breaking retrieval quality.</description>
    </item>
    <item>
      <title>DevSecOps in AI ML Pipelines, A Comprehensive Tutorial</title>
      <link>https://muhammadamal.my.id/blog/devsecops-ai-ml-pipelines-comprehensive-tutorial/</link>
      <pubDate>Mon, 08 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/devsecops-ai-ml-pipelines-comprehensive-tutorial/</guid>
      <description>How to wire real security gates into ML pipelines without grinding training to a halt, with code and policies that actually work.</description>
    </item>
    <item>
      <title>Zero Trust Architectures for AI Services, A Step by Step Setup</title>
      <link>https://muhammadamal.my.id/blog/zero-trust-architectures-ai-services-step-by-step-setup/</link>
      <pubDate>Wed, 03 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/zero-trust-architectures-ai-services-step-by-step-setup/</guid>
      <description>How to build a real Zero Trust setup around your model-serving stack without drowning in vendor jargon.</description>
    </item>
    <item>
      <title>Advanced Prompt Injection Defenses in 2025, A Practical Guide</title>
      <link>https://muhammadamal.my.id/blog/advanced-prompt-injection-defenses-2025-practical-guide/</link>
      <pubDate>Mon, 01 Sep 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-prompt-injection-defenses-2025-practical-guide/</guid>
      <description>Layered prompt injection defenses that actually hold up in production, with code, diagrams, and the failure modes nobody talks about.</description>
    </item>
    <item>
      <title>Observability for n8n in 2025, Metrics, Logs, and Traces</title>
      <link>https://muhammadamal.my.id/blog/observability-for-n8n-2025-metrics-logs-traces/</link>
      <pubDate>Fri, 22 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/observability-for-n8n-2025-metrics-logs-traces/</guid>
      <description>Build production observability for n8n with Prometheus metrics, structured logs, OpenTelemetry traces, and the dashboards that catch incidents early.</description>
    </item>
    <item>
      <title>Self Hosted n8n on Kubernetes, A Production Setup</title>
      <link>https://muhammadamal.my.id/blog/self-hosted-n8n-on-kubernetes-production-setup/</link>
      <pubDate>Wed, 20 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/self-hosted-n8n-on-kubernetes-production-setup/</guid>
      <description>Deploy n8n 1.78 on Kubernetes properly, with separate main, webhook, and worker deployments, HPA, ingress, and persistence.</description>
    </item>
    <item>
      <title>Error Handling and Retries for Production n8n Workflows</title>
      <link>https://muhammadamal.my.id/blog/error-handling-and-retries-for-production-n8n-workflows/</link>
      <pubDate>Mon, 18 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/error-handling-and-retries-for-production-n8n-workflows/</guid>
      <description>Build n8n workflows that survive flaky APIs, with retry policies, error trigger workflows, circuit breakers, and dead letter routing patterns.</description>
    </item>
    <item>
      <title>Managing Secrets and Credentials in n8n for Enterprise</title>
      <link>https://muhammadamal.my.id/blog/managing-secrets-and-credentials-in-n8n-for-enterprise/</link>
      <pubDate>Fri, 15 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/managing-secrets-and-credentials-in-n8n-for-enterprise/</guid>
      <description>Move n8n credentials out of the database and into Vault or Infisical, wire up Keycloak or Auth0 SSO, and build a rotation story that doesn&amp;rsquo;t break workflows.</description>
    </item>
    <item>
      <title>n8n Queue Mode with Redis at Scale, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/n8n-queue-mode-redis-at-scale-production-walkthrough/</link>
      <pubDate>Wed, 13 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-queue-mode-redis-at-scale-production-walkthrough/</guid>
      <description>From a single-node Redis to Sentinel and clustered queues, the practical guide to running n8n queue mode at production scale.</description>
    </item>
    <item>
      <title>Connecting Jira Cloud to Internal Platforms with n8n</title>
      <link>https://muhammadamal.my.id/blog/connecting-jira-cloud-to-internal-platforms-with-n8n/</link>
      <pubDate>Mon, 11 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connecting-jira-cloud-to-internal-platforms-with-n8n/</guid>
      <description>A real Jira to internal platform integration in n8n, webhook ingest, JQL pulls, Forge events, and the auth patterns that don&amp;rsquo;t break in six months.</description>
    </item>
    <item>
      <title>Orchestrating Complex Enterprise Data Syncs with n8n</title>
      <link>https://muhammadamal.my.id/blog/orchestrating-complex-enterprise-data-syncs-with-n8n/</link>
      <pubDate>Fri, 08 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/orchestrating-complex-enterprise-data-syncs-with-n8n/</guid>
      <description>How to build n8n data syncs that survive production, with idempotency keys, watermark-based pulls, fan-out fan-in, and a real dead letter queue.</description>
    </item>
    <item>
      <title>Writing Custom n8n Nodes in TypeScript, A Step by Step Tutorial</title>
      <link>https://muhammadamal.my.id/blog/writing-custom-n8n-nodes-typescript-step-by-step-tutorial/</link>
      <pubDate>Wed, 06 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/writing-custom-n8n-nodes-typescript-step-by-step-tutorial/</guid>
      <description>From scaffold to npm publish, a complete TypeScript walkthrough for writing custom n8n nodes that don&amp;rsquo;t embarrass you in a code review.</description>
    </item>
    <item>
      <title>Advanced n8n Architecture in 2025, Queue Mode and Worker Scaling</title>
      <link>https://muhammadamal.my.id/blog/advanced-n8n-architecture-2025-queue-mode-worker-scaling/</link>
      <pubDate>Mon, 04 Aug 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-n8n-architecture-2025-queue-mode-worker-scaling/</guid>
      <description>How n8n 1.78 actually runs at scale, the main and worker split, Bull queues, concurrency knobs, and where queue mode earns its keep.</description>
    </item>
    <item>
      <title>Rate Limiting and Resilience Patterns for Modern APIs</title>
      <link>https://muhammadamal.my.id/blog/rate-limiting-resilience-patterns-modern-apis/</link>
      <pubDate>Wed, 30 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rate-limiting-resilience-patterns-modern-apis/</guid>
      <description>A working playbook for keeping API services up under load and degrading gracefully when they can&amp;rsquo;t.</description>
    </item>
    <item>
      <title>OpenTelemetry for gRPC Services in Go, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/opentelemetry-grpc-go-production-walkthrough/</link>
      <pubDate>Mon, 28 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/opentelemetry-grpc-go-production-walkthrough/</guid>
      <description>OpenTelemetry has stabilized enough that you can wire it up once and forget. Here&amp;rsquo;s the configuration that ships.</description>
    </item>
    <item>
      <title>Schema First API Development with buf, A Step by Step Tutorial</title>
      <link>https://muhammadamal.my.id/blog/schema-first-api-development-with-buf/</link>
      <pubDate>Wed, 23 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/schema-first-api-development-with-buf/</guid>
      <description>buf turns protobuf from a code generator into a real schema platform. Here&amp;rsquo;s the workflow that actually scales across teams.</description>
    </item>
    <item>
      <title>API Gateway Architectures in 2025, Envoy Gateway and Kong Compared</title>
      <link>https://muhammadamal.my.id/blog/api-gateway-architectures-2025-envoy-gateway-kong/</link>
      <pubDate>Mon, 21 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/api-gateway-architectures-2025-envoy-gateway-kong/</guid>
      <description>Both gateways are mature in 2025. The right choice depends less on features than on how your platform team wants to operate.</description>
    </item>
    <item>
      <title>Streaming gRPC for Real Time Data, A Hands On Guide</title>
      <link>https://muhammadamal.my.id/blog/streaming-grpc-realtime-data-guide/</link>
      <pubDate>Wed, 16 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/streaming-grpc-realtime-data-guide/</guid>
      <description>Streaming gRPC is more than calling Send in a loop. Here&amp;rsquo;s how to build streams that don&amp;rsquo;t fall over in production.</description>
    </item>
    <item>
      <title>Securing Internal Microservices with JWT and SPIFFE in 2025</title>
      <link>https://muhammadamal.my.id/blog/securing-internal-microservices-jwt-spiffe-2025/</link>
      <pubDate>Mon, 14 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securing-internal-microservices-jwt-spiffe-2025/</guid>
      <description>SPIFFE gives you trustworthy workload identity. JWT gives you portable claims. Together, they replace static service tokens.</description>
    </item>
    <item>
      <title>Connect Go for Browser Friendly gRPC, A Production Tutorial</title>
      <link>https://muhammadamal.my.id/blog/connect-go-browser-friendly-grpc-tutorial/</link>
      <pubDate>Wed, 09 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connect-go-browser-friendly-grpc-tutorial/</guid>
      <description>Connect-Go gives you gRPC ergonomics with a wire format browsers can actually speak. Here&amp;rsquo;s how to use it well.</description>
    </item>
    <item>
      <title>gRPC Deep Dive in 2025, Patterns for High Throughput Services</title>
      <link>https://muhammadamal.my.id/blog/grpc-deep-dive-2025-high-throughput-patterns/</link>
      <pubDate>Mon, 07 Jul 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-deep-dive-2025-high-throughput-patterns/</guid>
      <description>What still trips people up about gRPC in 2025, and the production patterns that actually move the needle.</description>
    </item>
    <item>
      <title>YugabyteDB for Global Apps, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/yugabytedb-for-global-apps/</link>
      <pubDate>Wed, 25 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/yugabytedb-for-global-apps/</guid>
      <description>How to design and run YugabyteDB 2.23 for globally distributed apps, covering placement, multi-region geo-partitioning, and Postgres compatibility tradeoffs.</description>
    </item>
    <item>
      <title>Reading pg_stat_io and Modern Postgres Internals</title>
      <link>https://muhammadamal.my.id/blog/reading-pg-stat-io-and-modern-postgres-internals/</link>
      <pubDate>Mon, 23 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reading-pg-stat-io-and-modern-postgres-internals/</guid>
      <description>A deep dive on pg_stat_io in PostgreSQL 17, explaining buffer cache mechanics, IO contexts, and how to diagnose storage and memory pressure from the view.</description>
    </item>
    <item>
      <title>Time Series at Scale with TimescaleDB Hypertables</title>
      <link>https://muhammadamal.my.id/blog/time-series-at-scale-with-timescaledb-hypertables/</link>
      <pubDate>Wed, 18 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/time-series-at-scale-with-timescaledb-hypertables/</guid>
      <description>How to design, operate, and scale TimescaleDB 2.18 hypertables for production time-series workloads, with chunk sizing, compression, and aggregation patterns.</description>
    </item>
    <item>
      <title>High Availability Postgres with Patroni 4.0, A Step by Step Setup</title>
      <link>https://muhammadamal.my.id/blog/high-availability-postgres-with-patroni-4-0/</link>
      <pubDate>Mon, 16 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/high-availability-postgres-with-patroni-4-0/</guid>
      <description>How to build a production-grade highly available Postgres 17 cluster using Patroni 4.0, etcd for consensus, and HAProxy for routing.</description>
    </item>
    <item>
      <title>Citus for Sharded Multi Tenant Postgres, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/citus-for-sharded-multi-tenant-postgres/</link>
      <pubDate>Wed, 11 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/citus-for-sharded-multi-tenant-postgres/</guid>
      <description>A senior engineer&amp;rsquo;s walkthrough of Citus 12.1 for sharded multi-tenant Postgres, focused on schema patterns, query routing, and operational realities.</description>
    </item>
    <item>
      <title>Distributed SQL with CockroachDB 24.3, A Comprehensive Tutorial</title>
      <link>https://muhammadamal.my.id/blog/distributed-sql-with-cockroachdb-24-3/</link>
      <pubDate>Mon, 09 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/distributed-sql-with-cockroachdb-24-3/</guid>
      <description>How to think about and operate CockroachDB 24.3 as a distributed SQL engine, with concrete schema, query, and locality patterns.</description>
    </item>
    <item>
      <title>Scaling pgvector to Billion Vector Workloads, A Hands On Guide</title>
      <link>https://muhammadamal.my.id/blog/scaling-pgvector-to-billion-vector-workloads/</link>
      <pubDate>Wed, 04 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/scaling-pgvector-to-billion-vector-workloads/</guid>
      <description>A practical engineer&amp;rsquo;s playbook for scaling pgvector 0.8 to billion-vector workloads on Postgres 17, covering HNSW, quantization, and partitioning.</description>
    </item>
    <item>
      <title>Advanced PostgreSQL 17 Tuning at Scale, A Practical Guide</title>
      <link>https://muhammadamal.my.id/blog/advanced-postgresql-17-tuning-at-scale/</link>
      <pubDate>Mon, 02 Jun 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-postgresql-17-tuning-at-scale/</guid>
      <description>How to tune PostgreSQL 17 for real production scale, with concrete settings, diagnostic queries, and the pitfalls that bite teams under load.</description>
    </item>
    <item>
      <title>Postmortem Automation with LLMs, Drafts That Don&#39;t Lie</title>
      <link>https://muhammadamal.my.id/blog/postmortem-automation-with-llms-drafts-that-dont-lie/</link>
      <pubDate>Fri, 23 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postmortem-automation-with-llms-drafts-that-dont-lie/</guid>
      <description>A draft-only postmortem pipeline that respects timestamps, refuses to invent causes, and produces a blameless template a human can finish in 30 minutes.</description>
    </item>
    <item>
      <title>Chaos Engineering with AI Augmented Hypotheses</title>
      <link>https://muhammadamal.my.id/blog/chaos-engineering-with-ai-augmented-hypotheses/</link>
      <pubDate>Wed, 21 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/chaos-engineering-with-ai-augmented-hypotheses/</guid>
      <description>AI-proposed chaos hypotheses, human-approved blast radii, and LitmusChaos execution on Kubernetes 1.32 with rollback on SLO breach.</description>
    </item>
    <item>
      <title>SLOs and Burn Rate Alerting in 2025, A Practical Guide</title>
      <link>https://muhammadamal.my.id/blog/slos-and-burn-rate-alerting-in-2025-a-practical-guide/</link>
      <pubDate>Mon, 19 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slos-and-burn-rate-alerting-in-2025-a-practical-guide/</guid>
      <description>Practical SLO design, error budget math, and multi-window burn rate alerting rules ready to paste into Prometheus 3.0.</description>
    </item>
    <item>
      <title>Incident Response Automation with LangGraph, A Step by Step Tutorial</title>
      <link>https://muhammadamal.my.id/blog/incident-response-automation-with-langgraph-a-step-by-step-tutorial/</link>
      <pubDate>Fri, 16 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/incident-response-automation-with-langgraph-a-step-by-step-tutorial/</guid>
      <description>Treat incident response as a typed state machine in LangGraph 0.2, with deterministic transitions, audit logging, and bounded LLM use.</description>
    </item>
    <item>
      <title>Anomaly Detection on Prometheus Metrics, A Hands On Guide</title>
      <link>https://muhammadamal.my.id/blog/anomaly-detection-on-prometheus-metrics-a-hands-on-guide/</link>
      <pubDate>Wed, 14 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/anomaly-detection-on-prometheus-metrics-a-hands-on-guide/</guid>
      <description>A working senior SRE&amp;rsquo;s tour through metric anomaly detection, from cheap z-score rules to isolation forest sidecars on Prometheus 3.0.</description>
    </item>
    <item>
      <title>Building an SRE Copilot for On Call Engineers</title>
      <link>https://muhammadamal.my.id/blog/building-an-sre-copilot-for-on-call-engineers/</link>
      <pubDate>Mon, 12 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-an-sre-copilot-for-on-call-engineers/</guid>
      <description>A senior backend engineer&amp;rsquo;s design for an LLM-powered on-call assistant with tool use, context shaping, and a read-only blast radius.</description>
    </item>
    <item>
      <title>AI Driven Log Analysis at Scale, A Production Tutorial</title>
      <link>https://muhammadamal.my.id/blog/ai-driven-log-analysis-at-scale-a-production-tutorial/</link>
      <pubDate>Fri, 09 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ai-driven-log-analysis-at-scale-a-production-tutorial/</guid>
      <description>A production pattern for AI log analysis using template mining, vector retrieval, and bounded LLM summarization on Loki 3.3.</description>
    </item>
    <item>
      <title>Auto Remediation Pipelines with LLM Agents and Argo Events</title>
      <link>https://muhammadamal.my.id/blog/auto-remediation-pipelines-with-llm-agents-and-argo-events/</link>
      <pubDate>Wed, 07 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/auto-remediation-pipelines-with-llm-agents-and-argo-events/</guid>
      <description>A practical walkthrough of LLM-proposed, deterministically-executed remediation using Argo Events and Argo Workflows on Kubernetes 1.32.</description>
    </item>
    <item>
      <title>AIOps in May 2025, What Actually Works in Production</title>
      <link>https://muhammadamal.my.id/blog/aiops-in-may-2025-what-actually-works-in-production/</link>
      <pubDate>Mon, 05 May 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/aiops-in-may-2025-what-actually-works-in-production/</guid>
      <description>Field notes on AIOps in production, what to adopt, what to defer, and where LLMs earn their keep on the platform team.</description>
    </item>
    <item>
      <title>Observability for Edge Fleets at Scale, Patterns That Work</title>
      <link>https://muhammadamal.my.id/blog/observability-edge-fleets-at-scale-patterns-that-work/</link>
      <pubDate>Wed, 30 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/observability-edge-fleets-at-scale-patterns-that-work/</guid>
      <description>Production observability for edge fleets. OpenTelemetry Collector at the edge, local aggregation, smart sampling, and alerts that survive WAN outages.</description>
    </item>
    <item>
      <title>Deploying Models with TFLite Micro on Constrained Devices</title>
      <link>https://muhammadamal.my.id/blog/deploying-models-tflite-micro-constrained-devices/</link>
      <pubDate>Mon, 28 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/deploying-models-tflite-micro-constrained-devices/</guid>
      <description>Deploy real models on microcontrollers with TFLite Micro. Conversion, quantization, arena sizing, custom ops, and a working keyword-spotter on a Cortex-M4.</description>
    </item>
    <item>
      <title>Bridging OPC UA and Modbus to MQTT in Go, A Step by Step Guide</title>
      <link>https://muhammadamal.my.id/blog/bridging-opc-ua-modbus-mqtt-go-step-by-step/</link>
      <pubDate>Wed, 23 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/bridging-opc-ua-modbus-mqtt-go-step-by-step/</guid>
      <description>A Go bridge from OPC UA and Modbus to MQTT 5. Subscriptions, polling, normalization, security, and the gotchas that come with legacy PLCs.</description>
    </item>
    <item>
      <title>Streaming Inference Pipelines with Kafka and Go, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/streaming-inference-pipelines-kafka-go-production-walkthrough/</link>
      <pubDate>Mon, 21 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/streaming-inference-pipelines-kafka-go-production-walkthrough/</guid>
      <description>Production streaming inference with Kafka 3.9 and Go 1.24. Partitioning strategies, exactly-once, dynamic batching for GPU inference, and DLQs you can replay.</description>
    </item>
    <item>
      <title>ONNX Runtime on Edge Devices, A Comprehensive Tutorial</title>
      <link>https://muhammadamal.my.id/blog/onnx-runtime-edge-devices-comprehensive-tutorial/</link>
      <pubDate>Wed, 16 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/onnx-runtime-edge-devices-comprehensive-tutorial/</guid>
      <description>Practical ONNX Runtime 1.20 on edge devices. Execution providers, quantization, threading, memory arenas, and a benchmark harness in Go and Python.</description>
    </item>
    <item>
      <title>Advanced MQTT Clustering with EMQX 5.8, A Production Guide</title>
      <link>https://muhammadamal.my.id/blog/advanced-mqtt-clustering-emqx-5-8-production-guide/</link>
      <pubDate>Mon, 14 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-mqtt-clustering-emqx-5-8-production-guide/</guid>
      <description>Clustering EMQX 5.8 in production. Mria architecture, persistent sessions, shared subscriptions, and rolling upgrades without dropping clients.</description>
    </item>
    <item>
      <title>Real Time Telemetry Processing in Go 1.24, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/real-time-telemetry-processing-go-1-24-tutorial/</link>
      <pubDate>Wed, 09 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/real-time-telemetry-processing-go-1-24-tutorial/</guid>
      <description>A practical Go 1.24 telemetry pipeline. Channels with backpressure, the new map internals, generic ring buffers, and a sliding window aggregator that holds up under load.</description>
    </item>
    <item>
      <title>Edge AI Hardware in April 2025, Jetson, Coral, and Raspberry Pi 5 AI Hat</title>
      <link>https://muhammadamal.my.id/blog/edge-ai-hardware-april-2025-jetson-coral-raspberry-pi-5-ai-hat/</link>
      <pubDate>Mon, 07 Apr 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/edge-ai-hardware-april-2025-jetson-coral-raspberry-pi-5-ai-hat/</guid>
      <description>What edge AI hardware looks like in April 2025. Jetson Orin Nano Super, Coral Edge TPU, Raspberry Pi 5 AI Hat. Picking, provisioning, and benchmarking each one.</description>
    </item>
    <item>
      <title>Observability for Multi Agent Systems, LangSmith and Phoenix in 2025</title>
      <link>https://muhammadamal.my.id/blog/observability-for-multi-agent-systems-langsmith-and-phoenix-in-2025/</link>
      <pubDate>Wed, 26 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/observability-for-multi-agent-systems-langsmith-and-phoenix-in-2025/</guid>
      <description>Hands-on observability for multi-agent systems with LangSmith, Phoenix, OpenTelemetry, plus what to alert on and what to ignore.</description>
    </item>
    <item>
      <title>Long Running Autonomous Agent Workflows, Checkpoints and Retries</title>
      <link>https://muhammadamal.my.id/blog/long-running-autonomous-agent-workflows-checkpoints-and-retries/</link>
      <pubDate>Mon, 24 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/long-running-autonomous-agent-workflows-checkpoints-and-retries/</guid>
      <description>Patterns and runnable code for long-running agent workflows, durable checkpoints, idempotent retries, deadlines, and circuit breakers.</description>
    </item>
    <item>
      <title>Agent to Agent Communication Protocols, Choosing the Right One</title>
      <link>https://muhammadamal.my.id/blog/agent-to-agent-communication-protocols-choosing-the-right-one/</link>
      <pubDate>Wed, 19 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/agent-to-agent-communication-protocols-choosing-the-right-one/</guid>
      <description>A senior engineer&amp;rsquo;s guide to picking an agent-to-agent communication protocol, with shared state, typed actors, MCP, brokers, and HTTP compared.</description>
    </item>
    <item>
      <title>Model Context Protocol Explained, Building MCP Servers in 2025</title>
      <link>https://muhammadamal.my.id/blog/model-context-protocol-explained-building-mcp-servers-in-2025/</link>
      <pubDate>Mon, 17 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/model-context-protocol-explained-building-mcp-servers-in-2025/</guid>
      <description>Hands-on guide to the Model Context Protocol from Anthropic, building a Python MCP server with tools, resources, and prompts, and integrating it.</description>
    </item>
    <item>
      <title>AutoGen 0.4 Deep Dive, What Changed and How to Use It</title>
      <link>https://muhammadamal.my.id/blog/autogen-0-4-deep-dive-what-changed-and-how-to-use-it/</link>
      <pubDate>Wed, 12 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/autogen-0-4-deep-dive-what-changed-and-how-to-use-it/</guid>
      <description>What changed in the AutoGen 0.4 rewrite, the new actor model, AgentChat patterns, async runtime, and the migration moves from 0.2.</description>
    </item>
    <item>
      <title>Role Based Agent Teams with CrewAI, A Production Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/role-based-agent-teams-with-crewai-a-production-walkthrough/</link>
      <pubDate>Mon, 10 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/role-based-agent-teams-with-crewai-a-production-walkthrough/</guid>
      <description>Build a research-and-writing crew with CrewAI 0.86, including custom tools, hierarchical mode, memory configuration, and what to skip.</description>
    </item>
    <item>
      <title>Production Multi Agent Systems with LangGraph 0.2, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/production-multi-agent-systems-with-langgraph-0-2-a-hands-on-tutorial/</link>
      <pubDate>Wed, 05 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/production-multi-agent-systems-with-langgraph-0-2-a-hands-on-tutorial/</guid>
      <description>Hands-on LangGraph 0.2 tutorial covering Postgres checkpointers, retries, interrupts, streaming, and the gotchas that bite when you ship.</description>
    </item>
    <item>
      <title>Multi Agent Systems in 2025, Architecture Patterns That Work</title>
      <link>https://muhammadamal.my.id/blog/multi-agent-systems-in-2025-architecture-patterns-that-work/</link>
      <pubDate>Mon, 03 Mar 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/multi-agent-systems-in-2025-architecture-patterns-that-work/</guid>
      <description>Practical patterns for multi-agent systems in 2025 with runnable LangGraph and CrewAI snippets, plus the gotchas that bite teams in production.</description>
    </item>
    <item>
      <title>Running Wasm at the Edge, Cloudflare Workers and Fastly Compute</title>
      <link>https://muhammadamal.my.id/blog/running-wasm-at-the-edge-cloudflare-workers-fastly-compute/</link>
      <pubDate>Wed, 26 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/running-wasm-at-the-edge-cloudflare-workers-fastly-compute/</guid>
      <description>Deploy real Wasm services at the edge, Cloudflare Workers and Fastly Compute compared with Rust examples, KV usage, and operational notes.</description>
    </item>
    <item>
      <title>The Wasm Component Model in Production, A Practical Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/wasm-component-model-in-production-practical-walkthrough/</link>
      <pubDate>Mon, 24 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/wasm-component-model-in-production-practical-walkthrough/</guid>
      <description>Production patterns for the Wasm component model, WIT contracts, composition with wasm-tools compose, versioning, and operational lessons learned.</description>
    </item>
    <item>
      <title>Distributed Wasm Apps with wasmCloud, A Production Tutorial</title>
      <link>https://muhammadamal.my.id/blog/distributed-wasm-apps-with-wasmcloud-production-tutorial/</link>
      <pubDate>Wed, 19 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/distributed-wasm-apps-with-wasmcloud-production-tutorial/</guid>
      <description>Ship a distributed Wasm app with wasmCloud 1.4, including components, capability providers, links, and the NATS lattice.</description>
    </item>
    <item>
      <title>Wasm vs Docker, Where the Lightweight Container Story Holds Up</title>
      <link>https://muhammadamal.my.id/blog/wasm-vs-docker-where-lightweight-container-story-holds-up/</link>
      <pubDate>Mon, 17 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/wasm-vs-docker-where-lightweight-container-story-holds-up/</guid>
      <description>Where Wasm beats Docker and where it doesn&amp;rsquo;t, with cold-start numbers, density math, and a decision framework grounded in real workloads.</description>
    </item>
    <item>
      <title>Building Wasm Microservices with Spin, From Hello World to Production</title>
      <link>https://muhammadamal.my.id/blog/building-wasm-microservices-with-spin-hello-world-to-production/</link>
      <pubDate>Wed, 12 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-wasm-microservices-with-spin-hello-world-to-production/</guid>
      <description>Build, test, and deploy a real HTTP microservice with Spin 3.1, covering routing, persistence, secrets, and production deployment.</description>
    </item>
    <item>
      <title>Embedding wasmtime in a Rust Host, A Hands On Guide</title>
      <link>https://muhammadamal.my.id/blog/embedding-wasmtime-in-a-rust-host-hands-on-guide/</link>
      <pubDate>Mon, 10 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/embedding-wasmtime-in-a-rust-host-hands-on-guide/</guid>
      <description>A practical embedding tutorial for wasmtime 28, with resource limits, fuel-based metering, async, and clean shutdown patterns.</description>
    </item>
    <item>
      <title>Compiling Rust to Wasm with cargo component, A Step by Step Tutorial</title>
      <link>https://muhammadamal.my.id/blog/compiling-rust-to-wasm-with-cargo-component-step-by-step-tutorial/</link>
      <pubDate>Wed, 05 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/compiling-rust-to-wasm-with-cargo-component-step-by-step-tutorial/</guid>
      <description>Build a real WASI 0.2 component from scratch with cargo-component 0.18, WIT bindings, and a wasmtime host that calls it.</description>
    </item>
    <item>
      <title>Server Side WebAssembly in February 2025, A Practical Survey</title>
      <link>https://muhammadamal.my.id/blog/server-side-webassembly-february-2025-practical-survey/</link>
      <pubDate>Mon, 03 Feb 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/server-side-webassembly-february-2025-practical-survey/</guid>
      <description>Where server-side Wasm actually stands in early 2025, runtimes compared, WASI 0.2 caveats, and the workloads where it pays off.</description>
    </item>
    <item>
      <title>Benchmarking SLMs for Your Use Case, From Lmeval to Custom Suites</title>
      <link>https://muhammadamal.my.id/blog/benchmarking-slms-for-your-use-case-lmeval-to-custom/</link>
      <pubDate>Wed, 29 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/benchmarking-slms-for-your-use-case-lmeval-to-custom/</guid>
      <description>Public leaderboards lie about your task. Build a benchmark that measures what your users actually need.</description>
    </item>
    <item>
      <title>Local RAG with SLMs, Private Knowledge Without the Cloud</title>
      <link>https://muhammadamal.my.id/blog/local-rag-with-slms-private-knowledge-without-cloud/</link>
      <pubDate>Mon, 27 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/local-rag-with-slms-private-knowledge-without-cloud/</guid>
      <description>End-to-end local RAG, no cloud. Embeddings, vectors, retrieval, and grounded generation on a single box.</description>
    </item>
    <item>
      <title>Structured Output and Function Calling on Local SLMs</title>
      <link>https://muhammadamal.my.id/blog/structured-output-and-function-calling-on-local-slms/</link>
      <pubDate>Wed, 22 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/structured-output-and-function-calling-on-local-slms/</guid>
      <description>Get production-grade JSON and tool calls out of 3B models. Constrained decoding, schemas, and what actually works.</description>
    </item>
    <item>
      <title>Fine Tuning SLMs with LoRA and QLoRA, A Hands On Tutorial</title>
      <link>https://muhammadamal.my.id/blog/fine-tuning-slms-with-lora-and-qlora-hands-on/</link>
      <pubDate>Mon, 20 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/fine-tuning-slms-with-lora-and-qlora-hands-on/</guid>
      <description>When prompting plateaus, LoRA and QLoRA take you the next mile. A real fine-tuning walkthrough on consumer GPUs.</description>
    </item>
    <item>
      <title>Serving SLMs at Scale with vLLM, A Production Guide</title>
      <link>https://muhammadamal.my.id/blog/serving-slms-at-scale-with-vllm-production-guide/</link>
      <pubDate>Wed, 15 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/serving-slms-at-scale-with-vllm-production-guide/</guid>
      <description>When Ollama and llama.cpp stop scaling, vLLM is what you reach for. PagedAttention, batching, and the real tradeoffs.</description>
    </item>
    <item>
      <title>llama.cpp Deep Dive, Quantization, GGUF, and Inference Speed</title>
      <link>https://muhammadamal.my.id/blog/llama-cpp-deep-dive-quantization-gguf-inference-speed/</link>
      <pubDate>Mon, 13 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/llama-cpp-deep-dive-quantization-gguf-inference-speed/</guid>
      <description>Where Ollama ends, llama.cpp begins. Quantization, GGUF, KV cache, and squeezing tokens per second.</description>
    </item>
    <item>
      <title>Running SLMs Locally with Ollama, A Step by Step Tutorial</title>
      <link>https://muhammadamal.my.id/blog/running-slms-locally-with-ollama-step-by-step/</link>
      <pubDate>Wed, 08 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/running-slms-locally-with-ollama-step-by-step/</guid>
      <description>Everything I do to ship a local SLM behind Ollama 0.5, from install to a real production endpoint.</description>
    </item>
    <item>
      <title>Small Language Models in January 2025, A Practical Survey</title>
      <link>https://muhammadamal.my.id/blog/slm-landscape-january-2025-practical-survey/</link>
      <pubDate>Mon, 06 Jan 2025 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slm-landscape-january-2025-practical-survey/</guid>
      <description>Where the small language model landscape actually stands in January 2025, from a backend engineer&amp;rsquo;s bench.</description>
    </item>
    <item>
      <title>Lessons From a Year of Rust, Postgres, and AI Agents</title>
      <link>https://muhammadamal.my.id/blog/lessons-from-year-rust-postgres-ai-agents/</link>
      <pubDate>Fri, 20 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/lessons-from-year-rust-postgres-ai-agents/</guid>
      <description>The combination that defined my 2024. What I learned about each, what I learned about their intersection, and what I would do differently.</description>
    </item>
    <item>
      <title>Predictions for 2025, Platform Engineering and Agentic AI</title>
      <link>https://muhammadamal.my.id/blog/predictions-2025-platform-engineering-agentic-ai/</link>
      <pubDate>Wed, 18 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/predictions-2025-platform-engineering-agentic-ai/</guid>
      <description>Twelve calls on platform engineering and agentic AI for 2025. Specific enough to be wrong. Pinned to December 2024 context.</description>
    </item>
    <item>
      <title>The 2024 Wrap Up, The Agentic Era for Backend Engineers</title>
      <link>https://muhammadamal.my.id/blog/2024-wrap-up-agentic-era-backend-engineers/</link>
      <pubDate>Mon, 16 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/2024-wrap-up-agentic-era-backend-engineers/</guid>
      <description>Looking back at a year where agents moved from demo to production. What actually shipped, what stayed brittle, and what the next year demands of backend engineers.</description>
    </item>
    <item>
      <title>Roadmaps That Survive Contact with Reality</title>
      <link>https://muhammadamal.my.id/blog/roadmaps-that-survive-contact-with-reality/</link>
      <pubDate>Fri, 13 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/roadmaps-that-survive-contact-with-reality/</guid>
      <description>Most roadmaps die at first contact with the actual quarter. Here is how I build the kind that does not.</description>
    </item>
    <item>
      <title>Cost Justifying Platform Investments, The CFO Friendly Pitch</title>
      <link>https://muhammadamal.my.id/blog/cost-justifying-platform-investments-cfo-friendly-pitch/</link>
      <pubDate>Wed, 11 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cost-justifying-platform-investments-cfo-friendly-pitch/</guid>
      <description>Platform investments live or die on the business case. Here is how to write one that survives the finance review.</description>
    </item>
    <item>
      <title>Communicating Tradeoffs to Non Engineers Without Dumbing Down</title>
      <link>https://muhammadamal.my.id/blog/communicating-tradeoffs-non-engineers-without-dumbing-down/</link>
      <pubDate>Mon, 09 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/communicating-tradeoffs-non-engineers-without-dumbing-down/</guid>
      <description>Translating tradeoffs is a senior skill. The trick is to compress without distorting, and to let the listener make the choice.</description>
    </item>
    <item>
      <title>Reading the Room, Navigating Politics in Technical Decisions</title>
      <link>https://muhammadamal.my.id/blog/reading-the-room-politics-technical-decisions/</link>
      <pubDate>Fri, 06 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reading-the-room-politics-technical-decisions/</guid>
      <description>Politics is a constraint, not a smell. Senior engineers who learn to read the room get to ship what they design.</description>
    </item>
    <item>
      <title>Translating Business Impact into Architecture Decisions</title>
      <link>https://muhammadamal.my.id/blog/translating-business-impact-architecture-decisions/</link>
      <pubDate>Wed, 04 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/translating-business-impact-architecture-decisions/</guid>
      <description>Architecture decisions are business decisions in disguise. Here is how to write ADRs that hold up when the budget conversation arrives.</description>
    </item>
    <item>
      <title>Consultative Discovery for Engineering Leaders, A Playbook</title>
      <link>https://muhammadamal.my.id/blog/consultative-discovery-engineering-leaders-playbook/</link>
      <pubDate>Mon, 02 Dec 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/consultative-discovery-engineering-leaders-playbook/</guid>
      <description>Discovery is a senior engineering skill, not a sales ritual. Here is the playbook I use to get to the real problem before architecture starts.</description>
    </item>
    <item>
      <title>Zero Downtime Postgres Migrations in 2024</title>
      <link>https://muhammadamal.my.id/blog/zero-downtime-postgres-migrations-in-2024/</link>
      <pubDate>Fri, 22 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/zero-downtime-postgres-migrations-in-2024/</guid>
      <description>A field guide to running zero downtime schema migrations against Postgres 17, with expand-contract, backfill batching, and lock-aware DDL.</description>
    </item>
    <item>
      <title>Vacuum and Bloat Management for Busy Postgres Tables</title>
      <link>https://muhammadamal.my.id/blog/vacuum-and-bloat-management-for-busy-postgres-tables/</link>
      <pubDate>Wed, 20 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/vacuum-and-bloat-management-for-busy-postgres-tables/</guid>
      <description>Practical vacuum tuning for write-heavy Postgres 17 workloads, with autovacuum parameters, bloat detection queries, and pg_repack guidance.</description>
    </item>
    <item>
      <title>Native Postgres Partitioning, Patterns That Hold at Scale</title>
      <link>https://muhammadamal.my.id/blog/native-postgres-partitioning-patterns-that-hold-at-scale/</link>
      <pubDate>Mon, 18 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/native-postgres-partitioning-patterns-that-hold-at-scale/</guid>
      <description>Field-tested patterns for native Postgres partitioning in 17, with sizing rules, partition pruning, foreign keys, and the gotchas you only learn at scale.</description>
    </item>
    <item>
      <title>Logical Replication for Blue Green Postgres Deploys</title>
      <link>https://muhammadamal.my.id/blog/logical-replication-for-blue-green-postgres-deploys/</link>
      <pubDate>Fri, 15 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/logical-replication-for-blue-green-postgres-deploys/</guid>
      <description>End-to-end blue green Postgres cutover using logical replication on 17, with the cutover runbook, slot sync, and the failure modes.</description>
    </item>
    <item>
      <title>pgvector Tuning in 2024, HNSW and IVFFlat in Production</title>
      <link>https://muhammadamal.my.id/blog/pgvector-tuning-in-2024-hnsw-and-ivfflat-in-production/</link>
      <pubDate>Wed, 13 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/pgvector-tuning-in-2024-hnsw-and-ivfflat-in-production/</guid>
      <description>How to size and tune pgvector 0.7.4 indexes in production, with concrete parameters, recall benchmarks, and the failure modes nobody mentions.</description>
    </item>
    <item>
      <title>Choosing the Right Postgres Index, BRIN, GIN, HNSW, IVFFlat</title>
      <link>https://muhammadamal.my.id/blog/choosing-the-right-postgres-index-brin-gin-hnsw-ivfflat/</link>
      <pubDate>Mon, 11 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/choosing-the-right-postgres-index-brin-gin-hnsw-ivfflat/</guid>
      <description>When to reach for BRIN, GIN, GiST, BTREE, HNSW or IVFFlat in Postgres 17, with realistic sizing and a flowchart-style decision tree.</description>
    </item>
    <item>
      <title>Reading EXPLAIN ANALYZE Like a Senior DBA</title>
      <link>https://muhammadamal.my.id/blog/reading-explain-analyze-like-a-senior-dba/</link>
      <pubDate>Fri, 08 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reading-explain-analyze-like-a-senior-dba/</guid>
      <description>A senior DBA&amp;rsquo;s reading order for EXPLAIN ANALYZE output in Postgres 17, with real plans, estimation skew detection, and BUFFERS interpretation.</description>
    </item>
    <item>
      <title>Connection Pooling with PgBouncer, Setup That Survives 10K Clients</title>
      <link>https://muhammadamal.my.id/blog/connection-pooling-with-pgbouncer-setup-that-survives-10k-clients/</link>
      <pubDate>Wed, 06 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connection-pooling-with-pgbouncer-setup-that-survives-10k-clients/</guid>
      <description>Hands-on guide to running PgBouncer 1.23 in front of Postgres 17 at 10k+ client connections, with config, ops, and the gotchas.</description>
    </item>
    <item>
      <title>PostgreSQL 17 in Production, Features Worth Using</title>
      <link>https://muhammadamal.my.id/blog/postgres-17-in-production-features-worth-using/</link>
      <pubDate>Mon, 04 Nov 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-17-in-production-features-worth-using/</guid>
      <description>Practical look at the Postgres 17 features that move the needle for production workloads, with real psql snippets and upgrade notes.</description>
    </item>
    <item>
      <title>LLM Red Teaming, Practical Techniques for 2024</title>
      <link>https://muhammadamal.my.id/blog/llm-red-teaming-practical-techniques-2024/</link>
      <pubDate>Wed, 30 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/llm-red-teaming-practical-techniques-2024/</guid>
      <description>How to run an LLM red team that produces actionable findings instead of party tricks, with attack inventory and triage flow.</description>
    </item>
    <item>
      <title>Container Image Signing with cosign and Sigstore in 2024</title>
      <link>https://muhammadamal.my.id/blog/container-image-signing-cosign-sigstore-2024/</link>
      <pubDate>Mon, 28 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/container-image-signing-cosign-sigstore-2024/</guid>
      <description>A working guide to signing container images with cosign and Sigstore, including keyless signing and Kubernetes admission enforcement.</description>
    </item>
    <item>
      <title>Securing RAG Systems Against Data Exfiltration</title>
      <link>https://muhammadamal.my.id/blog/securing-rag-systems-against-data-exfiltration/</link>
      <pubDate>Wed, 23 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securing-rag-systems-against-data-exfiltration/</guid>
      <description>How to design RAG systems so that prompt injection and over-eager retrieval don&amp;rsquo;t become an exfiltration channel.</description>
    </item>
    <item>
      <title>SAST in 2024, Semgrep and AI Triage for Real Codebases</title>
      <link>https://muhammadamal.my.id/blog/sast-semgrep-ai-triage-real-codebases/</link>
      <pubDate>Mon, 21 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sast-semgrep-ai-triage-real-codebases/</guid>
      <description>Combining Semgrep with LLM triage to make SAST output actionable on production-sized codebases.</description>
    </item>
    <item>
      <title>Secrets Scanning in 2024, TruffleHog and Gitleaks in CI</title>
      <link>https://muhammadamal.my.id/blog/secrets-scanning-trufflehog-gitleaks-ci-2024/</link>
      <pubDate>Wed, 16 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/secrets-scanning-trufflehog-gitleaks-ci-2024/</guid>
      <description>A working setup for secrets scanning across TruffleHog and Gitleaks, with pre-receive enforcement and verifier-based prioritization.</description>
    </item>
    <item>
      <title>Auto Remediation for Cloud Security Findings</title>
      <link>https://muhammadamal.my.id/blog/auto-remediation-cloud-security-findings/</link>
      <pubDate>Mon, 14 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/auto-remediation-cloud-security-findings/</guid>
      <description>A pragmatic blueprint for safe auto remediation of cloud security findings across AWS Security Hub and GCP SCC.</description>
    </item>
    <item>
      <title>AI Assisted Detection Rules, Sigma and YARA in 2024</title>
      <link>https://muhammadamal.my.id/blog/ai-assisted-detection-rules-sigma-yara-2024/</link>
      <pubDate>Wed, 09 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ai-assisted-detection-rules-sigma-yara-2024/</guid>
      <description>A pragmatic look at LLM-assisted authoring of Sigma and YARA detections, including evaluation harnesses and review gates.</description>
    </item>
    <item>
      <title>Prompt Injection Defenses in LLM Apps, Patterns for 2024</title>
      <link>https://muhammadamal.my.id/blog/prompt-injection-defenses-llm-apps-2024/</link>
      <pubDate>Mon, 07 Oct 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/prompt-injection-defenses-llm-apps-2024/</guid>
      <description>Hardening patterns for prompt injection across system prompts, tools, and retrieval, with code and policy guidance.</description>
    </item>
    <item>
      <title>Auditing Low Code Workflows for SOC 2 and ISO 27001</title>
      <link>https://muhammadamal.my.id/blog/auditing-low-code-workflows-soc2-iso27001/</link>
      <pubDate>Wed, 25 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/auditing-low-code-workflows-soc2-iso27001/</guid>
      <description>Auditing low-code workflows for SOC 2 and ISO 27001. Control mapping for n8n and Make, evidence collection, and what auditors actually want to see.</description>
    </item>
    <item>
      <title>When Pro Code Wins Over Low Code, A Decision Matrix</title>
      <link>https://muhammadamal.my.id/blog/when-pro-code-wins-over-low-code-decision-matrix/</link>
      <pubDate>Mon, 23 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/when-pro-code-wins-over-low-code-decision-matrix/</guid>
      <description>When pro-code beats low-code. A decision matrix on latency, consistency, complexity, audit, and ownership, with concrete thresholds for 2024.</description>
    </item>
    <item>
      <title>Identity Federation for Citizen Developers, Keycloak and Auth0</title>
      <link>https://muhammadamal.my.id/blog/identity-federation-citizen-developers-keycloak-auth0/</link>
      <pubDate>Wed, 18 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/identity-federation-citizen-developers-keycloak-auth0/</guid>
      <description>Identity federation for low-code platforms. Keycloak 25 and Auth0 in front of n8n and Make, with SAML, OIDC, group claims, and operational notes.</description>
    </item>
    <item>
      <title>Building Reusable Connectors for n8n and Make in 2024</title>
      <link>https://muhammadamal.my.id/blog/reusable-connectors-n8n-make-2024/</link>
      <pubDate>Mon, 16 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/reusable-connectors-n8n-make-2024/</guid>
      <description>Reusable connectors for n8n and Make in 2024. Custom node code, OAuth scaffolding, dynamic options, and how to ship them to citizen devs without operational pain.</description>
    </item>
    <item>
      <title>Webhook Reliability Patterns, Retries, Idempotency, Signatures</title>
      <link>https://muhammadamal.my.id/blog/webhook-reliability-patterns-retries-idempotency-signatures/</link>
      <pubDate>Wed, 11 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/webhook-reliability-patterns-retries-idempotency-signatures/</guid>
      <description>Outbound webhook reliability done right. Retries with jitter, idempotency keys, HMAC-SHA256 signing, and a Go 1.23 reference implementation.</description>
    </item>
    <item>
      <title>Securely Exposing Enterprise APIs to Citizen Developers</title>
      <link>https://muhammadamal.my.id/blog/securely-exposing-enterprise-apis-citizen-developers/</link>
      <pubDate>Mon, 09 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securely-exposing-enterprise-apis-citizen-developers/</guid>
      <description>Exposing internal APIs to citizen devs safely. Kong 3.8 patterns, scoped tokens, rate limits, audit, and the bits that actually fail in practice.</description>
    </item>
    <item>
      <title>Self Hosting n8n for Engineering Teams in 2024</title>
      <link>https://muhammadamal.my.id/blog/self-hosting-n8n-engineering-teams-2024/</link>
      <pubDate>Wed, 04 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/self-hosting-n8n-engineering-teams-2024/</guid>
      <description>How to self-host n8n 1.58 properly. Postgres, queue mode, workers, secrets, upgrades, and the real operational footprint.</description>
    </item>
    <item>
      <title>Low Code in the Enterprise, A Pro Code Engineer&#39;s Honest View</title>
      <link>https://muhammadamal.my.id/blog/low-code-enterprise-pro-code-view/</link>
      <pubDate>Mon, 02 Sep 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/low-code-enterprise-pro-code-view/</guid>
      <description>Low-code in the enterprise from a pro-code engineer. What n8n and Make are good for, what they break, and how to engage as a backend team.</description>
    </item>
    <item>
      <title>Digital Twins for Industrial Systems, Real Telemetry Edition</title>
      <link>https://muhammadamal.my.id/blog/digital-twins-real-telemetry/</link>
      <pubDate>Fri, 23 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/digital-twins-real-telemetry/</guid>
      <description>Digital twins built on real telemetry, with state models, sync patterns and worthwhile use cases.</description>
    </item>
    <item>
      <title>Securing the OT IT Boundary in Industrial Networks</title>
      <link>https://muhammadamal.my.id/blog/securing-ot-it-boundary/</link>
      <pubDate>Wed, 21 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securing-ot-it-boundary/</guid>
      <description>Practical OT/IT boundary security in 2024, with segmentation, auth and monitoring.</description>
    </item>
    <item>
      <title>Real Time Anomaly Detection for IIoT Telemetry</title>
      <link>https://muhammadamal.my.id/blog/realtime-anomaly-detection-iiot/</link>
      <pubDate>Mon, 19 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/realtime-anomaly-detection-iiot/</guid>
      <description>Real-time anomaly detection for industrial telemetry, practical approaches and alert hygiene.</description>
    </item>
    <item>
      <title>Bridging OPC UA to MQTT and Kafka, A 2024 Playbook</title>
      <link>https://muhammadamal.my.id/blog/opcua-mqtt-kafka-bridging/</link>
      <pubDate>Fri, 16 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/opcua-mqtt-kafka-bridging/</guid>
      <description>Bridging OPC UA into MQTT and Kafka with open62541 1.4 and clean schemas.</description>
    </item>
    <item>
      <title>Time Series for IIoT, Timescale and InfluxDB Compared</title>
      <link>https://muhammadamal.my.id/blog/timeseries-timescale-influx-compared/</link>
      <pubDate>Wed, 14 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/timeseries-timescale-influx-compared/</guid>
      <description>TimescaleDB 2.16 versus InfluxDB 3.x for industrial telemetry, with the trade-offs that decide it.</description>
    </item>
    <item>
      <title>Edge AI on Industrial Gateways, TFLite and ONNX in 2024</title>
      <link>https://muhammadamal.my.id/blog/edge-ai-tflite-onnx-2024/</link>
      <pubDate>Mon, 12 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/edge-ai-tflite-onnx-2024/</guid>
      <description>Running ML on industrial gateways with TFLite 2.16 and ONNX Runtime 1.18 in 2024.</description>
    </item>
    <item>
      <title>Scaling MQTT Brokers, EMQX and HiveMQ in Production</title>
      <link>https://muhammadamal.my.id/blog/scaling-mqtt-emqx-hivemq/</link>
      <pubDate>Fri, 09 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/scaling-mqtt-emqx-hivemq/</guid>
      <description>Scaling EMQX 5.7 and HiveMQ 4.28 for industrial workloads, with concrete tuning.</description>
    </item>
    <item>
      <title>MQTT 5 for Industrial, The Features That Actually Pay Off</title>
      <link>https://muhammadamal.my.id/blog/mqtt5-industrial-features/</link>
      <pubDate>Wed, 07 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt5-industrial-features/</guid>
      <description>The MQTT 5 features worth using in industrial, and the ones that aren&amp;rsquo;t.</description>
    </item>
    <item>
      <title>Industrial IoT in 2024, A Reference Architecture That Scales</title>
      <link>https://muhammadamal.my.id/blog/iiot-reference-architecture-2024/</link>
      <pubDate>Mon, 05 Aug 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/iiot-reference-architecture-2024/</guid>
      <description>Reference IIoT architecture for 2024, edge to analytics, with the trade-offs that matter.</description>
    </item>
    <item>
      <title>mTLS, Service Mesh or Application Layer in 2024</title>
      <link>https://muhammadamal.my.id/blog/mtls-service-mesh-or-application-layer/</link>
      <pubDate>Wed, 24 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mtls-service-mesh-or-application-layer/</guid>
      <description>Choosing between mesh-terminated and application-terminated mTLS in 2024, with Envoy 1.30 and Go 1.22 implementations and the failure modes that decide it.</description>
    </item>
    <item>
      <title>OpenAPI First API Design in Go, oapi-codegen in 2024</title>
      <link>https://muhammadamal.my.id/blog/openapi-first-go-oapi-codegen/</link>
      <pubDate>Mon, 22 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/openapi-first-go-oapi-codegen/</guid>
      <description>How I run an OpenAPI-first workflow with oapi-codegen 2.x in Go 1.22, including schema patterns and CI discipline that keeps spec and code aligned.</description>
    </item>
    <item>
      <title>Rate Limiting at Scale, Token Bucket and Sliding Window in Redis</title>
      <link>https://muhammadamal.my.id/blog/rate-limiting-redis-token-bucket-sliding-window/</link>
      <pubDate>Wed, 17 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rate-limiting-redis-token-bucket-sliding-window/</guid>
      <description>Token bucket vs sliding window rate limiting in Redis, with Go code, Lua scripts, and the operational tradeoffs that decide which one to ship.</description>
    </item>
    <item>
      <title>Choosing an API Gateway in 2024, Kong, Tyk, and Envoy Gateway</title>
      <link>https://muhammadamal.my.id/blog/choosing-api-gateway-2024/</link>
      <pubDate>Mon, 15 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/choosing-api-gateway-2024/</guid>
      <description>Comparing Kong 3.7, Tyk, and Envoy Gateway in 2024 by the operational tradeoffs that actually decide gateway choice in production.</description>
    </item>
    <item>
      <title>Securing Go Microservices with JWT, Patterns That Hold Up</title>
      <link>https://muhammadamal.my.id/blog/securing-go-microservices-jwt/</link>
      <pubDate>Wed, 10 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/securing-go-microservices-jwt/</guid>
      <description>Production JWT patterns for Go microservices in 2024 using golang-jwt v5, covering signing, validation, and context plumbing.</description>
    </item>
    <item>
      <title>gRPC for Internal Services in Go, A buf Powered Workflow</title>
      <link>https://muhammadamal.my.id/blog/grpc-internal-services-go-buf/</link>
      <pubDate>Mon, 08 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-internal-services-go-buf/</guid>
      <description>How I wire up gRPC for internal Go services in 2024 with buf CLI 1.34, lint rules, and breaking change detection.</description>
    </item>
    <item>
      <title>Federated GraphQL with Apollo Router, Patterns for 2024</title>
      <link>https://muhammadamal.my.id/blog/federated-graphql-apollo-router/</link>
      <pubDate>Wed, 03 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/federated-graphql-apollo-router/</guid>
      <description>Federated GraphQL patterns I rely on with Apollo Router 1.48 in 2024, drawn from real subgraph deployments.</description>
    </item>
    <item>
      <title>GraphQL vs REST in 2024, An Honest Take After Five Years</title>
      <link>https://muhammadamal.my.id/blog/graphql-vs-rest-2024/</link>
      <pubDate>Mon, 01 Jul 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/graphql-vs-rest-2024/</guid>
      <description>An opinionated comparison of GraphQL and REST in 2024, drawn from production Go services, not benchmarks.</description>
    </item>
    <item>
      <title>Synthetic Monitoring and Canary Deploys, A Practical Pairing</title>
      <link>https://muhammadamal.my.id/blog/synthetic-monitoring-and-canary-deploys/</link>
      <pubDate>Wed, 26 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/synthetic-monitoring-and-canary-deploys/</guid>
      <description>Canaries catch regressions. Synthetics catch silent failures. Wire them together and you get progressive delivery that knows when to roll back without a human.</description>
    </item>
    <item>
      <title>Blameless Postmortems That Actually Change Behavior</title>
      <link>https://muhammadamal.my.id/blog/blameless-postmortems-that-actually-change-behavior/</link>
      <pubDate>Mon, 24 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/blameless-postmortems-that-actually-change-behavior/</guid>
      <description>Blameless doesn&amp;rsquo;t mean toothless. A postmortem template, the five questions that matter, and the followup ritual that closes the loop.</description>
    </item>
    <item>
      <title>Service Mesh Resilience, Istio Ambient vs Linkerd in 2024</title>
      <link>https://muhammadamal.my.id/blog/service-mesh-resilience-istio-ambient-vs-linkerd-2024/</link>
      <pubDate>Wed, 19 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/service-mesh-resilience-istio-ambient-vs-linkerd-2024/</guid>
      <description>Istio Ambient just hit GA. Linkerd 2.15 is still the simplicity champion. Here&amp;rsquo;s how they compare for the resilience patterns that actually matter.</description>
    </item>
    <item>
      <title>eBPF Plus OpenTelemetry, The Observability Pairing for 2024</title>
      <link>https://muhammadamal.my.id/blog/ebpf-plus-opentelemetry-observability-2024/</link>
      <pubDate>Mon, 17 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ebpf-plus-opentelemetry-observability-2024/</guid>
      <description>eBPF gives you kernel-truth signals without instrumenting code. OpenTelemetry gives you a vendor-neutral pipeline. Together they&amp;rsquo;re the cheapest observability you can stand up in 2024.</description>
    </item>
    <item>
      <title>Auto Remediation on Kubernetes, Argo Events and Policy as Code</title>
      <link>https://muhammadamal.my.id/blog/auto-remediation-kubernetes-argo-events-policy/</link>
      <pubDate>Wed, 12 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/auto-remediation-kubernetes-argo-events-policy/</guid>
      <description>Auto-remediation is high-leverage and high-risk. Argo Events plus Kyverno gives you declarative remediation. Here&amp;rsquo;s the pattern and the guardrails it needs.</description>
    </item>
    <item>
      <title>Chaos Engineering on Kubernetes, Litmus and Chaos Mesh in 2024</title>
      <link>https://muhammadamal.my.id/blog/chaos-engineering-kubernetes-litmus-chaos-mesh-2024/</link>
      <pubDate>Mon, 10 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/chaos-engineering-kubernetes-litmus-chaos-mesh-2024/</guid>
      <description>Litmus and Chaos Mesh have both matured. Here&amp;rsquo;s how to pick between them, the experiments worth running first, and the safety scaffolding nobody talks about.</description>
    </item>
    <item>
      <title>SLOs and Error Budgets That Engineers Actually Use</title>
      <link>https://muhammadamal.my.id/blog/slos-error-budgets-engineers-actually-use/</link>
      <pubDate>Wed, 05 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slos-error-budgets-engineers-actually-use/</guid>
      <description>SLOs are easy to write and hard to use. Here&amp;rsquo;s how to build budgets your team will reach for during incidents and planning, not just QBRs.</description>
    </item>
    <item>
      <title>Digital Immune Systems for Engineers, What Gartner Got Right</title>
      <link>https://muhammadamal.my.id/blog/digital-immune-systems-for-engineers/</link>
      <pubDate>Mon, 03 Jun 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/digital-immune-systems-for-engineers/</guid>
      <description>Cutting through the analyst gloss on Digital Immune Systems. Six concrete pillars, the ones worth your time, and the ones that are just rebrands.</description>
    </item>
    <item>
      <title>Evaluating LLM Agents, From Vibes to Regression Suites</title>
      <link>https://muhammadamal.my.id/blog/evaluating-llm-agents/</link>
      <pubDate>Fri, 24 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/evaluating-llm-agents/</guid>
      <description>A practical agent evaluation system with deterministic checks, LLM-as-judge rubrics, and the regression discipline that survives model upgrades.</description>
    </item>
    <item>
      <title>Cost Control for LLM Agents, Token Budgets and Anthropic Prompt Caching</title>
      <link>https://muhammadamal.my.id/blog/cost-control-for-llm-agents/</link>
      <pubDate>Wed, 22 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cost-control-for-llm-agents/</guid>
      <description>How to keep agent bills under control with hard budgets, per-step caps, model routing, and the prompt caching feature Anthropic just shipped.</description>
    </item>
    <item>
      <title>Guardrails for LLM Agents in 2024, Llama Guard, Rebuff, and NeMo</title>
      <link>https://muhammadamal.my.id/blog/guardrails-for-llm-agents-2024/</link>
      <pubDate>Mon, 20 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/guardrails-for-llm-agents-2024/</guid>
      <description>Where Llama Guard, Rebuff, and NeMo each earn their place in an agent guardrail stack, and the layered approach that keeps the false positive rate bearable.</description>
    </item>
    <item>
      <title>Memory for AI Agents, Short Term, Long Term, and What to Store Where</title>
      <link>https://muhammadamal.my.id/blog/memory-for-ai-agents/</link>
      <pubDate>Fri, 17 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/memory-for-ai-agents/</guid>
      <description>How to give agents memory without overstuffing the context window or building a vector database mausoleum, with concrete patterns and code.</description>
    </item>
    <item>
      <title>ReAct, Reflexion, and Planner Executor, Agent Loop Patterns That Work</title>
      <link>https://muhammadamal.my.id/blog/react-reflexion-planner-executor-agent-loops/</link>
      <pubDate>Wed, 15 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-reflexion-planner-executor-agent-loops/</guid>
      <description>Three agent loop patterns, when each is the right shape, and the code to build them with LangChain 0.1 and OpenAI&amp;rsquo;s function calling.</description>
    </item>
    <item>
      <title>Multi Agent Conversations with AutoGen, Patterns and Pitfalls</title>
      <link>https://muhammadamal.my.id/blog/multi-agent-conversations-with-autogen/</link>
      <pubDate>Mon, 13 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/multi-agent-conversations-with-autogen/</guid>
      <description>When AutoGen&amp;rsquo;s multi-agent model earns its keep, when it does not, and the patterns that prevent infinite loops and budget blowups.</description>
    </item>
    <item>
      <title>Designing Tools for LLM Agents, Function Schemas That Survive Production</title>
      <link>https://muhammadamal.my.id/blog/designing-tools-for-llm-agents/</link>
      <pubDate>Fri, 10 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/designing-tools-for-llm-agents/</guid>
      <description>The tool layer is where most agents quietly fail. This is the schema, validation, and error-design playbook that keeps yours working.</description>
    </item>
    <item>
      <title>Production Agents with LangGraph, State Machines Over Chains</title>
      <link>https://muhammadamal.my.id/blog/production-agents-langgraph-state-machines/</link>
      <pubDate>Wed, 08 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/production-agents-langgraph-state-machines/</guid>
      <description>A practical walkthrough of building agents that survive production with LangGraph state machines, checkpointing, and explicit edges.</description>
    </item>
    <item>
      <title>The Agentic AI Landscape in May 2024, LangGraph, AutoGen, CrewAI</title>
      <link>https://muhammadamal.my.id/blog/agentic-ai-landscape-may-2024/</link>
      <pubDate>Mon, 06 May 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/agentic-ai-landscape-may-2024/</guid>
      <description>Comparing the three agent frameworks that matter right now, with code, and the architectural decisions that follow from each.</description>
    </item>
    <item>
      <title>From VS Code to Neovim in 30 Days, A Senior Dev&#39;s Migration Plan</title>
      <link>https://muhammadamal.my.id/blog/from-vs-code-to-neovim-in-30-days-a-senior-devs-migration-plan/</link>
      <pubDate>Wed, 24 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/from-vs-code-to-neovim-in-30-days-a-senior-devs-migration-plan/</guid>
      <description>A pragmatic 30-day plan for migrating from VS Code to Neovim as a senior developer.</description>
    </item>
    <item>
      <title>AI Assist in Neovim, Copilot, Codeium, and ChatGPT in 2024</title>
      <link>https://muhammadamal.my.id/blog/ai-assist-in-neovim-copilot-codeium-and-chatgpt-in-2024/</link>
      <pubDate>Mon, 22 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ai-assist-in-neovim-copilot-codeium-and-chatgpt-in-2024/</guid>
      <description>How Copilot, Codeium, and ChatGPT integrations stack up in Neovim in 2024.</description>
    </item>
    <item>
      <title>Debugging in Neovim with nvim-dap, Go and Python in 2024</title>
      <link>https://muhammadamal.my.id/blog/debugging-in-neovim-with-nvim-dap-go-and-python-in-2024/</link>
      <pubDate>Wed, 17 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/debugging-in-neovim-with-nvim-dap-go-and-python-in-2024/</guid>
      <description>Configure nvim-dap for real debugging in Go and Python projects from Neovim.</description>
    </item>
    <item>
      <title>Tmux and Neovim Together, A Keyboard Only Workflow That Sticks</title>
      <link>https://muhammadamal.my.id/blog/tmux-and-neovim-together-a-keyboard-only-workflow-that-sticks/</link>
      <pubDate>Mon, 15 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/tmux-and-neovim-together-a-keyboard-only-workflow-that-sticks/</guid>
      <description>A keyboard-only workflow combining tmux and Neovim for backend development.</description>
    </item>
    <item>
      <title>Treesitter for Real Refactoring, Structural Edits in Neovim</title>
      <link>https://muhammadamal.my.id/blog/treesitter-for-real-refactoring-structural-edits-in-neovim/</link>
      <pubDate>Wed, 10 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/treesitter-for-real-refactoring-structural-edits-in-neovim/</guid>
      <description>How to use Treesitter for real structural refactoring in Neovim.</description>
    </item>
    <item>
      <title>Fast Code Navigation in Neovim, Telescope and fzf-lua Patterns</title>
      <link>https://muhammadamal.my.id/blog/fast-code-navigation-in-neovim-telescope-and-fzf-lua-patterns/</link>
      <pubDate>Mon, 08 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/fast-code-navigation-in-neovim-telescope-and-fzf-lua-patterns/</guid>
      <description>Practical navigation workflows in Neovim using telescope.nvim and fzf-lua.</description>
    </item>
    <item>
      <title>Bootstrapping Neovim with lazy.nvim and Mason, A Backend Dev Setup</title>
      <link>https://muhammadamal.my.id/blog/bootstrapping-neovim-with-lazy-nvim-and-mason-a-backend-dev-setup/</link>
      <pubDate>Wed, 03 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/bootstrapping-neovim-with-lazy-nvim-and-mason-a-backend-dev-setup/</guid>
      <description>How to bootstrap Neovim with lazy.nvim and Mason for backend development in 2024.</description>
    </item>
    <item>
      <title>Why Senior Developers Are Moving to Neovim in 2024</title>
      <link>https://muhammadamal.my.id/blog/why-senior-developers-are-moving-to-neovim-in-2024/</link>
      <pubDate>Mon, 01 Apr 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-senior-developers-are-moving-to-neovim-in-2024/</guid>
      <description>The technical and ergonomic reasons Neovim is winning over senior developers in 2024.</description>
    </item>
    <item>
      <title>Shipping Rust to Kubernetes, Smaller Images and Faster Cold Starts</title>
      <link>https://muhammadamal.my.id/blog/shipping-rust-kubernetes-distroless-docker-2024/</link>
      <pubDate>Wed, 27 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/shipping-rust-kubernetes-distroless-docker-2024/</guid>
      <description>Production guide to shipping Rust to Kubernetes with multi-stage Docker, distroless images, and cross-compilation.</description>
    </item>
    <item>
      <title>Rust Service Observability in 2024, Metrics, Logs, and Traces That Help</title>
      <link>https://muhammadamal.my.id/blog/rust-service-observability-metrics-logs-traces-2024/</link>
      <pubDate>Mon, 25 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-service-observability-metrics-logs-traces-2024/</guid>
      <description>Production observability for Rust services with the metrics crate, Prometheus, tracing, and OpenTelemetry.</description>
    </item>
    <item>
      <title>Safe Shared State in Rust, Arc, Mutex, and the Channel You Should Pick</title>
      <link>https://muhammadamal.my.id/blog/rust-shared-state-arc-mutex-channels-2024/</link>
      <pubDate>Wed, 20 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-shared-state-arc-mutex-channels-2024/</guid>
      <description>Practical guide to Arc, Mutex, RwLock, and channel choices for safe shared state in async and threaded Rust.</description>
    </item>
    <item>
      <title>Rust to WebAssembly at the Edge, Wasmtime and WASI in 2024</title>
      <link>https://muhammadamal.my.id/blog/rust-webassembly-edge-wasmtime-wasi-2024/</link>
      <pubDate>Mon, 18 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-webassembly-edge-wasmtime-wasi-2024/</guid>
      <description>Compile Rust to WebAssembly for edge runtimes with wasmtime 18, WASI Preview 2, and the component model.</description>
    </item>
    <item>
      <title>Embedded Rust in 2024, Embassy and the no_std Stack</title>
      <link>https://muhammadamal.my.id/blog/embedded-rust-embassy-no-std-2024/</link>
      <pubDate>Wed, 13 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/embedded-rust-embassy-no-std-2024/</guid>
      <description>Practical guide to embedded Rust in 2024 with embassy 0.5, no_std, and async on Cortex-M and ESP32 hardware.</description>
    </item>
    <item>
      <title>Building an HTTP Service with Axum 0.7, From Zero to Tracing</title>
      <link>https://muhammadamal.my.id/blog/axum-http-service-tracing-2024/</link>
      <pubDate>Mon, 11 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/axum-http-service-tracing-2024/</guid>
      <description>Axum 0.7 end-to-end. Extractors, error types, middleware layers, OpenTelemetry tracing. The setup that pays off by week two.</description>
    </item>
    <item>
      <title>Async Rust Without the Footguns, Tokio Patterns in 2024</title>
      <link>https://muhammadamal.my.id/blog/async-rust-tokio-patterns-2024/</link>
      <pubDate>Wed, 06 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/async-rust-tokio-patterns-2024/</guid>
      <description>Async Tokio patterns that survive prod. Cancellation, JoinSet, select, bounded channels. The footguns and how to dodge them.</description>
    </item>
    <item>
      <title>Rust in Production, Where the 2024 Stack Has Matured</title>
      <link>https://muhammadamal.my.id/blog/rust-production-2024-stack/</link>
      <pubDate>Mon, 04 Mar 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-production-2024-stack/</guid>
      <description>Rust in production 2024 — what&amp;rsquo;s mature, what still bites. Async runtimes, frameworks, observability, deploy. Honest survey for backend devs.</description>
    </item>
    <item>
      <title>Self-Service Infrastructure with Argo CD ApplicationSets</title>
      <link>https://muhammadamal.my.id/blog/argo-cd-applicationsets-self-service/</link>
      <pubDate>Mon, 29 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/argo-cd-applicationsets-self-service/</guid>
      <description>Argo CD ApplicationSets turn self-service GitOps real. Generators, multi-cluster fan-out, and the patterns that scale past 200 services.</description>
    </item>
    <item>
      <title>Workload Specifications with Score, Decoupling Code from Deploy</title>
      <link>https://muhammadamal.my.id/blog/score-workload-spec-platform/</link>
      <pubDate>Wed, 24 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/score-workload-spec-platform/</guid>
      <description>Score decouples app spec from deploy target. Same workload runs on K8s, ECS, or Nomad. What it actually buys you, where it falls short.</description>
    </item>
    <item>
      <title>Measuring Developer Experience, DORA Metrics in Practice</title>
      <link>https://muhammadamal.my.id/blog/developer-experience-metrics-dora-2024/</link>
      <pubDate>Mon, 22 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/developer-experience-metrics-dora-2024/</guid>
      <description>DX metrics that survive a year. DORA, SPACE, and the practical instrumentation for a platform team in 2024 without surveillance optics.</description>
    </item>
    <item>
      <title>Designing a Service Catalog Developers Actually Use</title>
      <link>https://muhammadamal.my.id/blog/service-catalog-backstage-design/</link>
      <pubDate>Wed, 17 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/service-catalog-backstage-design/</guid>
      <description>A Backstage service catalog that survives. Entity model, ownership, automation, and the rot patterns that kill it within a year.</description>
    </item>
    <item>
      <title>Crossplane vs Terraform for Platform Teams</title>
      <link>https://muhammadamal.my.id/blog/crossplane-vs-terraform-platform-teams/</link>
      <pubDate>Mon, 15 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/crossplane-vs-terraform-platform-teams/</guid>
      <description>Crossplane v1.14 vs Terraform 1.6 for platform teams. Honest trade-offs, drift handling, where each one belongs in your IDP.</description>
    </item>
    <item>
      <title>Golden Paths, How Self-Service Actually Sticks</title>
      <link>https://muhammadamal.my.id/blog/golden-paths-self-service-developer-experience/</link>
      <pubDate>Wed, 10 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/golden-paths-self-service-developer-experience/</guid>
      <description>Golden paths beat shelfware when they&amp;rsquo;re opinionated, versioned, and updateable. How to design templates devs don&amp;rsquo;t abandon at day 30.</description>
    </item>
    <item>
      <title>Building an Internal Developer Platform with Backstage and Kubernetes</title>
      <link>https://muhammadamal.my.id/blog/internal-developer-platform-backstage-kubernetes/</link>
      <pubDate>Mon, 08 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/internal-developer-platform-backstage-kubernetes/</guid>
      <description>Minimum viable IDP on Backstage 1.21 + K8s 1.29. Catalog model, scaffolder, what to ship in 90 days, what to defer.</description>
    </item>
    <item>
      <title>Why Platform Engineering Won the DevOps Debate in 2024</title>
      <link>https://muhammadamal.my.id/blog/platform-engineering-vs-devops-2024/</link>
      <pubDate>Wed, 03 Jan 2024 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/platform-engineering-vs-devops-2024/</guid>
      <description>Platform engineering replaced DevOps-for-everyone in 2024. What changed, what an IDP delivers, and why cognitive load is the real metric.</description>
    </item>
    <item>
      <title>2023 Year-End Retrospective, What I Learned, What I&#39;d Do Differently</title>
      <link>https://muhammadamal.my.id/blog/2023-year-end-retrospective/</link>
      <pubDate>Thu, 28 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/2023-year-end-retrospective/</guid>
      <description>Twelve months of leadership and team work, written honestly. Wins, misses, and what I&amp;rsquo;m taking into 2024.</description>
    </item>
    <item>
      <title>The 2023 LLM Tooling Retrospective, What Actually Changed About My Workflow</title>
      <link>https://muhammadamal.my.id/blog/2023-llm-tooling-retrospective/</link>
      <pubDate>Wed, 27 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/2023-llm-tooling-retrospective/</guid>
      <description>Which 2023 LLM tools actually earned their place in a senior engineer&amp;rsquo;s daily workflow, and which got dropped.</description>
    </item>
    <item>
      <title>Event Storming for Discovery, Drawing the Business on a Wall</title>
      <link>https://muhammadamal.my.id/blog/event-storming-for-discovery/</link>
      <pubDate>Fri, 22 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/event-storming-for-discovery/</guid>
      <description>Event storming is the fastest way to map a complex business domain. A practical guide to running your first session.</description>
    </item>
    <item>
      <title>Decision Logs and Async Leadership, Running a Team That Doesn&#39;t Share a Time Zone</title>
      <link>https://muhammadamal.my.id/blog/decision-logs-and-async-leadership/</link>
      <pubDate>Wed, 20 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/decision-logs-and-async-leadership/</guid>
      <description>Distributed teams fail when leaders lead synchronously. Decision logs and async habits that make it work.</description>
    </item>
    <item>
      <title>RFCs and ADRs as Leadership Tools, Writing Is the Job</title>
      <link>https://muhammadamal.my.id/blog/rfcs-and-adrs-as-leadership-tools/</link>
      <pubDate>Mon, 18 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rfcs-and-adrs-as-leadership-tools/</guid>
      <description>RFCs and ADRs are leverage, not process. Templates and the cultural moves that make them stick.</description>
    </item>
    <item>
      <title>Managing Multidisciplinary Teams, Why Most Cross-Functional Friction Is Structural</title>
      <link>https://muhammadamal.my.id/blog/managing-multidisciplinary-teams/</link>
      <pubDate>Wed, 13 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/managing-multidisciplinary-teams/</guid>
      <description>Cross-functional friction is usually about team structure, not personalities. A field guide to fixing the topology.</description>
    </item>
    <item>
      <title>Discovery Questionnaires and the Mom Test, Questions That Actually Surface Truth</title>
      <link>https://muhammadamal.my.id/blog/discovery-questionnaires-and-the-mom-test/</link>
      <pubDate>Mon, 11 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/discovery-questionnaires-and-the-mom-test/</guid>
      <description>Specific question patterns for discovery, borrowed from the Mom Test and refined across many projects.</description>
    </item>
    <item>
      <title>Consultative Discovery for Software Projects, Beyond the Requirements Doc</title>
      <link>https://muhammadamal.my.id/blog/consultative-discovery-for-software-projects/</link>
      <pubDate>Wed, 06 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/consultative-discovery-for-software-projects/</guid>
      <description>Stated requirements are almost never the real requirements. A framework for running discovery sessions that surface the actual problem.</description>
    </item>
    <item>
      <title>From Senior Engineer to Tech Lead, The Identity Shift Nobody Warns You About</title>
      <link>https://muhammadamal.my.id/blog/from-senior-engineer-to-tech-lead/</link>
      <pubDate>Mon, 04 Dec 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/from-senior-engineer-to-tech-lead/</guid>
      <description>The hardest part of becoming a tech lead isn&amp;rsquo;t the new responsibilities — it&amp;rsquo;s letting go of the identity that got you the role.</description>
    </item>
    <item>
      <title>Repository Pattern Done Right in PHP and Go, A Decade of Mistakes Distilled</title>
      <link>https://muhammadamal.my.id/blog/repository-pattern-done-right-php-and-go/</link>
      <pubDate>Thu, 26 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/repository-pattern-done-right-php-and-go/</guid>
      <description>The repository pattern, demystified. When to use it, when not to, and the specific mistakes I made over ten years. Real examples in PHP 8.2 and Go 1.21.</description>
    </item>
    <item>
      <title>Decoupling Laravel From Eloquent Without Fighting the Framework</title>
      <link>https://muhammadamal.my.id/blog/decoupling-laravel-from-eloquent-without-fighting-the-framework/</link>
      <pubDate>Mon, 23 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/decoupling-laravel-from-eloquent-without-fighting-the-framework/</guid>
      <description>How to decouple application code from Eloquent in Laravel 10 without ditching it. Mapping patterns, transaction boundaries, and the case for keeping Eloquent.</description>
    </item>
    <item>
      <title>Dependency Injection in Laravel 10, Container Patterns That Earn Their Keep</title>
      <link>https://muhammadamal.my.id/blog/dependency-injection-laravel-container-patterns/</link>
      <pubDate>Thu, 19 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/dependency-injection-laravel-container-patterns/</guid>
      <description>Practical Laravel 10 service container patterns: contextual bindings, scoped instances, and tagged services. With production examples and anti-patterns.</description>
    </item>
    <item>
      <title>Domain Layer Purity in Laravel 10, Entities, Value Objects, and Where Most Codebases Lose It</title>
      <link>https://muhammadamal.my.id/blog/domain-layer-purity-in-laravel-10/</link>
      <pubDate>Mon, 16 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/domain-layer-purity-in-laravel-10/</guid>
      <description>Building a real domain layer in Laravel 10 without Eloquent leaking through. Entities, value objects, and the discipline to keep them framework-free.</description>
    </item>
    <item>
      <title>Ports and Adapters in Go 1.21 with Wire and uber-go/fx</title>
      <link>https://muhammadamal.my.id/blog/ports-and-adapters-in-go-with-wire-and-fx/</link>
      <pubDate>Thu, 12 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ports-and-adapters-in-go-with-wire-and-fx/</guid>
      <description>Hexagonal architecture in idiomatic Go 1.21. When to use Wire, when to use fx, and when to just write the wiring by hand. With production-tested patterns.</description>
    </item>
    <item>
      <title>Hexagonal Architecture Explained for PHP and Go Developers</title>
      <link>https://muhammadamal.my.id/blog/hexagonal-architecture-explained-for-php-and-go-devs/</link>
      <pubDate>Mon, 09 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/hexagonal-architecture-explained-for-php-and-go-devs/</guid>
      <description>Hexagonal architecture, ports and adapters, explained without the dogma. With concrete PHP 8.2 and Go 1.21 code, and the parts I think Cockburn got right.</description>
    </item>
    <item>
      <title>Clean Architecture in PHP Without the Cult, A Pragmatic Take</title>
      <link>https://muhammadamal.my.id/blog/clean-architecture-php-without-the-cult/</link>
      <pubDate>Thu, 05 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/clean-architecture-php-without-the-cult/</guid>
      <description>Clean Architecture in PHP without the dogma. Use cases, entities, and where to stop folder-splitting. A pragmatic guide from a Laravel 10 production codebase.</description>
    </item>
    <item>
      <title>Upgrading to Laravel 10, A Real-World Checklist From a Production Codebase</title>
      <link>https://muhammadamal.my.id/blog/upgrading-laravel-10-real-world-checklist/</link>
      <pubDate>Mon, 02 Oct 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/upgrading-laravel-10-real-world-checklist/</guid>
      <description>What actually breaks when upgrading a Laravel 9 app to Laravel 10 in production. PHP 8.1 floor, native types, deprecations, and the migrations that bit me.</description>
    </item>
    <item>
      <title>Pod Security Standards in 2023, Migrating Off PSPs Without Breaking Everything</title>
      <link>https://muhammadamal.my.id/blog/pod-security-standards-migration/</link>
      <pubDate>Thu, 28 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/pod-security-standards-migration/</guid>
      <description>Migrating from PodSecurityPolicy to Pod Security Standards on Kubernetes 1.28 — namespace labels, audit-mode rollout, and the workloads guaranteed to break.</description>
    </item>
    <item>
      <title>SLSA v1.0 in Practice, Build Provenance Without Boiling the Ocean</title>
      <link>https://muhammadamal.my.id/blog/slsa-provenance-build-attestations/</link>
      <pubDate>Mon, 25 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slsa-provenance-build-attestations/</guid>
      <description>Pragmatic SLSA v1.0 provenance with GitHub Actions and Cosign — what Level 2 actually delivers, and the operational lift to reach Level 3.</description>
    </item>
    <item>
      <title>OPA 0.55 and Gatekeeper 3.13, Writing Admission Policies People Will Actually Maintain</title>
      <link>https://muhammadamal.my.id/blog/opa-gatekeeper-admission-policy/</link>
      <pubDate>Thu, 21 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/opa-gatekeeper-admission-policy/</guid>
      <description>Practical Gatekeeper 3.13 admission policy patterns — constraint templates, audit mode, mutation, and Rego that is actually maintainable.</description>
    </item>
    <item>
      <title>Falco 0.35 in Production, Runtime Detection Without the Alert Fatigue</title>
      <link>https://muhammadamal.my.id/blog/falco-runtime-security-kubernetes/</link>
      <pubDate>Mon, 18 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/falco-runtime-security-kubernetes/</guid>
      <description>Running Falco 0.35 in production Kubernetes with the modern eBPF driver — rule tuning, output routing to Slack and SIEM, and the defaults to switch off.</description>
    </item>
    <item>
      <title>Vault 1.14 Dynamic Secrets in Kubernetes, Past the Sidecar Demo</title>
      <link>https://muhammadamal.my.id/blog/vault-dynamic-secrets-kubernetes/</link>
      <pubDate>Thu, 14 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/vault-dynamic-secrets-kubernetes/</guid>
      <description>Running Vault 1.14 dynamic database secrets in Kubernetes 1.28 — injector vs CSI, lease renewal, and the failure modes that bite under load.</description>
    </item>
    <item>
      <title>SBOMs That Are Actually Useful, Syft, CycloneDX 1.5, and the Limits of Static Analysis</title>
      <link>https://muhammadamal.my.id/blog/sbom-syft-cyclonedx-pipeline/</link>
      <pubDate>Mon, 11 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sbom-syft-cyclonedx-pipeline/</guid>
      <description>Producing accurate SBOMs with Syft and CycloneDX 1.5, the gaps you will not see, and how to attach them as signed attestations.</description>
    </item>
    <item>
      <title>Keyless Container Signing With Cosign 2.2, A Setup That Survives an Audit</title>
      <link>https://muhammadamal.my.id/blog/sigstore-cosign-keyless-signing/</link>
      <pubDate>Thu, 07 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sigstore-cosign-keyless-signing/</guid>
      <description>Production-grade keyless container signing with Cosign 2.2 and Sigstore — the OIDC trust chain, Rekor verification, and air-gap caveats.</description>
    </item>
    <item>
      <title>Wiring Trivy 0.45 Into a CI Pipeline That Actually Blocks Bad Builds</title>
      <link>https://muhammadamal.my.id/blog/trivy-container-scanning-pipeline/</link>
      <pubDate>Mon, 04 Sep 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/trivy-container-scanning-pipeline/</guid>
      <description>Trivy 0.45 in CI: severity gating, ignore policies, DB caching, and the gotchas that bite teams shipping containers daily.</description>
    </item>
    <item>
      <title>Backpressure and Reliability Patterns for IIoT Pipelines</title>
      <link>https://muhammadamal.my.id/blog/iiot-backpressure-reliability-patterns/</link>
      <pubDate>Wed, 30 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/iiot-backpressure-reliability-patterns/</guid>
      <description>End-to-end backpressure, DLQs, and graceful degradation patterns for IIoT pipelines, edge to cloud.</description>
    </item>
    <item>
      <title>Bridging OPC UA to MQTT 5, Where OT Meets IT Without Pain</title>
      <link>https://muhammadamal.my.id/blog/opc-ua-to-mqtt-bridge/</link>
      <pubDate>Sat, 26 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/opc-ua-to-mqtt-bridge/</guid>
      <description>Translate OPC UA subscriptions to MQTT 5 topics for IIoT — node mapping, security, sampling, lifecycle.</description>
    </item>
    <item>
      <title>Running IIoT Workloads on K3s at the Edge, A Field Pattern</title>
      <link>https://muhammadamal.my.id/blog/edge-computing-k3s-iiot/</link>
      <pubDate>Wed, 23 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/edge-computing-k3s-iiot/</guid>
      <description>Deploy K3s on edge gateways for IIoT preprocessing, local rules, store-and-forward across 200 sites.</description>
    </item>
    <item>
      <title>Kafka 3.5 as the Durable Buffer for Industrial IoT Ingestion</title>
      <link>https://muhammadamal.my.id/blog/kafka-for-iiot-ingestion/</link>
      <pubDate>Sat, 19 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/kafka-for-iiot-ingestion/</guid>
      <description>Use Kafka 3.5 as the durable backbone between MQTT and IIoT consumers — topics, partitions, EOS.</description>
    </item>
    <item>
      <title>TimescaleDB 2.11 vs InfluxDB 2.7 for Industrial Sensor Storage</title>
      <link>https://muhammadamal.my.id/blog/timescaledb-vs-influxdb-sensor-storage/</link>
      <pubDate>Wed, 16 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/timescaledb-vs-influxdb-sensor-storage/</guid>
      <description>When to pick TimescaleDB 2.11 over InfluxDB 2.7 for IIoT — schema, joins, compression, continuous aggregates.</description>
    </item>
    <item>
      <title>From MQTT to InfluxDB 2.7, A Telegraf Pipeline That Won&#39;t Drop Data</title>
      <link>https://muhammadamal.my.id/blog/telegraf-influxdb-mqtt-pipeline/</link>
      <pubDate>Sat, 12 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/telegraf-influxdb-mqtt-pipeline/</guid>
      <description>Wire Telegraf 1.27 between MQTT and InfluxDB 2.7 with proper buffering, batching, and line-protocol.</description>
    </item>
    <item>
      <title>EMQX 5.1 Clustering for Multi-Site IIoT Without the Foot-Guns</title>
      <link>https://muhammadamal.my.id/blog/emqx-5-clustering-for-iiot/</link>
      <pubDate>Wed, 09 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/emqx-5-clustering-for-iiot/</guid>
      <description>Cluster EMQX 5.1 across plants with Mria core/replicant topology, auth, rules, and DR patterns.</description>
    </item>
    <item>
      <title>Tuning Eclipse Mosquitto 2.0 for 50k Industrial Sensors on One Box</title>
      <link>https://muhammadamal.my.id/blog/tuning-mosquitto-2-at-scale/</link>
      <pubDate>Sat, 05 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/tuning-mosquitto-2-at-scale/</guid>
      <description>Kernel, TLS, persistence, and ACL tuning to push Mosquitto 2.0.x past default limits for IIoT.</description>
    </item>
    <item>
      <title>Choosing an MQTT 5.0 Broker for Industrial IoT in 2023</title>
      <link>https://muhammadamal.my.id/blog/choosing-mqtt-5-broker-iiot/</link>
      <pubDate>Wed, 02 Aug 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/choosing-mqtt-5-broker-iiot/</guid>
      <description>Field-tested comparison of Mosquitto 2.0, EMQX 5.1, and HiveMQ 4 for IIoT workloads at scale.</description>
    </item>
    <item>
      <title>Rustls vs OpenSSL for Backend TLS in 2023</title>
      <link>https://muhammadamal.my.id/blog/rustls-vs-openssl-backend-tls/</link>
      <pubDate>Fri, 28 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rustls-vs-openssl-backend-tls/</guid>
      <description>When to pick rustls and when to stay with OpenSSL for Rust backend TLS — performance, deployment, and compliance trade-offs from production experience.</description>
    </item>
    <item>
      <title>Production HTTP APIs with axum 0.6</title>
      <link>https://muhammadamal.my.id/blog/axum-0-6-production-apis/</link>
      <pubDate>Tue, 25 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/axum-0-6-production-apis/</guid>
      <description>A production-shaped axum 0.6 service — state, extractors, middleware, tracing, and the patterns that survive load testing.</description>
    </item>
    <item>
      <title>Error Handling in Rust, thiserror, anyhow, and the Patterns That Scale</title>
      <link>https://muhammadamal.my.id/blog/error-handling-thiserror-anyhow/</link>
      <pubDate>Fri, 21 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/error-handling-thiserror-anyhow/</guid>
      <description>Rust error handling that holds up in production: thiserror for libraries, anyhow for applications, and the context patterns in between.</description>
    </item>
    <item>
      <title>Building Secure CLIs in Rust with clap 4</title>
      <link>https://muhammadamal.my.id/blog/building-secure-clis-clap-4/</link>
      <pubDate>Tue, 18 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/building-secure-clis-clap-4/</guid>
      <description>Design patterns for secure CLI tools in Rust using clap 4: secret handling, input validation, static binaries, and predictable exit codes.</description>
    </item>
    <item>
      <title>Async Rust with tokio 1.29, A Production Mental Model</title>
      <link>https://muhammadamal.my.id/blog/async-rust-tokio-1-29/</link>
      <pubDate>Fri, 14 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/async-rust-tokio-1-29/</guid>
      <description>A working model of async Rust on tokio 1.29 — futures, the runtime, cancellation, and the patterns that hold up in production.</description>
    </item>
    <item>
      <title>Memory Safety Without a Garbage Collector, What Rust Actually Guarantees</title>
      <link>https://muhammadamal.my.id/blog/memory-safety-without-gc/</link>
      <pubDate>Tue, 11 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/memory-safety-without-gc/</guid>
      <description>The real scope of Rust&amp;rsquo;s memory safety guarantees, the classes of bugs they eliminate, and the ones they don&amp;rsquo;t.</description>
    </item>
    <item>
      <title>Ownership and Borrowing in Practice, A Working Mental Model</title>
      <link>https://muhammadamal.my.id/blog/ownership-borrowing-in-practice/</link>
      <pubDate>Fri, 07 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/ownership-borrowing-in-practice/</guid>
      <description>A working mental model for Rust ownership and borrowing built from production backend code, not toy examples.</description>
    </item>
    <item>
      <title>Why Rust Is Growing Fast in Backend Engineering</title>
      <link>https://muhammadamal.my.id/blog/why-rust-growing-fast-backend/</link>
      <pubDate>Tue, 04 Jul 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-rust-growing-fast-backend/</guid>
      <description>Why Rust adoption is accelerating in backend teams in 2023, the real production wins, and the friction points nobody talks about.</description>
    </item>
    <item>
      <title>Cluster Cost Engineering, Karpenter, KEDA, and the End of Static Node Groups</title>
      <link>https://muhammadamal.my.id/blog/cluster-cost-engineering-karpenter-keda/</link>
      <pubDate>Tue, 27 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cluster-cost-engineering-karpenter-keda/</guid>
      <description>Cluster autoscaler plus static node groups is the 2019 cost model. Here is how Karpenter and KEDA together turn capacity into a tracked, optimized line item.</description>
    </item>
    <item>
      <title>Advanced GitHub Actions, Reusable Workflows, OIDC, and Matrix Patterns That Don&#39;t Become Spaghetti</title>
      <link>https://muhammadamal.my.id/blog/advanced-github-actions-reusable-workflows-oidc/</link>
      <pubDate>Fri, 23 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/advanced-github-actions-reusable-workflows-oidc/</guid>
      <description>How to share CI logic across repos without copy-paste, authenticate to AWS and GCP without long-lived keys, and make matrix builds maintainable.</description>
    </item>
    <item>
      <title>Backstage 1.14 as the Backbone of an Internal Developer Platform</title>
      <link>https://muhammadamal.my.id/blog/backstage-internal-developer-platform-backbone/</link>
      <pubDate>Tue, 20 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/backstage-internal-developer-platform-backbone/</guid>
      <description>Backstage is glue, not a platform. Here is how to wire it to ArgoCD, GitHub Actions, Kubernetes, and Crossplane so it stops being a wiki and starts being a control plane.</description>
    </item>
    <item>
      <title>Progressive Delivery in 2023, Argo Rollouts and Flagger Side by Side</title>
      <link>https://muhammadamal.my.id/blog/progressive-delivery-argo-rollouts-flagger/</link>
      <pubDate>Fri, 16 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/progressive-delivery-argo-rollouts-flagger/</guid>
      <description>How to build a progressive delivery pipeline that actually rolls back on its own, using Argo Rollouts or Flagger with Prometheus-driven analysis.</description>
    </item>
    <item>
      <title>FluxCD 2.0 vs ArgoCD 2.7, A Real Comparison After Running Both in Production</title>
      <link>https://muhammadamal.my.id/blog/fluxcd-vs-argocd-real-comparison/</link>
      <pubDate>Tue, 13 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/fluxcd-vs-argocd-real-comparison/</guid>
      <description>ArgoCD wins on UX, Flux wins on composability. Here&amp;rsquo;s how to actually choose between them in 2023 based on team shape and operational appetite.</description>
    </item>
    <item>
      <title>Kubernetes 1.27 Multi-Tenancy, What&#39;s Actually Safe and What Still Isn&#39;t</title>
      <link>https://muhammadamal.my.id/blog/kubernetes-1-27-multi-tenancy-patterns/</link>
      <pubDate>Fri, 09 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/kubernetes-1-27-multi-tenancy-patterns/</guid>
      <description>Namespace-as-tenant works for most internal platforms. Here are the controls that make it safe on Kubernetes 1.27 and the failure modes that still demand cluster separation.</description>
    </item>
    <item>
      <title>ArgoCD ApplicationSets at Scale, A Multi-Tenant Pattern That Survives 200 Services</title>
      <link>https://muhammadamal.my.id/blog/argocd-applicationsets-scale-multi-tenant/</link>
      <pubDate>Tue, 06 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/argocd-applicationsets-scale-multi-tenant/</guid>
      <description>How to structure ArgoCD ApplicationSets, generators, and AppProjects so one platform team can serve dozens of stream teams without becoming a bottleneck.</description>
    </item>
    <item>
      <title>Platform Engineering Is Not DevOps Rebranded, Building an IDP With Team Topologies in Mind</title>
      <link>https://muhammadamal.my.id/blog/platform-engineering-team-topologies-idp/</link>
      <pubDate>Fri, 02 Jun 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/platform-engineering-team-topologies-idp/</guid>
      <description>Platform engineering treats the platform as a product. Here is how Team Topologies, golden paths, and a thin-slice IDP actually change how teams ship.</description>
    </item>
    <item>
      <title>Building a Unified Developer Productivity Dashboard With n8n, Postgres, and Metabase</title>
      <link>https://muhammadamal.my.id/blog/unified-developer-productivity-dashboard/</link>
      <pubDate>Tue, 30 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/unified-developer-productivity-dashboard/</guid>
      <description>How to build a developer productivity dashboard people will actually use: data model, ingestion via n8n, metric definitions, and how to avoid the vanity-metrics trap.</description>
    </item>
    <item>
      <title>n8n vs Zapier vs Power Automate for Engineering Teams, An Honest Comparison</title>
      <link>https://muhammadamal.my.id/blog/n8n-vs-zapier-vs-power-automate-dev-teams/</link>
      <pubDate>Thu, 25 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-vs-zapier-vs-power-automate-dev-teams/</guid>
      <description>Where n8n, Zapier, and Power Automate each make sense for engineering teams in 2023. Pricing math, extensibility, ops burden, governance, and a decision framework that&amp;rsquo;s served me well.</description>
    </item>
    <item>
      <title>Slack-Driven Approval Flows for Dev Backlogs With n8n and Block Kit</title>
      <link>https://muhammadamal.my.id/blog/slack-approval-flows-dev-backlogs/</link>
      <pubDate>Tue, 23 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slack-approval-flows-dev-backlogs/</guid>
      <description>How to keep humans in the loop without breaking flow: Slack-driven approvals for backlog automation. Block Kit, interactivity URLs, signing, and the audit story that matters.</description>
    </item>
    <item>
      <title>Two-Way Sync Between Jira and GitHub Issues Without Losing Your Mind</title>
      <link>https://muhammadamal.my.id/blog/jira-github-issues-two-way-sync/</link>
      <pubDate>Thu, 18 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/jira-github-issues-two-way-sync/</guid>
      <description>Designing a two-way Jira &amp;lt;-&amp;gt; GitHub Issues sync that survives webhook loops, conflicting edits, and field-mapping mismatches. The patterns that actually work in production.</description>
    </item>
    <item>
      <title>Auto-Triaging PMO Tickets With n8n and OpenAI, Lessons From Three Months In</title>
      <link>https://muhammadamal.my.id/blog/auto-triage-pmo-tickets-openai-n8n/</link>
      <pubDate>Tue, 16 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/auto-triage-pmo-tickets-openai-n8n/</guid>
      <description>Three months of using GPT-4 to triage incoming tickets in n8n. Prompt patterns, structured output via function calling, cost containment, and where to leave the human in the loop.</description>
    </item>
    <item>
      <title>Orchestrating GitHub Actions From n8n, Webhooks, Dispatch, and Sanity</title>
      <link>https://muhammadamal.my.id/blog/github-actions-n8n-webhook-orchestration/</link>
      <pubDate>Thu, 11 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/github-actions-n8n-webhook-orchestration/</guid>
      <description>Practical guide to triggering GitHub Actions from n8n: repository_dispatch vs workflow_dispatch, GitHub App auth, webhook signing, and where to draw the orchestration boundary.</description>
    </item>
    <item>
      <title>Linear&#39;s GraphQL API for Backlog Sync, A Backend Engineer&#39;s Field Notes</title>
      <link>https://muhammadamal.my.id/blog/linear-graphql-api-backlog-sync/</link>
      <pubDate>Tue, 09 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/linear-graphql-api-backlog-sync/</guid>
      <description>How to actually use the Linear GraphQL API for backlog automation: SDK trade-offs, cursor pagination, webhook verification, and sync patterns that don&amp;rsquo;t deadlock.</description>
    </item>
    <item>
      <title>Jira REST API v3, Automation Patterns That Don&#39;t Hate You Back</title>
      <link>https://muhammadamal.my.id/blog/jira-rest-api-v3-automation-patterns/</link>
      <pubDate>Thu, 04 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/jira-rest-api-v3-automation-patterns/</guid>
      <description>Hard-won lessons from wiring Jira Cloud into n8n and Node automations. Auth, ADF documents, JQL pagination, webhook signatures, and the gotchas that ate my week.</description>
    </item>
    <item>
      <title>Self-Hosting n8n for Engineering Teams, A Pragmatic Setup Guide</title>
      <link>https://muhammadamal.my.id/blog/n8n-self-hosted-dev-teams/</link>
      <pubDate>Tue, 02 May 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-self-hosted-dev-teams/</guid>
      <description>A pragmatic guide to deploying n8n self-hosted for dev teams: Docker Compose, Postgres backend, queue mode with Redis, and the gotchas nobody warns you about.</description>
    </item>
    <item>
      <title>Testing gRPC Services in Go with testcontainers and bufconn</title>
      <link>https://muhammadamal.my.id/blog/testing-grpc-services-golang-testcontainers/</link>
      <pubDate>Thu, 30 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/testing-grpc-services-golang-testcontainers/</guid>
      <description>Unit, integration, and contract testing for Go gRPC services — bufconn, testcontainers-go, and where the lines belong.</description>
    </item>
    <item>
      <title>Observability for Go gRPC Services with OpenTelemetry</title>
      <link>https://muhammadamal.my.id/blog/observability-grpc-opentelemetry-golang/</link>
      <pubDate>Mon, 27 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/observability-grpc-opentelemetry-golang/</guid>
      <description>Traces, metrics, and logs in a Go gRPC service with OpenTelemetry — propagation, conventions, and sampling that scale.</description>
    </item>
    <item>
      <title>Connection Pooling for gRPC and Postgres in Go</title>
      <link>https://muhammadamal.my.id/blog/connection-pooling-grpc-postgres-golang/</link>
      <pubDate>Mon, 20 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/connection-pooling-grpc-postgres-golang/</guid>
      <description>Right-sizing pgx pools and gRPC client connections in Go — the tuning, lifecycle, and math that survives real traffic.</description>
    </item>
    <item>
      <title>gRPC Interceptors in Go, Auth, Logging, and Recovery</title>
      <link>https://muhammadamal.my.id/blog/grpc-interceptors-middleware-golang/</link>
      <pubDate>Thu, 16 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-interceptors-middleware-golang/</guid>
      <description>Unary and stream interceptors in gRPC-Go — the middleware patterns for auth, logging, and recovery you&amp;rsquo;ll actually run in prod.</description>
    </item>
    <item>
      <title>Context, Deadlines, and Cancellation in gRPC Microservices</title>
      <link>https://muhammadamal.my.id/blog/context-deadlines-grpc-microservices/</link>
      <pubDate>Mon, 13 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/context-deadlines-grpc-microservices/</guid>
      <description>Context propagation across gRPC boundaries — deadlines, cancellation, and the subtle bugs that hide between services.</description>
    </item>
    <item>
      <title>Goroutine Patterns for Production Go Microservices</title>
      <link>https://muhammadamal.my.id/blog/golang-goroutine-patterns-microservices/</link>
      <pubDate>Thu, 09 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/golang-goroutine-patterns-microservices/</guid>
      <description>Worker pools, fan-out/fan-in, errgroup, and rate-limited dispatch — Go concurrency patterns that survive real load.</description>
    </item>
    <item>
      <title>gRPC Streaming RPCs in Go, Server, Client, and Bidirectional</title>
      <link>https://muhammadamal.my.id/blog/grpc-streaming-rpcs-golang/</link>
      <pubDate>Mon, 06 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-streaming-rpcs-golang/</guid>
      <description>The four RPC types in gRPC explained with Go 1.20 examples — when streaming helps and when it just adds complexity.</description>
    </item>
    <item>
      <title>gRPC Basics in Go, From Proto to Production Server</title>
      <link>https://muhammadamal.my.id/blog/grpc-basics-golang-microservices/</link>
      <pubDate>Thu, 02 Mar 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-basics-golang-microservices/</guid>
      <description>A pragmatic walkthrough of gRPC fundamentals in Go 1.20: protobuf schemas, code generation, and server setup.</description>
    </item>
    <item>
      <title>TypeScript 5.0 Beta, What&#39;s Actually Changing</title>
      <link>https://muhammadamal.my.id/blog/typescript-5-0-beta-preview-decorators/</link>
      <pubDate>Mon, 27 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/typescript-5-0-beta-preview-decorators/</guid>
      <description>TypeScript 5.0 beta preview — new decorators, const type parameters, bundler resolution, and the speed improvements from the migration to ES modules.</description>
    </item>
    <item>
      <title>Type-Safe API Routes in Next.js 13</title>
      <link>https://muhammadamal.my.id/blog/type-safe-api-routes-nextjs-13/</link>
      <pubDate>Thu, 23 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/type-safe-api-routes-nextjs-13/</guid>
      <description>Building type-safe API routes in Next.js 13 with Zod, inferred types, and the new route handler conventions in app router.</description>
    </item>
    <item>
      <title>TypeScript Strict Mode, Which Flags Actually Pay for Themselves</title>
      <link>https://muhammadamal.my.id/blog/typescript-strict-mode-config-worth-it/</link>
      <pubDate>Mon, 20 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/typescript-strict-mode-config-worth-it/</guid>
      <description>A flag-by-flag tour of TypeScript strict mode in 2023 — what each setting prevents, what it costs, and what to add on top.</description>
    </item>
    <item>
      <title>React Server Components in Next.js 13, The Mental Model</title>
      <link>https://muhammadamal.my.id/blog/react-server-components-nextjs-13/</link>
      <pubDate>Thu, 16 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-server-components-nextjs-13/</guid>
      <description>How to think about React Server Components in Next.js 13. Composition rules, the client/server boundary, and where they break.</description>
    </item>
    <item>
      <title>Next.js 13 App Router, A Backend Dev&#39;s First Impressions</title>
      <link>https://muhammadamal.my.id/blog/nextjs-13-app-router-first-impressions/</link>
      <pubDate>Mon, 13 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-13-app-router-first-impressions/</guid>
      <description>Next.js 13 app router from a backend dev&amp;rsquo;s view: server components, data fetching, the still-beta status, and what production-ready looks like.</description>
    </item>
    <item>
      <title>Practical Patterns for the TypeScript 4.9 `satisfies` Operator</title>
      <link>https://muhammadamal.my.id/blog/typescript-4-9-satisfies-operator-patterns/</link>
      <pubDate>Thu, 09 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/typescript-4-9-satisfies-operator-patterns/</guid>
      <description>The satisfies operator in TypeScript 4.9 unlocks better config, routing, and enum-like patterns. Real production examples.</description>
    </item>
    <item>
      <title>Migrating a Large JavaScript Codebase to TypeScript Without Stopping Feature Work</title>
      <link>https://muhammadamal.my.id/blog/migrating-large-javascript-codebase-typescript/</link>
      <pubDate>Mon, 06 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/migrating-large-javascript-codebase-typescript/</guid>
      <description>Migrating a large JS codebase to TypeScript without freezing features. Incremental rollout, JSDoc bridges, CI gates, real timelines.</description>
    </item>
    <item>
      <title>Why TypeScript Is Winning Over JavaScript in 2023</title>
      <link>https://muhammadamal.my.id/blog/why-typescript-winning-over-javascript-2023/</link>
      <pubDate>Thu, 02 Feb 2023 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-typescript-winning-over-javascript-2023/</guid>
      <description>Why TypeScript adoption keeps growing in 2023. The 4.9 sweet spot, real team wins, and where JS holdouts still have a point.</description>
    </item>
    <item>
      <title>Productivity Metrics That Actually Matter</title>
      <link>https://muhammadamal.my.id/blog/engineering-productivity-metrics-2022/</link>
      <pubDate>Fri, 23 Dec 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/engineering-productivity-metrics-2022/</guid>
      <description>Engineering productivity metrics 2022: DORA, SPACE, what changes with AI. Anti-patterns.</description>
    </item>
    <item>
      <title>November Retro, Security Hardening Sprint</title>
      <link>https://muhammadamal.my.id/blog/november-retro-api-security/</link>
      <pubDate>Wed, 30 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/november-retro-api-security/</guid>
      <description>November retro: API security audits. What changed, what&amp;rsquo;s still open, reader notes.</description>
    </item>
    <item>
      <title>Audit Logging for Backend APIs</title>
      <link>https://muhammadamal.my.id/blog/backend-audit-logging/</link>
      <pubDate>Mon, 28 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/backend-audit-logging/</guid>
      <description>Backend audit logging: what to log, what not, immutable storage, retention.</description>
    </item>
    <item>
      <title>Input Validation and the OWASP Top 10</title>
      <link>https://muhammadamal.my.id/blog/input-validation-owasp-top-10/</link>
      <pubDate>Fri, 25 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/input-validation-owasp-top-10/</guid>
      <description>Input validation + OWASP Top 10: SQLi, XSS, SSRF, command injection. The discipline.</description>
    </item>
    <item>
      <title>CSRF Defense Patterns in 2022</title>
      <link>https://muhammadamal.my.id/blog/csrf-defense-patterns/</link>
      <pubDate>Wed, 23 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/csrf-defense-patterns/</guid>
      <description>CSRF defense: synchronizer tokens, double-submit, SameSite, custom headers. Layered approach.</description>
    </item>
    <item>
      <title>CORS, What It Actually Protects</title>
      <link>https://muhammadamal.my.id/blog/cors-security/</link>
      <pubDate>Mon, 21 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cors-security/</guid>
      <description>CORS demystified: same-origin policy, what it protects, preflight, safe configurations.</description>
    </item>
    <item>
      <title>API Keys vs OAuth for Third-Party Access</title>
      <link>https://muhammadamal.my.id/blog/api-keys-vs-oauth/</link>
      <pubDate>Fri, 18 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/api-keys-vs-oauth/</guid>
      <description>API keys vs OAuth for third-party access: use cases, security, scopes, rotation.</description>
    </item>
    <item>
      <title>Distributed Rate Limiting with Redis</title>
      <link>https://muhammadamal.my.id/blog/redis-rate-limiting-distributed/</link>
      <pubDate>Wed, 16 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/redis-rate-limiting-distributed/</guid>
      <description>Distributed rate limiting in Redis: token bucket via Lua, sliding window via sorted sets.</description>
    </item>
    <item>
      <title>Rate Limiting Algorithms, Token Bucket, Leaky Bucket, Sliding Window</title>
      <link>https://muhammadamal.my.id/blog/rate-limiting-algorithms/</link>
      <pubDate>Mon, 14 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rate-limiting-algorithms/</guid>
      <description>Rate limit algos: token bucket, leaky bucket, fixed + sliding window. When each wins.</description>
    </item>
    <item>
      <title>OAuth 2.1 vs OAuth 2.0, What Changed</title>
      <link>https://muhammadamal.my.id/blog/oauth-21-vs-20/</link>
      <pubDate>Fri, 11 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/oauth-21-vs-20/</guid>
      <description>OAuth 2.1: PKCE always, no implicit, no password grant. Aligning your implementation.</description>
    </item>
    <item>
      <title>Refresh Tokens and Token Revocation</title>
      <link>https://muhammadamal.my.id/blog/refresh-tokens-revocation/</link>
      <pubDate>Wed, 09 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/refresh-tokens-revocation/</guid>
      <description>Refresh tokens correctly: short access + long refresh, rotation, revocation lists, defeat theft.</description>
    </item>
    <item>
      <title>Why JWT for Sessions Is Usually Wrong</title>
      <link>https://muhammadamal.my.id/blog/jwt-for-sessions-usually-wrong/</link>
      <pubDate>Mon, 07 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/jwt-for-sessions-usually-wrong/</guid>
      <description>JWT vs server sessions. When JWT pays off, when it costs. Migration paths.</description>
    </item>
    <item>
      <title>JWT Done Right, Signing, Verifying, Rotating Keys</title>
      <link>https://muhammadamal.my.id/blog/jwt-done-right/</link>
      <pubDate>Fri, 04 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/jwt-done-right/</guid>
      <description>JWT done right: RS256/ES256, expiry, audience, JWKS rotation. Patterns that prevent disaster.</description>
    </item>
    <item>
      <title>Backend API Security in 2022, The Threat Model</title>
      <link>https://muhammadamal.my.id/blog/backend-api-security-2022/</link>
      <pubDate>Wed, 02 Nov 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/backend-api-security-2022/</guid>
      <description>Backend API security threat model 2022: real threats, working mitigations, priority order.</description>
    </item>
    <item>
      <title>October Retro, ETL Pragmatism</title>
      <link>https://muhammadamal.my.id/blog/october-retro-etl/</link>
      <pubDate>Mon, 31 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/october-retro-etl/</guid>
      <description>October retro: lightweight ETL shipped. What worked, what bounced.</description>
    </item>
    <item>
      <title>Monitoring ETL Pipelines, Lag, Errors, Throughput</title>
      <link>https://muhammadamal.my.id/blog/etl-monitoring-lag-errors/</link>
      <pubDate>Fri, 28 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/etl-monitoring-lag-errors/</guid>
      <description>ETL monitoring: lag, row counts, errors, throughput. Metrics + dashboards + alerts.</description>
    </item>
    <item>
      <title>Backfilling Historical Data Safely</title>
      <link>https://muhammadamal.my.id/blog/etl-backfill-historical/</link>
      <pubDate>Wed, 26 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/etl-backfill-historical/</guid>
      <description>Backfill safely: chunked, rate-limited, parallel, merge with live data.</description>
    </item>
    <item>
      <title>Postgres Bulk Loading, COPY and Prepared Statements</title>
      <link>https://muhammadamal.my.id/blog/postgres-bulk-loading-copy/</link>
      <pubDate>Mon, 24 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-bulk-loading-copy/</guid>
      <description>Postgres bulk loading: COPY beats INSERT 100x. UNLOGGED, index management, fast ETL writes.</description>
    </item>
    <item>
      <title>Debezium for Postgres → Kafka CDC</title>
      <link>https://muhammadamal.my.id/blog/debezium-postgres-cdc/</link>
      <pubDate>Fri, 21 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/debezium-postgres-cdc/</guid>
      <description>Debezium 2.0: Postgres → Kafka CDC setup, config, snapshot, ops gotchas.</description>
    </item>
    <item>
      <title>Kafka as a Sync Backbone</title>
      <link>https://muhammadamal.my.id/blog/kafka-sync-backbone/</link>
      <pubDate>Wed, 19 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/kafka-sync-backbone/</guid>
      <description>Kafka 3.2 as sync backbone: topic-per-table, consumers, when it pays off vs simpler tools.</description>
    </item>
    <item>
      <title>Schema Drift, Handling Source Changes Without Breaking Pipelines</title>
      <link>https://muhammadamal.my.id/blog/etl-schema-drift/</link>
      <pubDate>Mon, 17 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/etl-schema-drift/</guid>
      <description>ETL schema drift: detect, additive vs breaking, flexible patterns that don&amp;rsquo;t lose data.</description>
    </item>
    <item>
      <title>Idempotent Pipelines and Watermarks</title>
      <link>https://muhammadamal.my.id/blog/etl-idempotent-watermarks/</link>
      <pubDate>Fri, 14 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/etl-idempotent-watermarks/</guid>
      <description>Idempotent ETL: watermarks, upsert dedup, exactly-once, double-write failure modes.</description>
    </item>
    <item>
      <title>Building an ETL Pipeline in Go</title>
      <link>https://muhammadamal.my.id/blog/go-etl-pipeline/</link>
      <pubDate>Wed, 12 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-etl-pipeline/</guid>
      <description>Go ETL: pgx, COPY bulk, concurrent ETL stages. When Go beats Python.</description>
    </item>
    <item>
      <title>Building an ETL Pipeline in Python</title>
      <link>https://muhammadamal.my.id/blog/python-etl-pipeline/</link>
      <pubDate>Mon, 10 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/python-etl-pipeline/</guid>
      <description>Python ETL: SQLAlchemy, Polars, BigQuery client. Incremental sync, errors, monitoring.</description>
    </item>
    <item>
      <title>Postgres Logical Replication for CDC</title>
      <link>https://muhammadamal.my.id/blog/postgres-logical-replication-cdc/</link>
      <pubDate>Fri, 07 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-logical-replication-cdc/</guid>
      <description>Postgres logical replication for CDC: publications, slots, wal2json / pgoutput consumption.</description>
    </item>
    <item>
      <title>CDC vs Polling, Choosing Your Sync Strategy</title>
      <link>https://muhammadamal.my.id/blog/cdc-vs-polling/</link>
      <pubDate>Wed, 05 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cdc-vs-polling/</guid>
      <description>CDC vs polling for data sync. When each wins, ops trade-offs, hybrid approach.</description>
    </item>
    <item>
      <title>Why Lightweight ETL Beats Big Data Tools for Most Teams</title>
      <link>https://muhammadamal.my.id/blog/lightweight-etl-vs-big-data/</link>
      <pubDate>Mon, 03 Oct 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/lightweight-etl-vs-big-data/</guid>
      <description>Lightweight ETL: Python/Go beats Spark/Airflow for most teams. When &amp;lsquo;big data&amp;rsquo; is overkill.</description>
    </item>
    <item>
      <title>September Retro, One Stack to Watch Them All</title>
      <link>https://muhammadamal.my.id/blog/september-retro-observability/</link>
      <pubDate>Fri, 30 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/september-retro-observability/</guid>
      <description>September retro: full obs stack for factory. Wins, costs, cuts.</description>
    </item>
    <item>
      <title>Prometheus Cardinality and Cost Control</title>
      <link>https://muhammadamal.my.id/blog/prometheus-cardinality-cost/</link>
      <pubDate>Wed, 28 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/prometheus-cardinality-cost/</guid>
      <description>Control Prometheus cost: cardinality limits, drop high-card metrics, recording rules, retention math.</description>
    </item>
    <item>
      <title>Error Budgets and Burn Rates</title>
      <link>https://muhammadamal.my.id/blog/error-budgets-burn-rate/</link>
      <pubDate>Mon, 26 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/error-budgets-burn-rate/</guid>
      <description>Error budgets + burn rate alerts. Multi-window math, dashboards, action policies.</description>
    </item>
    <item>
      <title>Service-Level Objectives in Practice</title>
      <link>https://muhammadamal.my.id/blog/slo-practice/</link>
      <pubDate>Fri, 23 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slo-practice/</guid>
      <description>SLOs in practice: SLIs, targets, error budgets from Prometheus, org dynamics.</description>
    </item>
    <item>
      <title>Tempo for Distributed Tracing</title>
      <link>https://muhammadamal.my.id/blog/tempo-distributed-tracing/</link>
      <pubDate>Wed, 21 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/tempo-distributed-tracing/</guid>
      <description>Tempo 1.5: distributed tracing, OTel SDK for Go/Node, sampling, exploration in Grafana.</description>
    </item>
    <item>
      <title>Promtail Pipelines and Log Parsing</title>
      <link>https://muhammadamal.my.id/blog/promtail-pipelines-parsing/</link>
      <pubDate>Mon, 19 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/promtail-pipelines-parsing/</guid>
      <description>Promtail pipelines: JSON parse, label extraction, dropping, Docker + journald.</description>
    </item>
    <item>
      <title>Loki for Logs, Self-Hosted Aggregation</title>
      <link>https://muhammadamal.my.id/blog/loki-log-aggregation/</link>
      <pubDate>Fri, 16 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/loki-log-aggregation/</guid>
      <description>Loki 2.6: self-hosted logs, label index, LogQL, retention. Cheaper than ELK; where it doesn&amp;rsquo;t fit.</description>
    </item>
    <item>
      <title>Alerting with Prometheus Alertmanager</title>
      <link>https://muhammadamal.my.id/blog/prometheus-alertmanager/</link>
      <pubDate>Wed, 14 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/prometheus-alertmanager/</guid>
      <description>Alertmanager: routing, grouping, inhibition, silencing, Slack/PD. Useful, not noisy.</description>
    </item>
    <item>
      <title>Grafana Dashboards That Actually Help</title>
      <link>https://muhammadamal.my.id/blog/grafana-dashboards-that-help/</link>
      <pubDate>Mon, 12 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grafana-dashboards-that-help/</guid>
      <description>Grafana dashboards engineers use, not just look at. RED/USE, hierarchy, 6-panel rule.</description>
    </item>
    <item>
      <title>Instrumenting Node.js Services for Prometheus</title>
      <link>https://muhammadamal.my.id/blog/node-prometheus-instrumentation/</link>
      <pubDate>Fri, 09 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/node-prometheus-instrumentation/</guid>
      <description>Node + Prometheus via prom-client: defaults, HTTP middleware, business metrics, Express/Fastify.</description>
    </item>
    <item>
      <title>Instrumenting Go Services for Prometheus</title>
      <link>https://muhammadamal.my.id/blog/go-prometheus-instrumentation/</link>
      <pubDate>Wed, 07 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-prometheus-instrumentation/</guid>
      <description>Go + Prometheus: client_golang, counters, histograms, HTTP middleware, runtime metrics.</description>
    </item>
    <item>
      <title>Prometheus 101, Metrics, Scraping, and PromQL</title>
      <link>https://muhammadamal.my.id/blog/prometheus-101-metrics-promql/</link>
      <pubDate>Mon, 05 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/prometheus-101-metrics-promql/</guid>
      <description>Prometheus 2.37 basics: metric types, scraping, labels, PromQL with backend examples.</description>
    </item>
    <item>
      <title>Building an Observability Stack in 2022</title>
      <link>https://muhammadamal.my.id/blog/observability-stack-2022/</link>
      <pubDate>Fri, 02 Sep 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/observability-stack-2022/</guid>
      <description>Self-host obs stack 2022: Prometheus + Grafana + Loki + Tempo + Alertmanager. Metrics, logs, traces.</description>
    </item>
    <item>
      <title>August Retro, IIoT Production Lessons</title>
      <link>https://muhammadamal.my.id/blog/august-retro-iiot/</link>
      <pubDate>Mon, 29 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/august-retro-iiot/</guid>
      <description>August retro: IIoT lessons. Where web-backend instincts misled, what&amp;rsquo;s next.</description>
    </item>
    <item>
      <title>Securing MQTT, Auth, ACLs, and Certificate Rotation</title>
      <link>https://muhammadamal.my.id/blog/mqtt-security-acls-certificates/</link>
      <pubDate>Fri, 26 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt-security-acls-certificates/</guid>
      <description>MQTT security: TLS, per-device creds, ACLs, cert rotation. Real threats + mitigations.</description>
    </item>
    <item>
      <title>Alerting on Sensor Anomalies in IIoT</title>
      <link>https://muhammadamal.my.id/blog/iiot-anomaly-alerting/</link>
      <pubDate>Wed, 24 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/iiot-anomaly-alerting/</guid>
      <description>IIoT anomaly alerting: threshold, rate-of-change, missing-data. Grafana 9, Alertmanager.</description>
    </item>
    <item>
      <title>Real-Time Dashboards for IIoT with Grafana 9</title>
      <link>https://muhammadamal.my.id/blog/grafana-iiot-dashboards/</link>
      <pubDate>Mon, 22 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grafana-iiot-dashboards/</guid>
      <description>Grafana 9 dashboards for IIoT: panels, live queries, MQTT streaming, shop-floor displays.</description>
    </item>
    <item>
      <title>Bridging OPC UA to MQTT</title>
      <link>https://muhammadamal.my.id/blog/opc-ua-mqtt-bridge/</link>
      <pubDate>Fri, 19 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/opc-ua-mqtt-bridge/</guid>
      <description>OPC UA → MQTT bridge in 2022. Gateways, custom code, node selection, gotchas.</description>
    </item>
    <item>
      <title>Sparkplug B for Industrial OT</title>
      <link>https://muhammadamal.my.id/blog/sparkplug-b-industrial-ot/</link>
      <pubDate>Wed, 17 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sparkplug-b-industrial-ot/</guid>
      <description>Sparkplug B: MQTT spec for industrial OT. Birth/death, metrics, when to use.</description>
    </item>
    <item>
      <title>Ingesting MQTT into TimescaleDB</title>
      <link>https://muhammadamal.my.id/blog/mqtt-timescaledb-ingest/</link>
      <pubDate>Mon, 15 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt-timescaledb-ingest/</guid>
      <description>MQTT → TimescaleDB consumer in Go. Hypertables, COPY inserts, retention, backpressure.</description>
    </item>
    <item>
      <title>Reading Sensors from Go on the Edge</title>
      <link>https://muhammadamal.my.id/blog/go-sensor-reader-edge/</link>
      <pubDate>Fri, 12 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-sensor-reader-edge/</guid>
      <description>Go edge service: read sensors, publish to MQTT, handle disconnects. Working code.</description>
    </item>
    <item>
      <title>Sensor Data Schemas, JSON, Protobuf, CBOR</title>
      <link>https://muhammadamal.my.id/blog/sensor-data-schemas-json-protobuf-cbor/</link>
      <pubDate>Wed, 10 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/sensor-data-schemas-json-protobuf-cbor/</guid>
      <description>Sensor data formats: JSON, Protobuf, CBOR. When each wins on IIoT MQTT.</description>
    </item>
    <item>
      <title>Self-Hosting Mosquitto with TLS and Auth</title>
      <link>https://muhammadamal.my.id/blog/self-host-mosquitto-tls-auth/</link>
      <pubDate>Mon, 08 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/self-host-mosquitto-tls-auth/</guid>
      <description>Mosquitto 2.0 production setup. TLS, auth, ACLs, persistence, Compose stack.</description>
    </item>
    <item>
      <title>MQTT Broker Comparison, Mosquitto, EMQX, HiveMQ in 2022</title>
      <link>https://muhammadamal.my.id/blog/mqtt-broker-comparison-mosquitto-emqx-hivemq/</link>
      <pubDate>Fri, 05 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt-broker-comparison-mosquitto-emqx-hivemq/</guid>
      <description>MQTT broker picks: Mosquitto, EMQX, HiveMQ, VerneMQ. Capacity, clustering, license, ops.</description>
    </item>
    <item>
      <title>MQTT 101, Pub/Sub for the Edge</title>
      <link>https://muhammadamal.my.id/blog/mqtt-101-pub-sub-edge/</link>
      <pubDate>Wed, 03 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/mqtt-101-pub-sub-edge/</guid>
      <description>MQTT for backend devs: topics, QoS, retained, will, MQTT 5. How it differs from Kafka/AMQP.</description>
    </item>
    <item>
      <title>Why I&#39;m Touching Industrial IoT in 2022</title>
      <link>https://muhammadamal.my.id/blog/why-industrial-iot-2022/</link>
      <pubDate>Mon, 01 Aug 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-industrial-iot-2022/</guid>
      <description>IIoT in 2022 from a web-backend POV. MQTT, sensors, edge, what&amp;rsquo;s different.</description>
    </item>
    <item>
      <title>July Retro, Compose in Production-Adjacent Workflows</title>
      <link>https://muhammadamal.my.id/blog/july-retro-docker-compose/</link>
      <pubDate>Fri, 29 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/july-retro-docker-compose/</guid>
      <description>July retro: Compose patterns shipped. Mac perf, dev loop, where Compose ends.</description>
    </item>
    <item>
      <title>Docker Compose vs Kubernetes for Local Development</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-vs-kubernetes-local/</link>
      <pubDate>Wed, 27 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-vs-kubernetes-local/</guid>
      <description>Compose vs k3d/minikube/Kind for local dev. When each wins, parity vs simplicity, hybrid approach.</description>
    </item>
    <item>
      <title>Docker Compose for CI, Ephemeral Stacks per Test Run</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-ci-ephemeral-stacks/</link>
      <pubDate>Mon, 25 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-ci-ephemeral-stacks/</guid>
      <description>Compose in CI: ephemeral stacks per run, isolation, parallel safety, teardown, GH Actions.</description>
    </item>
    <item>
      <title>Docker Compose Resource Limits, Memory and CPU</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-resource-limits/</link>
      <pubDate>Fri, 22 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-resource-limits/</guid>
      <description>Compose resource limits: memory + CPU caps. deploy.resources syntax, tuning for JVM/Node/Go.</description>
    </item>
    <item>
      <title>Building Images Inside Docker Compose, build vs image</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-build-vs-image/</link>
      <pubDate>Wed, 20 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-build-vs-image/</guid>
      <description>Compose build vs image: build local vs pull, multi-stage targets, build args, caching.</description>
    </item>
    <item>
      <title>Networking in Docker Compose, Bridges, Aliases, External Networks</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-networking/</link>
      <pubDate>Mon, 18 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-networking/</guid>
      <description>Compose networking: bridge, aliases, external networks, cross-stack shared DBs.</description>
    </item>
    <item>
      <title>Docker Volumes vs Bind Mounts, When to Use Each</title>
      <link>https://muhammadamal.my.id/blog/docker-volumes-vs-bind-mounts/</link>
      <pubDate>Fri, 15 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-volumes-vs-bind-mounts/</guid>
      <description>Volumes vs bind mounts vs tmpfs: how each works, perf, when to use each.</description>
    </item>
    <item>
      <title>Compose Watch and Live Reload for Local Development</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-watch-live-reload/</link>
      <pubDate>Wed, 13 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-watch-live-reload/</guid>
      <description>Compose v2.6 watch: file-watch live reload, no bind mounts. Sync, rebuild, restart. Go/Node/Python.</description>
    </item>
    <item>
      <title>Healthchecks and Service Dependencies in Docker Compose</title>
      <link>https://muhammadamal.my.id/blog/compose-healthchecks-depends-on/</link>
      <pubDate>Mon, 11 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/compose-healthchecks-depends-on/</guid>
      <description>Compose healthchecks + depends_on conditions: service_healthy, started, completed_successfully.</description>
    </item>
    <item>
      <title>Environment Variables and Secrets in Docker Compose</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-env-secrets/</link>
      <pubDate>Fri, 08 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-env-secrets/</guid>
      <description>Compose env vars + secrets: .env, env_file, secrets top-level. Safe vs leaky patterns.</description>
    </item>
    <item>
      <title>Docker Compose Profiles, Opt-In Services Done Right</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-profiles/</link>
      <pubDate>Wed, 06 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-profiles/</guid>
      <description>Compose profiles: opt-in services, gotchas, depends_on combinations, patterns for big stacks.</description>
    </item>
    <item>
      <title>Multi-Service Docker Compose for Polyglot Stacks</title>
      <link>https://muhammadamal.my.id/blog/multi-service-compose-polyglot/</link>
      <pubDate>Mon, 04 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/multi-service-compose-polyglot/</guid>
      <description>Compose for polyglot dev: Go + Node + Python in one stack. Cross-repo build contexts, conventions.</description>
    </item>
    <item>
      <title>Beyond docker-compose up, Real-World Patterns in 2022</title>
      <link>https://muhammadamal.my.id/blog/beyond-docker-compose-up-2022-patterns/</link>
      <pubDate>Fri, 01 Jul 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/beyond-docker-compose-up-2022-patterns/</guid>
      <description>Compose v2.6 patterns: profiles, watch, secrets, healthchecks, depends-on. Scale past the README example.</description>
    </item>
    <item>
      <title>June Retro, Clean Architecture in Practice</title>
      <link>https://muhammadamal.my.id/blog/june-retro-clean-architecture/</link>
      <pubDate>Wed, 29 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/june-retro-clean-architecture/</guid>
      <description>June retro: Clean Arch in Go + Laravel. Where it paid off, where it overkilled.</description>
    </item>
    <item>
      <title>Testing Clean Architecture, Unit, Use Case, Integration</title>
      <link>https://muhammadamal.my.id/blog/clean-architecture-testing/</link>
      <pubDate>Mon, 27 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/clean-architecture-testing/</guid>
      <description>Test strategy for Clean Architecture: pure unit (domain), fast use case (fakes), integration (adapters).</description>
    </item>
    <item>
      <title>Eloquent vs Domain Models in Clean Architecture</title>
      <link>https://muhammadamal.my.id/blog/eloquent-vs-domain-models/</link>
      <pubDate>Fri, 24 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/eloquent-vs-domain-models/</guid>
      <description>Eloquent vs domain models in Clean Architecture: when to use as-is, when to wrap, conversion patterns.</description>
    </item>
    <item>
      <title>Laravel Service Container for Dependency Injection</title>
      <link>https://muhammadamal.my.id/blog/laravel-service-container-di/</link>
      <pubDate>Wed, 22 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/laravel-service-container-di/</guid>
      <description>Laravel service container for DI: bindings, singletons, contextual, explicit + testable wiring.</description>
    </item>
    <item>
      <title>Clean Architecture in Laravel 9, Project Layout</title>
      <link>https://muhammadamal.my.id/blog/laravel-9-clean-architecture/</link>
      <pubDate>Mon, 20 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/laravel-9-clean-architecture/</guid>
      <description>Clean Architecture in Laravel 9: layout, Domain/UseCase/Repository, Eloquent at edges, framework compromises.</description>
    </item>
    <item>
      <title>Adapters in Go, HTTP, gRPC, and Worker Patterns</title>
      <link>https://muhammadamal.my.id/blog/go-adapter-pattern/</link>
      <pubDate>Fri, 17 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-adapter-pattern/</guid>
      <description>Adapters in Go: HTTP, gRPC, workers. Translate between transport DTOs and use cases. Frameworks at edges.</description>
    </item>
    <item>
      <title>Use Cases in Go, Coordinating Domain Logic</title>
      <link>https://muhammadamal.my.id/blog/go-use-case-pattern/</link>
      <pubDate>Wed, 15 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-use-case-pattern/</guid>
      <description>Use cases in Go: one per operation, DTOs, dependency wiring, fast unit tests.</description>
    </item>
    <item>
      <title>Repositories and Interfaces in Go</title>
      <link>https://muhammadamal.my.id/blog/go-repository-pattern/</link>
      <pubDate>Mon, 13 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-repository-pattern/</guid>
      <description>Repository pattern in Go. Ports in use-case layer, Postgres implementations, transactions.</description>
    </item>
    <item>
      <title>Domain-Driven Entities in Go</title>
      <link>https://muhammadamal.my.id/blog/go-domain-entities/</link>
      <pubDate>Fri, 10 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-domain-entities/</guid>
      <description>Domain entities in Go: identity, invariants, constructors, value objects. Keep business logic out of frameworks.</description>
    </item>
    <item>
      <title>Dependency Injection in Go Without a Framework</title>
      <link>https://muhammadamal.my.id/blog/go-dependency-injection-no-framework/</link>
      <pubDate>Wed, 08 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-dependency-injection-no-framework/</guid>
      <description>Go DI without a framework. Constructor injection, interfaces, manual wire, when google/wire earns it.</description>
    </item>
    <item>
      <title>Clean Architecture in Go, Project Layout</title>
      <link>https://muhammadamal.my.id/blog/clean-architecture-go-layout/</link>
      <pubDate>Mon, 06 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/clean-architecture-go-layout/</guid>
      <description>Pragmatic Go layout for Clean Architecture. Folders, package boundaries, naming, Go-native patterns.</description>
    </item>
    <item>
      <title>Layers of Clean Architecture, Domain, Use Case, Adapter, Infra</title>
      <link>https://muhammadamal.my.id/blog/clean-architecture-layers/</link>
      <pubDate>Fri, 03 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/clean-architecture-layers/</guid>
      <description>Four layers of Clean Architecture: domain, use case, adapter, infra. What goes where + dependency rule.</description>
    </item>
    <item>
      <title>Why I&#39;m Trying Clean Architecture in 2022</title>
      <link>https://muhammadamal.my.id/blog/why-clean-architecture-in-2022/</link>
      <pubDate>Wed, 01 Jun 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-clean-architecture-in-2022/</guid>
      <description>Clean Architecture in 2022: why now, what it buys, what it costs. Pragmatic take.</description>
    </item>
    <item>
      <title>May Retro, A Month of Workflow Automation</title>
      <link>https://muhammadamal.my.id/blog/may-retro-workflow-automation/</link>
      <pubDate>Mon, 30 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/may-retro-workflow-automation/</guid>
      <description>May retro: n8n automations in prod. Numbers, wins, surprises, what to skip.</description>
    </item>
    <item>
      <title>Monitoring n8n in Production</title>
      <link>https://muhammadamal.my.id/blog/n8n-monitoring-production/</link>
      <pubDate>Fri, 27 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-monitoring-production/</guid>
      <description>Monitor n8n in prod: health checks, execution rates, Prometheus, log aggregation, useful dashboards.</description>
    </item>
    <item>
      <title>Securing n8n, Credentials, OAuth, and Encryption</title>
      <link>https://muhammadamal.my.id/blog/n8n-security-credentials-oauth/</link>
      <pubDate>Wed, 25 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-security-credentials-oauth/</guid>
      <description>Secure n8n: credentials manager, OAuth, encryption key mgmt, network exposure, audit checklist.</description>
    </item>
    <item>
      <title>Building a Standup Bot in n8n &#43; Slack</title>
      <link>https://muhammadamal.my.id/blog/n8n-slack-standup-bot/</link>
      <pubDate>Mon, 23 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-slack-standup-bot/</guid>
      <description>Standup bot in n8n + Slack: 9 AM DMs, collect, post summary. Modals + working workflow.</description>
    </item>
    <item>
      <title>Error Handling and Retries in n8n</title>
      <link>https://muhammadamal.my.id/blog/n8n-error-handling-retries/</link>
      <pubDate>Fri, 20 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-error-handling-retries/</guid>
      <description>n8n error handling: retries, error trigger workflows, dead-letters, alerting on consecutive failures.</description>
    </item>
    <item>
      <title>Webhooks 101 for Engineering Workflows</title>
      <link>https://muhammadamal.my.id/blog/webhooks-101-engineering-workflows/</link>
      <pubDate>Wed, 18 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/webhooks-101-engineering-workflows/</guid>
      <description>Webhooks for engineering automation. How they work, signatures, retries, idempotency, replay protection.</description>
    </item>
    <item>
      <title>Notion to Jira Sync with n8n</title>
      <link>https://muhammadamal.my.id/blog/notion-jira-sync-n8n/</link>
      <pubDate>Mon, 16 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/notion-jira-sync-n8n/</guid>
      <description>Notion → Jira sync with n8n. One-way and two-way patterns, dedup, conflict rules to prevent loops.</description>
    </item>
    <item>
      <title>Slack Slash Commands via n8n</title>
      <link>https://muhammadamal.my.id/blog/slack-slash-commands-n8n/</link>
      <pubDate>Fri, 13 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/slack-slash-commands-n8n/</guid>
      <description>Slack slash commands via n8n: app setup, signature verification, response handling, interactive responses.</description>
    </item>
    <item>
      <title>Auto-Assigning Jira Tickets from GitHub PR Events with n8n</title>
      <link>https://muhammadamal.my.id/blog/jira-auto-assignment-github-events/</link>
      <pubDate>Wed, 11 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/jira-auto-assignment-github-events/</guid>
      <description>n8n workflow: GitHub PR events → auto-assign + transition Jira tickets. Webhook → parser → Jira API.</description>
    </item>
    <item>
      <title>Connecting n8n to the Jira REST API v3</title>
      <link>https://muhammadamal.my.id/blog/n8n-jira-rest-api-v3/</link>
      <pubDate>Mon, 09 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-jira-rest-api-v3/</guid>
      <description>Connect n8n to Jira REST API v3. API token, built-in node, JQL, HTTP fallback for missing operations.</description>
    </item>
    <item>
      <title>n8n Workflow Basics, Triggers, Nodes, Connections</title>
      <link>https://muhammadamal.my.id/blog/n8n-workflow-basics-triggers-nodes/</link>
      <pubDate>Fri, 06 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/n8n-workflow-basics-triggers-nodes/</guid>
      <description>n8n workflows: triggers, nodes, connections, expressions, Code node, where the visual model ends.</description>
    </item>
    <item>
      <title>Self-Hosting n8n with Docker Compose</title>
      <link>https://muhammadamal.my.id/blog/self-host-n8n-docker-compose/</link>
      <pubDate>Wed, 04 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/self-host-n8n-docker-compose/</guid>
      <description>Self-host n8n with Docker Compose + Postgres + reverse proxy. Env vars + production setup.</description>
    </item>
    <item>
      <title>Why I&#39;m Building Internal Tools With n8n</title>
      <link>https://muhammadamal.my.id/blog/why-build-internal-tools-with-n8n/</link>
      <pubDate>Mon, 02 May 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-build-internal-tools-with-n8n/</guid>
      <description>n8n vs Zapier vs scripts for engineering internal tools. Self-hosted, OSS, code-friendly, no per-task billing.</description>
    </item>
    <item>
      <title>April Retro, React 18 and Next.js in Production</title>
      <link>https://muhammadamal.my.id/blog/april-retro-react-18-nextjs/</link>
      <pubDate>Fri, 29 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/april-retro-react-18-nextjs/</guid>
      <description>April retro: React 18 + Next.js 12 in production. Wins, surprises, bugs caught, what&amp;rsquo;s next.</description>
    </item>
    <item>
      <title>Deploying Next.js 12, Vercel vs Self-Hosted</title>
      <link>https://muhammadamal.my.id/blog/nextjs-deployment-vercel-vs-self-hosted/</link>
      <pubDate>Wed, 27 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-deployment-vercel-vs-self-hosted/</guid>
      <description>Next.js 12 deployment: Vercel vs self-hosted on Node/Docker/k8s. Feature parity, cost, when each wins.</description>
    </item>
    <item>
      <title>Image Optimization with next/image in Next.js 12</title>
      <link>https://muhammadamal.my.id/blog/nextjs-image-optimization/</link>
      <pubDate>Mon, 25 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-image-optimization/</guid>
      <description>next/image in Next.js 12. Layouts, sizes, lazy loading, WebP/AVIF, remote patterns, perf wins.</description>
    </item>
    <item>
      <title>Next.js 12 Middleware for Auth and Redirects</title>
      <link>https://muhammadamal.my.id/blog/nextjs-middleware-auth-redirects/</link>
      <pubDate>Fri, 22 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-middleware-auth-redirects/</guid>
      <description>Next.js 12 middleware. Edge auth, redirects, A/B tests, bot blocking. Patterns + limits.</description>
    </item>
    <item>
      <title>Next.js 12 Data Fetching, SSG, SSR, and ISR Explained</title>
      <link>https://muhammadamal.my.id/blog/nextjs-data-fetching-ssg-ssr-isr/</link>
      <pubDate>Wed, 20 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-data-fetching-ssg-ssr-isr/</guid>
      <description>Next.js 12 data fetching: SSG, SSR, ISR. getStaticProps, getServerSideProps, getStaticPaths, ISR. When each wins.</description>
    </item>
    <item>
      <title>Next.js 12 Routing, Pages, Dynamic, Catch-All, and Nested Layouts</title>
      <link>https://muhammadamal.my.id/blog/nextjs-routing-pages-dynamic/</link>
      <pubDate>Mon, 18 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/nextjs-routing-pages-dynamic/</guid>
      <description>Next.js 12 routing. File-based, dynamic, catch-all, optional, nested layouts, useRouter idioms.</description>
    </item>
    <item>
      <title>Migrating from Create React App to Next.js 12</title>
      <link>https://muhammadamal.my.id/blog/cra-to-nextjs-12-migration/</link>
      <pubDate>Fri, 15 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cra-to-nextjs-12-migration/</guid>
      <description>CRA → Next.js 12 in 2022. Pages, routing, env vars, build, what breaks.</description>
    </item>
    <item>
      <title>Upgrading a React 17 App to React 18, A Working Checklist</title>
      <link>https://muhammadamal.my.id/blog/upgrading-react-17-to-react-18/</link>
      <pubDate>Wed, 13 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/upgrading-react-17-to-react-18/</guid>
      <description>Concrete walkthrough: React 17 → 18 upgrade. Packages, createRoot, TS types, Strict Effects, library compat.</description>
    </item>
    <item>
      <title>React 18 New Hooks, useId, useSyncExternalStore, and When You&#39;ll Actually Use Them</title>
      <link>https://muhammadamal.my.id/blog/react-18-useid-usesyncexternalstore/</link>
      <pubDate>Mon, 11 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-18-useid-usesyncexternalstore/</guid>
      <description>React 18 new hooks: useId for SSR-safe IDs, useSyncExternalStore for external state, useInsertionEffect for CSS-in-JS.</description>
    </item>
    <item>
      <title>React 18 Automatic Batching, One Render Pass For All Your State Updates</title>
      <link>https://muhammadamal.my.id/blog/react-18-automatic-batching/</link>
      <pubDate>Fri, 08 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-18-automatic-batching/</guid>
      <description>React 18 batches all state updates, not just event handlers. flushSync to opt out. Free perf win for most apps.</description>
    </item>
    <item>
      <title>React 18 Suspense for Data Fetching (Without Server Components)</title>
      <link>https://muhammadamal.my.id/blog/react-suspense-data-fetching-2022/</link>
      <pubDate>Wed, 06 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-suspense-data-fetching-2022/</guid>
      <description>React 18 Suspense for data fetching today. SWR 1.3, React Query 4, working patterns, effect-related gotchas.</description>
    </item>
    <item>
      <title>React Concurrent Rendering, useTransition and useDeferredValue Explained</title>
      <link>https://muhammadamal.my.id/blog/react-concurrent-rendering-usetransition/</link>
      <pubDate>Mon, 04 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-concurrent-rendering-usetransition/</guid>
      <description>React 18 concurrent rendering. useTransition for non-urgent updates, useDeferredValue for derived values. When each wins.</description>
    </item>
    <item>
      <title>React 18 Is Here, What Actually Changed for App Developers</title>
      <link>https://muhammadamal.my.id/blog/react-18-changes-for-app-devs/</link>
      <pubDate>Fri, 01 Apr 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/react-18-changes-for-app-devs/</guid>
      <description>React 18 shipped Mar 2022. Concurrent rendering, automatic batching, new hooks, Suspense data fetching, Strict Effects.</description>
    </item>
    <item>
      <title>March Retro, What Rust Earned Its Keep For</title>
      <link>https://muhammadamal.my.id/blog/march-retro-rust-backend/</link>
      <pubDate>Wed, 30 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/march-retro-rust-backend/</guid>
      <description>One month of backend Rust. What stuck, what bounced, where it fits, what to warn the next person about.</description>
    </item>
    <item>
      <title>Rust vs Go for Backend APIs, When Each One Wins</title>
      <link>https://muhammadamal.my.id/blog/rust-vs-go-backend-api/</link>
      <pubDate>Mon, 28 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-vs-go-backend-api/</guid>
      <description>Rust vs Go for backend APIs in 2022. Compile times, perf, ergonomics, ecosystem, hiring. Honest after shipping both.</description>
    </item>
    <item>
      <title>Containerizing a Rust Service, A Sub-25MB Production Image</title>
      <link>https://muhammadamal.my.id/blog/rust-docker-image-small-distroless/</link>
      <pubDate>Fri, 25 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-docker-image-small-distroless/</guid>
      <description>Sub-25 MB Rust image. cargo-chef, musl static linking, distroless, BuildKit cache. Full Dockerfile + CI.</description>
    </item>
    <item>
      <title>Structured Logging in Rust with tracing</title>
      <link>https://muhammadamal.my.id/blog/rust-structured-logging-tracing/</link>
      <pubDate>Wed, 23 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-structured-logging-tracing/</guid>
      <description>Rust structured logging with tracing. Spans, events, request context, JSON output, production patterns.</description>
    </item>
    <item>
      <title>Serde JSON Patterns, Tagged Enums and the Tricks That Save Time</title>
      <link>https://muhammadamal.my.id/blog/rust-serde-json-patterns/</link>
      <pubDate>Mon, 21 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-serde-json-patterns/</guid>
      <description>Practical serde JSON patterns. Tagged enums, rename_all, flatten, custom serializers — handle real APIs cleanly.</description>
    </item>
    <item>
      <title>Postgres in Rust with sqlx, A Practical Setup</title>
      <link>https://muhammadamal.my.id/blog/rust-sqlx-postgres/</link>
      <pubDate>Fri, 18 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-sqlx-postgres/</guid>
      <description>Postgres in Rust with sqlx 0.5. Compile-time SQL checking, query macros, migrations, transactions, gotchas.</description>
    </item>
    <item>
      <title>Building a JSON API in Rust with Axum 0.4</title>
      <link>https://muhammadamal.my.id/blog/rust-json-api-axum/</link>
      <pubDate>Wed, 16 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-json-api-axum/</guid>
      <description>JSON API in Rust with Axum 0.4. Router, extractors, state, error handling, tower middleware. Minimal real backend.</description>
    </item>
    <item>
      <title>Async Rust with Tokio in 2022</title>
      <link>https://muhammadamal.my.id/blog/async-rust-tokio-2022/</link>
      <pubDate>Mon, 14 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/async-rust-tokio-2022/</guid>
      <description>Async Rust with Tokio. What async/await compiles to, picking a runtime, tasks vs threads, maintainable async patterns.</description>
    </item>
    <item>
      <title>Cargo Workspaces for Backend Services</title>
      <link>https://muhammadamal.my.id/blog/cargo-workspaces-backend-services/</link>
      <pubDate>Fri, 11 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/cargo-workspaces-backend-services/</guid>
      <description>Cargo workspaces for Rust backends. Layout, shared crates, per-binary builds, compile-time wins.</description>
    </item>
    <item>
      <title>Rust Error Handling, Result, ?, thiserror, anyhow</title>
      <link>https://muhammadamal.my.id/blog/rust-error-handling-result-thiserror/</link>
      <pubDate>Wed, 09 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-error-handling-result-thiserror/</guid>
      <description>Rust error handling. Result, ?, thiserror for libs, anyhow for apps. Patterns that replace try/catch.</description>
    </item>
    <item>
      <title>Rust Lifetimes Without the Fear</title>
      <link>https://muhammadamal.my.id/blog/rust-lifetimes-without-fear/</link>
      <pubDate>Mon, 07 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-lifetimes-without-fear/</guid>
      <description>Rust lifetimes demystified. Why they exist, what &amp;lsquo;a means, elision, and the three patterns that cover 95% of code.</description>
    </item>
    <item>
      <title>Rust Ownership and Borrowing for People Who Already Know Pointers</title>
      <link>https://muhammadamal.my.id/blog/rust-ownership-borrowing-for-go-devs/</link>
      <pubDate>Fri, 04 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/rust-ownership-borrowing-for-go-devs/</guid>
      <description>Rust ownership for people who know pointers. Move semantics, &amp;amp;T vs &amp;amp;mut T, three rules, patterns that click.</description>
    </item>
    <item>
      <title>Why I&#39;m Learning Rust in 2022 (as a Go Developer)</title>
      <link>https://muhammadamal.my.id/blog/why-learn-rust-in-2022/</link>
      <pubDate>Wed, 02 Mar 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-learn-rust-in-2022/</guid>
      <description>A Go dev picks up Rust in 2022. Where it wins, where it doesn&amp;rsquo;t, and what the first month feels like.</description>
    </item>
    <item>
      <title>Deploying Docker Images from GitHub Actions to Staging</title>
      <link>https://muhammadamal.my.id/blog/github-actions-deploy-docker-staging/</link>
      <pubDate>Mon, 28 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/github-actions-deploy-docker-staging/</guid>
      <description>GitHub Actions deploy to staging: build + push to GHCR + kubectl/SSH apply. OIDC over long-lived secrets. Working workflow.</description>
    </item>
    <item>
      <title>GitHub Actions Matrix Builds and Parallel Test Sharding</title>
      <link>https://muhammadamal.my.id/blog/github-actions-matrix-parallel-tests/</link>
      <pubDate>Fri, 25 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/github-actions-matrix-parallel-tests/</guid>
      <description>Matrix builds in GitHub Actions. Multi-version, multi-OS, parallel test sharding, fail-fast trade-offs.</description>
    </item>
    <item>
      <title>GitHub Actions Caching, actions/cache &#43; BuildKit Registry Cache</title>
      <link>https://muhammadamal.my.id/blog/github-actions-cache-buildkit/</link>
      <pubDate>Wed, 23 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/github-actions-cache-buildkit/</guid>
      <description>GitHub Actions cache strategies. actions/cache@v3 keys, BuildKit registry cache for Docker, and the fixes that cut builds 6× faster.</description>
    </item>
    <item>
      <title>GitHub Actions for Go Monorepos, A 2022 Setup</title>
      <link>https://muhammadamal.my.id/blog/github-actions-go-monorepo/</link>
      <pubDate>Mon, 21 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/github-actions-go-monorepo/</guid>
      <description>GitHub Actions for Go monorepos. Path filters, module cache, golangci-lint, race tests, sub-3-min CI.</description>
    </item>
    <item>
      <title>Postgres Multi-Column Indexes, Column Order Is Almost Everything</title>
      <link>https://muhammadamal.my.id/blog/postgres-multi-column-index-order/</link>
      <pubDate>Fri, 18 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-multi-column-index-order/</guid>
      <description>Multi-column index column order in Postgres. Leftmost prefix, INCLUDE, and the three patterns that decide useful vs useless.</description>
    </item>
    <item>
      <title>Postgres Partial Indexes That Make Slow Queries Disappear</title>
      <link>https://muhammadamal.my.id/blog/postgres-partial-indexes/</link>
      <pubDate>Wed, 16 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-partial-indexes/</guid>
      <description>Postgres partial indexes — index only the rows that matter. Four patterns that catch most production wins.</description>
    </item>
    <item>
      <title>Postgres Index Types, B-tree, GIN, GiST, BRIN, When Each One Wins</title>
      <link>https://muhammadamal.my.id/blog/postgres-index-types-btree-gin-gist-brin/</link>
      <pubDate>Mon, 14 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-index-types-btree-gin-gist-brin/</guid>
      <description>Postgres index types compared. B-tree, GIN, GiST, BRIN, Hash. When each wins, with real queries and trade-offs.</description>
    </item>
    <item>
      <title>PgBouncer Connection Pooling for Postgres, A Practical Setup</title>
      <link>https://muhammadamal.my.id/blog/pgbouncer-connection-pooling-postgres/</link>
      <pubDate>Fri, 11 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/pgbouncer-connection-pooling-postgres/</guid>
      <description>PgBouncer in front of Postgres 14. Transaction pooling, pool sizing, prepared-statement gotchas, deploy patterns.</description>
    </item>
    <item>
      <title>Postgres Autovacuum, When Defaults Fail and How to Fix Them</title>
      <link>https://muhammadamal.my.id/blog/postgres-autovacuum-tuning/</link>
      <pubDate>Wed, 09 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-autovacuum-tuning/</guid>
      <description>Autovacuum defaults fail on write-heavy tables. Spot the bloat, set per-table overrides, prove it works with metrics.</description>
    </item>
    <item>
      <title>Tuning Postgres Memory, shared_buffers, work_mem, effective_cache_size</title>
      <link>https://muhammadamal.my.id/blog/postgres-memory-shared-buffers-work-mem/</link>
      <pubDate>Mon, 07 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-memory-shared-buffers-work-mem/</guid>
      <description>Four Postgres memory settings that decide whether queries fit in RAM or spill. shared_buffers, work_mem, effective_cache_size, maintenance_work_mem.</description>
    </item>
    <item>
      <title>Reading the Postgres Query Planner, A Practical EXPLAIN Walkthrough</title>
      <link>https://muhammadamal.my.id/blog/postgres-query-planner-explain/</link>
      <pubDate>Fri, 04 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-query-planner-explain/</guid>
      <description>Read Postgres EXPLAIN ANALYZE without faking it. Plan nodes, cost vs actual, trouble patterns, and the fix per pattern.</description>
    </item>
    <item>
      <title>Postgres Performance Tuning, My 2022 Checklist</title>
      <link>https://muhammadamal.my.id/blog/postgres-performance-tuning-checklist/</link>
      <pubDate>Wed, 02 Feb 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/postgres-performance-tuning-checklist/</guid>
      <description>Practical Postgres 14 performance checklist. Memory, autovacuum, indexes, pooling, and the metrics that prove it worked.</description>
    </item>
    <item>
      <title>What I Learned Containerizing 11 Services in One Month</title>
      <link>https://muhammadamal.my.id/blog/lessons-containerizing-11-services/</link>
      <pubDate>Mon, 31 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/lessons-containerizing-11-services/</guid>
      <description>End-of-month retro on containerizing a monolith + extracting Go microservices. What worked, what failed, what I&amp;rsquo;d skip.</description>
    </item>
    <item>
      <title>Sharing a Postgres Database Between a Monolith and New Services</title>
      <link>https://muhammadamal.my.id/blog/shared-database-monolith-microservices/</link>
      <pubDate>Fri, 28 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/shared-database-monolith-microservices/</guid>
      <description>Sharing Postgres between monolith and microservices without coupling them. Schemas, roles, FK boundaries, ownership migration.</description>
    </item>
    <item>
      <title>Containerizing a Go Service, A Sub-15MB Production Image</title>
      <link>https://muhammadamal.my.id/blog/go-docker-image-small-distroless/</link>
      <pubDate>Wed, 26 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-docker-image-small-distroless/</guid>
      <description>Shipping a Go service in 14 MB with distroless + static linking + Buildx. Full Dockerfile, CVE wins, CI cache wins.</description>
    </item>
    <item>
      <title>Health Checks and Graceful Shutdown in Go Web Services</title>
      <link>https://muhammadamal.my.id/blog/go-graceful-shutdown-health-checks/</link>
      <pubDate>Mon, 24 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-graceful-shutdown-health-checks/</guid>
      <description>Liveness vs readiness, signal handling, draining in-flight requests. The Go shutdown pattern that plays nice with Kubernetes.</description>
    </item>
    <item>
      <title>Structured Logging in Go Microservices with Zap</title>
      <link>https://muhammadamal.my.id/blog/go-structured-logging-zap/</link>
      <pubDate>Fri, 21 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-structured-logging-zap/</guid>
      <description>Structured logging in Go with zap. JSON output, request-scoped fields, sampling, and the pattern that survives production.</description>
    </item>
    <item>
      <title>Configuration Management for Go Services, Viper, Env, or Just Flags?</title>
      <link>https://muhammadamal.my.id/blog/go-config-management-viper-env-flags/</link>
      <pubDate>Wed, 19 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/go-config-management-viper-env-flags/</guid>
      <description>Viper vs env vars vs flags for Go services. Trade-offs, the boring default that wins, and a 60-line loader you can copy-paste.</description>
    </item>
    <item>
      <title>Local Development with Docker Compose for a Polyglot Stack</title>
      <link>https://muhammadamal.my.id/blog/docker-compose-polyglot-microservices/</link>
      <pubDate>Mon, 17 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/docker-compose-polyglot-microservices/</guid>
      <description>Docker Compose v2.2 for local microservices dev. Polyglot stack, healthchecks, profiles, ten-minute onboarding.</description>
    </item>
    <item>
      <title>Communicating Between Go Microservices, REST vs gRPC in 2022</title>
      <link>https://muhammadamal.my.id/blog/grpc-vs-rest-go-microservices/</link>
      <pubDate>Fri, 14 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/grpc-vs-rest-go-microservices/</guid>
      <description>REST vs gRPC for Go microservices. Real benchmarks, ergonomics, the hidden cost of HTTP/JSON at scale, and what we picked for billing.</description>
    </item>
    <item>
      <title>Designing the Service Boundary, Lessons from Splitting a Billing Module</title>
      <link>https://muhammadamal.my.id/blog/microservice-boundaries-billing-module/</link>
      <pubDate>Wed, 12 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/microservice-boundaries-billing-module/</guid>
      <description>Drawing the boundary when extracting a billing module. Aggregate roots, event contracts, and the questions to answer before you write any code.</description>
    </item>
    <item>
      <title>From Monolith to First Go Microservice, A Pragmatic Cutover</title>
      <link>https://muhammadamal.my.id/blog/monolith-to-first-go-microservice/</link>
      <pubDate>Mon, 10 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/monolith-to-first-go-microservice/</guid>
      <description>Carving the first Go microservice out of a PHP monolith. Pragmatic cutover, traffic shadowing, and the boring service to start with.</description>
    </item>
    <item>
      <title>Multi-Stage Docker Builds Cut Our Image Size by 70%</title>
      <link>https://muhammadamal.my.id/blog/multi-stage-docker-build-image-size/</link>
      <pubDate>Fri, 07 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/multi-stage-docker-build-image-size/</guid>
      <description>Multi-stage Docker builds, real numbers. 70% smaller images with Buildx, distroless, and Alpine. CI cache layers that actually save time.</description>
    </item>
    <item>
      <title>Writing a Production Dockerfile for a 5-Year-Old PHP Monolith</title>
      <link>https://muhammadamal.my.id/blog/production-dockerfile-php-monolith/</link>
      <pubDate>Wed, 05 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/production-dockerfile-php-monolith/</guid>
      <description>Line-by-line production Dockerfile for a legacy PHP monolith. Composer caching, opcache, FPM tuning, and the trade-offs nobody documents.</description>
    </item>
    <item>
      <title>Why I&#39;m Finally Containerizing My Monolith in 2022</title>
      <link>https://muhammadamal.my.id/blog/why-im-containerizing-my-monolith-in-2022/</link>
      <pubDate>Mon, 03 Jan 2022 09:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/blog/why-im-containerizing-my-monolith-in-2022/</guid>
      <description>Three years of putting it off. Now the monolith goes in a container. Here is why 2022 is the year the tooling finally got out of the way.</description>
    </item>
    <item>
      <title>About Muhammad Amal</title>
      <link>https://muhammadamal.my.id/about/</link>
      <pubDate>Sat, 01 Jan 2022 00:00:00 +0700</pubDate>
      <guid>https://muhammadamal.my.id/about/</guid>
      <description>Muhammad Amal, AI-Native Engineer. Backend, LLM apps, agentic systems, production-grade software since 2014.</description>
    </item>
  </channel>
</rss>
