{"@attributes":{"version":"2.0"},"channel":{"title":"srmdn.","description":"personal project hub","link":"https:\/\/srmdn.com","item":[{"title":"I Asked GPT-6 Astra to Audit My Agent Setup","link":"https:\/\/srmdn.com\/blog\/audit-first-agent-workflow","guid":"https:\/\/srmdn.com\/blog\/audit-first-agent-workflow","description":"A practical account of auditing AI coding-agent instructions, skills, runtimes, permissions, and behavior without exposing private configuration.","pubDate":"Mon, 07 Sep 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.vkEIPWDw.webp"}}},{"title":"wp2shell WordPress Recovery: What I Learned","link":"https:\/\/srmdn.com\/blog\/wp2shell-wordpress-recovery-lessons","guid":"https:\/\/srmdn.com\/blog\/wp2shell-wordpress-recovery-lessons","description":"What I learned while responding to a wp2shell WordPress takeover: preserve evidence, rebuild trust, and recover without making it worse.","pubDate":"Sun, 30 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BU3EEJAH.webp"}}},{"title":"VPS Access After a Service Contract Ends","link":"https:\/\/srmdn.com\/blog\/vps-access-after-service-contract","guid":"https:\/\/srmdn.com\/blog\/vps-access-after-service-contract","description":"How clients and service providers can define VPS access, warranty, support, reauthorization, and offboarding in writing.","pubDate":"Wed, 26 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DPX3GAkT.webp"}}},{"title":"Search Console Blocked by robots.txt: What to Check","link":"https:\/\/srmdn.com\/blog\/search-console-blocked-by-robots-txt","guid":"https:\/\/srmdn.com\/blog\/search-console-blocked-by-robots-txt","description":"A practical way to investigate a Search Console robots.txt alert before changing your site, based on a harmless short-link case.","pubDate":"Mon, 24 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.B_ee9ShY.webp"}}},{"title":"Self-Hosted Referral Links Without the \/s\/","link":"https:\/\/srmdn.com\/blog\/self-hosted-referral-links","guid":"https:\/\/srmdn.com\/blog\/self-hosted-referral-links","description":"Why I built plink, a small Go and SQLite service for branded referral links, clean slugs, click analytics, and straightforward VPS deployment.","pubDate":"Sun, 22 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DEkfkzFe.webp"}}},{"title":"Benchmark Leaderboards Are Becoming Product Interfaces","link":"https:\/\/srmdn.com\/blog\/benchmark-leaderboards-product-interfaces","guid":"https:\/\/srmdn.com\/blog\/benchmark-leaderboards-product-interfaces","description":"Leaderboard rank now shapes which models people choose. What that shift means for launch claims, incentives, and how to read a ranking before you pick.","pubDate":"Sun, 23 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.CK3HhTlW.webp"}}},{"title":"Reddit di Indonesia: Dari Diblokir hingga Dibuka Lagi","link":"https:\/\/srmdn.com\/blog\/kenapa-reddit-masih-diblokir-di-indonesia","guid":"https:\/\/srmdn.com\/blog\/kenapa-reddit-masih-diblokir-di-indonesia","description":"Reddit kembali bisa diakses tanpa VPN di Indonesia, tetapi geoblocking masih membatasi sebagian komunitas 18+ dan konten ilegal.","pubDate":"Tue, 25 Nov 2025 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.Cjt1qk_B.webp"}}},{"title":"Why Context Handoff Is Becoming an AI Coding Primitive","link":"https:\/\/srmdn.com\/blog\/why-context-handoff-is-becoming-an-ai-coding-primitive","guid":"https:\/\/srmdn.com\/blog\/why-context-handoff-is-becoming-an-ai-coding-primitive","description":"AI coding agents need more than a long context window. A context handoff preserves the state that lets the next session continue the work.","pubDate":"Sat, 22 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DV3QVUlI.webp"}}},{"title":"Tac Is a Map for the Agent Stack","link":"https:\/\/srmdn.com\/blog\/tac-agent-stack","guid":"https:\/\/srmdn.com\/blog\/tac-agent-stack","description":"Tac's Agentic AI stack map now lives inside AI Eval Observatory, with production decisions and failure modes at each layer.","pubDate":"Sat, 16 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DjloYRM4.webp"}}},{"title":"When AI Judges AI","link":"https:\/\/srmdn.com\/blog\/when-ai-judges-ai","guid":"https:\/\/srmdn.com\/blog\/when-ai-judges-ai","description":"LLM judges make evaluation cheaper, but their prompts, biases, and calibration shape the score.","pubDate":"Fri, 21 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DKOyDekf.webp"}}},{"title":"Who Benchmarks the Benchmarks?","link":"https:\/\/srmdn.com\/blog\/who-benchmarks-the-benchmarks","guid":"https:\/\/srmdn.com\/blog\/who-benchmarks-the-benchmarks","description":"AI benchmark scores measure more than a model. Follow the prompts, harnesses, environments, graders, and choices behind the final number.","pubDate":"Thu, 20 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.tO8jTPFX.webp"}}},{"title":"81 Years of Independence: How Free Are We Online?","link":"https:\/\/srmdn.com\/blog\/how-free-are-we-in-the-digital-space","guid":"https:\/\/srmdn.com\/blog\/how-free-are-we-in-the-digital-space","description":"A reflection on August 17, 2026, about freedom, power, and citizens' rights in the digital space.","pubDate":"Mon, 17 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DIn2TqMQ.webp"}}},{"title":"AI Coding Agents on VPS: Set Safer Access Boundaries","link":"https:\/\/srmdn.com\/blog\/ai-coding-agents-vps-access-boundaries","guid":"https:\/\/srmdn.com\/blog\/ai-coding-agents-vps-access-boundaries","description":"AI agents can help run a VPS, but production root access should never be the default. Here is a practical access model for solo builders.","pubDate":"Fri, 14 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.C3NP0Mzj.webp"}}},{"title":"aaPanel Promo: Free AI Credits Through August 31","link":"https:\/\/srmdn.com\/blog\/promo-aapanel-ai-credits-2026","guid":"https:\/\/srmdn.com\/blog\/promo-aapanel-ai-credits-2026","description":"A summary of aaPanel's AI credit promo, new models, Pro bonuses, and what to check before claiming.","pubDate":"Fri, 14 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.q9lt0s8I.webp"}}},{"title":"From Agency to Service as Software","link":"https:\/\/srmdn.com\/blog\/from-agency-to-service-as-software","guid":"https:\/\/srmdn.com\/blog\/from-agency-to-service-as-software","description":"AI can help services scale, but the product is still the outcome, accountability, and trust a customer receives.","pubDate":"Wed, 12 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DxOMtu6I.webp"}}},{"title":"S3-Compatible Is Not Drop-In Compatible","link":"https:\/\/srmdn.com\/blog\/s3-compatible-is-not-drop-in-compatible","guid":"https:\/\/srmdn.com\/blog\/s3-compatible-is-not-drop-in-compatible","description":"An S3-compatible API may still require provider-specific choices. Learn how to debug addressing, uploads, and public object access.","pubDate":"Tue, 11 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BfY0OsWb.webp"}}},{"title":"Why GPT-5.6-Cyber Doesn't Appear in ChatGPT","link":"https:\/\/srmdn.com\/blog\/why-gpt-5-6-cyber-does-not-appear","guid":"https:\/\/srmdn.com\/blog\/why-gpt-5-6-cyber-does-not-appear","description":"Daybreak on August 10 brought GPT-5.6-Cyber to limited access. Here's why it may not appear in ChatGPT or Codex.","pubDate":"Tue, 11 Aug 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"https:\/\/s3.nevaobjects.id\/srmdn-blog-prod\/blog\/why-gpt-5-6-cyber-does-not-appear\/18af530afc07f1453cf4cf7f2fa8555e2f1f14d9d683d6a4b53c242c9d8bfe23.webp"}}},{"title":"Grok Build Repository Upload: What Users Should Know","link":"https:\/\/srmdn.com\/blog\/grok-build-repository-upload","guid":"https:\/\/srmdn.com\/blog\/grok-build-repository-upload","description":"What Grok Build transmitted, what researchers proved, how xAI responded, and how users can check their own exposure without speculation.","pubDate":"Tue, 14 Jul 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BsvWG82g.webp"}}},{"title":"5 Update Docker Desktop: Mei\u2013Juni 2026","link":"https:\/\/srmdn.com\/blog\/5-update-docker-desktop-mei-juni-2026","guid":"https:\/\/srmdn.com\/blog\/5-update-docker-desktop-mei-juni-2026","description":"Extensions dimatikan. SBOM geser ke Scout. Gordon AI GA. CVE kernel panic. Mana yang relevan buat workflow kamu?","pubDate":"Tue, 16 Jun 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.52VnL5Qq.webp"}}},{"title":"Islam dan Saham","link":"https:\/\/srmdn.com\/blog\/islam-dan-saham","guid":"https:\/\/srmdn.com\/blog\/islam-dan-saham","description":"Bagaimana seorang muslim menjaga hartanya, mengembangkannya, menghindari riba, dan tetap ikut membangun ekonomi yang lebih adil?","pubDate":"Sat, 13 Jun 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.C-4QMPhS.webp"}}},{"title":"Hermes vs OpenClaw: Different Problems, Different Tradeoffs","link":"https:\/\/srmdn.com\/blog\/hermes-and-openclaw-solve-different-problems","guid":"https:\/\/srmdn.com\/blog\/hermes-and-openclaw-solve-different-problems","description":"Hermes improves repeated agent work. OpenClaw emphasizes access and routing. The choice is about workflow, not hype.","pubDate":"Sun, 17 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BrttBAFK.webp"}}},{"title":"Broken Links Won't Fix Themselves","link":"https:\/\/srmdn.com\/blog\/broken-links-won-t-fix-themselves","guid":"https:\/\/srmdn.com\/blog\/broken-links-won-t-fix-themselves","description":"A small Go tool I wrote to scan markdown files, catch dead links early, and fail loudly before readers find the problem first.","pubDate":"Thu, 14 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BV0K1WqK.webp"}}},{"title":"The Browser Never Sees the Answer Key","link":"https:\/\/srmdn.com\/blog\/browser-never-sees-the-answer-key","guid":"https:\/\/srmdn.com\/blog\/browser-never-sees-the-answer-key","description":"Quiz Islami keeps the answer key off the client and computes score on the server.","pubDate":"Tue, 12 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DkAGfL57.webp"}}},{"title":"Linux vs Windows: The Gaps Nobody Talks About","link":"https:\/\/srmdn.com\/blog\/linux-vs-windows-the-gaps-nobody-talks-about","guid":"https:\/\/srmdn.com\/blog\/linux-vs-windows-the-gaps-nobody-talks-about","description":"I'm Team Linux. But pretending it has no weaknesses helps no one. 3 areas Windows still dominates, and why it's actually an economics problem.","pubDate":"Sat, 09 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.otVUz-5r.webp"}}},{"title":"US\u2013China AI Cold War: Trust Divides Globally","link":"https:\/\/srmdn.com\/blog\/us-china-ai-cold-war","guid":"https:\/\/srmdn.com\/blog\/us-china-ai-cold-war","description":"The US-China rivalry has entered a decisive new phase: the AI arms race. A great power competition where AI is both the battlefield and the ultimate weapon.","pubDate":"Sun, 03 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.ekqEuFBK.webp"}}},{"title":"Dampak Nyata Pelemahan Rupiah bagi Solo Builder","link":"https:\/\/srmdn.com\/blog\/dampak-nyata-pelemahan-rupiah-bagi-solo-builder","guid":"https:\/\/srmdn.com\/blog\/dampak-nyata-pelemahan-rupiah-bagi-solo-builder","description":"Analisis nilai tukar Rupiah vs Dollar sampai Mei 2026: Gimana dampaknya ke tagihan cloud, VPS, dan API kita?","pubDate":"Sat, 02 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DRtTOqyb.webp"}}},{"title":"Fixing Parentheses in Arabic Web Text","link":"https:\/\/srmdn.com\/blog\/arabic-rtl-brackets","guid":"https:\/\/srmdn.com\/blog\/arabic-rtl-brackets","description":"Why Arabic parentheses appear reversed in CSS direction:rtl, and the fix that actually works: wrapping the whole group as an LTR island.","pubDate":"Fri, 01 May 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.iBO8o0Iw.webp"}}},{"title":"Building a Qibla Compass for the Web","link":"https:\/\/srmdn.com\/blog\/building-a-qibla-compass-for-the-web","guid":"https:\/\/srmdn.com\/blog\/building-a-qibla-compass-for-the-web","description":"How I built a browser-based qibla compass using GPS, the DeviceOrientation API, and trigonometry - including the desktop fallback problem.","pubDate":"Wed, 29 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.C8QGZaCW.webp"}}},{"title":"When Cloudflare Is Up but Your Site Is Down","link":"https:\/\/srmdn.com\/blog\/when-cloudflare-is-up-but-your-site-is-down","guid":"https:\/\/srmdn.com\/blog\/when-cloudflare-is-up-but-your-site-is-down","description":"Your server is running. Nginx is healthy. But the site is down from your home ISP. What BGP routing and Cloudflare anycast have to do with it.","pubDate":"Wed, 22 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.Dg8BphEi.webp"}}},{"title":"Go 1.26.2: Three Stdlib Vulnerabilities Explained","link":"https:\/\/srmdn.com\/blog\/go-1-26-2-stdlib-vulnerabilities","guid":"https:\/\/srmdn.com\/blog\/go-1-26-2-stdlib-vulnerabilities","description":"A deploy blocked by govulncheck led me to read the Go 1.26.2 security fixes. What each vulnerability does and why stdlib is not a safe zone.","pubDate":"Mon, 13 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BegeVF-I.webp"}}},{"title":"Stop Using cron on macOS","link":"https:\/\/srmdn.com\/blog\/launchd-vs-cron-macos","guid":"https:\/\/srmdn.com\/blog\/launchd-vs-cron-macos","description":"cron skips jobs when your Mac is asleep. launchd doesn't. Here's how to convert your cron jobs to launchd and never miss a scheduled task again.","pubDate":"Mon, 06 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DaOp9NW2.webp"}}},{"title":"How to claim your Claude Code extra usage credit","link":"https:\/\/srmdn.com\/blog\/how-to-claim-your-claude-code-extra-usage-credit","guid":"https:\/\/srmdn.com\/blog\/how-to-claim-your-claude-code-extra-usage-credit","description":"A credit on Claude, plus discounts on extra usage","pubDate":"Sat, 04 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.X37Hzust.webp"}}},{"title":"Tiered Cache: The Free Win for Routing Lag","link":"https:\/\/srmdn.com\/blog\/tiered-cache-the-free-win-for-routing-lag","guid":"https:\/\/srmdn.com\/blog\/tiered-cache-the-free-win-for-routing-lag","description":"Your app feels fast all day, then drags at night. It's a routing bottleneck, not your code. Fix it for free using Tiered Cache to bypass middle-mile congestion.","pubDate":"Fri, 03 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.CfS2nr7f.webp"}}},{"title":"Quran Tracker: Open Source untuk One Day One Juz","link":"https:\/\/srmdn.com\/blog\/quran-tracker-open-source-komunitas-ngaji","guid":"https:\/\/srmdn.com\/blog\/quran-tracker-open-source-komunitas-ngaji","description":"Quran Tracker adalah aplikasi open source untuk komunitas ngaji, cocok untuk one day one juz & murojaah, lengkap dengan scoring dan leaderboard.","pubDate":"Wed, 01 Apr 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.CgiN-ygD.webp"}}},{"title":"Before You Add Redis","link":"https:\/\/srmdn.com\/blog\/before-you-add-redis","guid":"https:\/\/srmdn.com\/blog\/before-you-add-redis","description":"Most slow web apps don't need Redis. They need gzip and a WAL checkpoint. Here is how to tell which problem you have.","pubDate":"Tue, 31 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BTzTrMIa.webp"}}},{"title":"A Network Blip Is Not Just a Blip","link":"https:\/\/srmdn.com\/blog\/network-blip","guid":"https:\/\/srmdn.com\/blog\/network-blip","description":"Network blips are brief and self-healing. They are also the reason a backup job can run cleanly, log no errors, and leave you with nothing to restore from.","pubDate":"Tue, 31 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.CoCE0NEX.webp"}}},{"title":"Claude Code's Usage Bug and the Fight Behind It","link":"https:\/\/srmdn.com\/blog\/claude-code-pentagon","guid":"https:\/\/srmdn.com\/blog\/claude-code-pentagon","description":"My session limit drained in two hours. The bug is real, but the timing points to something bigger: Anthropic's standoff with the Pentagon.","pubDate":"Thu, 26 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BdzZVRBX.webp"}}},{"title":"nginx 1.28.3: Six CVEs, One Upgrade","link":"https:\/\/srmdn.com\/blog\/nginx-1283-security-release","guid":"https:\/\/srmdn.com\/blog\/nginx-1283-security-release","description":"nginx 1.28.3 dropped March 24 with six CVEs patched. What each one means and whether you need to care.","pubDate":"Thu, 26 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.C0oXSjrI.webp"}}},{"title":"ProtectHome=yes in Systemd Breaks Subprocesses Too","link":"https:\/\/srmdn.com\/blog\/systemd-protecthome-subprocess","guid":"https:\/\/srmdn.com\/blog\/systemd-protecthome-subprocess","description":"You hardened your systemd service with ProtectHome=yes. Your Go service spawns a subprocess. It crashes with EACCES on a path you never touched.","pubDate":"Wed, 25 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.7K83ULAg.webp"}}},{"title":"A Private Client Portal for Freelancers","link":"https:\/\/srmdn.com\/blog\/client-portal-for-freelancers","guid":"https:\/\/srmdn.com\/blog\/client-portal-for-freelancers","description":"Managing clients through Notion and email gets messy. I built a private portal to fix that, and you can use it too.","pubDate":"Thu, 19 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BQNLjt3-.webp"}}},{"title":"AppArmor Had a Privilege Escalation Bug. Since 2017.","link":"https:\/\/srmdn.com\/blog\/crackarmor-apparmor-vulnerability-2026","guid":"https:\/\/srmdn.com\/blog\/crackarmor-apparmor-vulnerability-2026","description":"Nine flaws in AppArmor let an unprivileged local user reach root. Active on every Ubuntu server by default. Sitting there since 2017.","pubDate":"Sat, 14 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.19BQ_Lr-.webp"}}},{"title":"Attacked Every 23 Seconds. Why I'm Not Worried.","link":"https:\/\/srmdn.com\/blog\/vps-security-layers","guid":"https:\/\/srmdn.com\/blog\/vps-security-layers","description":"Running a self-managed VPS means bots will find you within hours. Here's the layered setup I use to sleep well anyway.","pubDate":"Mon, 09 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.DIeDK3vj.webp"}}},{"title":"Systemd Unit Files for Web Apps","link":"https:\/\/srmdn.com\/blog\/systemd-unit-files-for-web-apps","guid":"https:\/\/srmdn.com\/blog\/systemd-unit-files-for-web-apps","description":"The systemd options that actually matter for a Go backend and Node.js frontend: unit file anatomy, hardening directives, and the gotchas that burn you.","pubDate":"Sun, 08 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.B1PVWQNo.webp"}}},{"title":"Cloudflare Turnstile Console Errors Are Not Your Fault","link":"https:\/\/srmdn.com\/blog\/cloudflare-turnstile-console-errors","guid":"https:\/\/srmdn.com\/blog\/cloudflare-turnstile-console-errors","description":"You integrated Turnstile, your forms work fine, but the browser console is full of errors and warnings. Here's exactly what each one means.","pubDate":"Fri, 06 Mar 2026 17:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.8wlb6_jA.webp"}}},{"title":"What 2 GB of Logs on a Fresh VPS Actually Means","link":"https:\/\/srmdn.com\/blog\/vps-ssh-log-bloat","guid":"https:\/\/srmdn.com\/blog\/vps-ssh-log-bloat","description":"I traced a growing journal to SSH brute-force bots, found a cloud-init misconfiguration hiding in plain sight, and cleaned it all up. Here's the investigation.","pubDate":"Tue, 03 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.CGwXPVfZ.webp"}}},{"title":"You Don't Need a Message Queue","link":"https:\/\/srmdn.com\/blog\/you-dont-need-a-message-queue","guid":"https:\/\/srmdn.com\/blog\/you-dont-need-a-message-queue","description":"Before you reach for Redis or RabbitMQ, there's a simpler pattern. A database table and a background worker handle most use cases.","pubDate":"Sun, 01 Mar 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.42uFk3d7.webp"}}},{"title":"Ever wondered why Linux has two commands for the same task?","link":"https:\/\/srmdn.com\/blog\/useradd-and-adduser","guid":"https:\/\/srmdn.com\/blog\/useradd-and-adduser","description":"Let\u2019s break down the useradd vs adduser mystery.","pubDate":"Tue, 06 Jan 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.BnPcnZ8_.webp"}}},{"title":"Using Claude Code on a Self-Managed VPS: My Workflow","link":"https:\/\/srmdn.com\/blog\/claude-code-on-a-self-managed-vps","guid":"https:\/\/srmdn.com\/blog\/claude-code-on-a-self-managed-vps","description":"How I run Claude Code directly on my VPS, why CLAUDE.md is the most important file in the repo, and the memory setup that makes it work across sessions.","pubDate":"Sat, 28 Feb 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.4SXelKZ5.webp"}}},{"title":"The \"Magic Numbers\" of Software: SemVer Explained","link":"https:\/\/srmdn.com\/blog\/semver-explained","guid":"https:\/\/srmdn.com\/blog\/semver-explained","description":"Ever wonder why your favorite app goes from version 2.1.5 to 3.0.0? It\u2019s not random. It\u2019s a language called Semantic Versioning (SemVer).","pubDate":"Mon, 02 Feb 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.ac0C63n_.webp"}}},{"title":"Why Your og:image Doesn't Show in Social Shares","link":"https:\/\/srmdn.com\/blog\/fixing-og-image-in-social-shares","guid":"https:\/\/srmdn.com\/blog\/fixing-og-image-in-social-shares","description":"Two bugs that silently break social share previews in Astro SSR, a localhost URL and a base64 image in frontmatter. How to find and fix both.","pubDate":"Thu, 26 Feb 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.Dk_mTfRs.webp"}}},{"title":"Deploying to a VPS Without Docker or CI\/CD","link":"https:\/\/srmdn.com\/blog\/deploying-to-vps-without-docker-and-cicd","guid":"https:\/\/srmdn.com\/blog\/deploying-to-vps-without-docker-and-cicd","description":"How I moved my Go + Astro site off a managed static host onto a bare VPS using git, systemd, and nginx. No Docker, no pipeline.","pubDate":"Sun, 22 Feb 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.C4SheoqF.webp"}}},{"title":"AI CLI Panic Wasn't Spying. It Was Permissions","link":"https:\/\/srmdn.com\/blog\/ai-cli-permissions","guid":"https:\/\/srmdn.com\/blog\/ai-cli-permissions","description":"Real AI CLI risk isn't omniscience, it's access. The true story and practical safeguards to stay safe.","pubDate":"Sun, 08 Feb 2026 00:00:00 GMT","enclosure":{"@attributes":{"url":"\/_astro\/hero.Blsr6mma.webp"}}},{"title":"Website Gratis untuk UMKM: Solusi atau Sekadar Konten?","link":"https:\/\/srmdn.com\/blog\/jasa-website","guid":"https:\/\/srmdn.com\/blog\/jasa-website","description":"Website gratis untuk UMKM terdengar membantu, tetapi biaya domain, pemeliharaan, dan kesiapan operasional menentukan apakah manfaatnya bertahan.","pubDate":"Tue, 30 Dec 2025 00:00:00 GMT","enclosure":{"@attributes":{"url":".\/"}}},{"title":"Black Friday VPS 2025: Sejarah dan Tempat Berburu Deal","link":"https:\/\/srmdn.com\/blog\/black-friday-sejarah-tempat-berburu-deal-vps-2025","guid":"https:\/\/srmdn.com\/blog\/black-friday-sejarah-tempat-berburu-deal-vps-2025","description":"Asal-usul Black Friday, budaya berburu VPS murah, tempat menemukan penawaran, dan cara menghindari pembelian impulsif yang akhirnya menganggur.","pubDate":"Tue, 02 Dec 2025 00:00:00 GMT","enclosure":{"@attributes":{"url":".\/"}}}]}}