<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mobin Shaterian — Software Engineering Blog</title>
    <link>https://mobinshaterian.com/blogs</link>
    <description>Practical articles about Go, backend architecture, distributed systems, data engineering, and DevOps.</description>
    <language>en</language>
    <atom:link href="https://mobinshaterian.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Authentication &amp; Authorization: RBAC, ReBAC, ABAC, and PBAC Explained</title>
      <link>https://mobinshaterian.com/blog/Authentication---Authorization--RBAC--ReBAC--ABAC--and-PBAC-Explained-f3c6b95ad394</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Authentication---Authorization--RBAC--ReBAC--ABAC--and-PBAC-Explained-f3c6b95ad394</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>From “who are you?” to “what can you do?” — a complete guide to modern access control models, with real examples using CASL, Keycloak, and…</description>
      <category>Security</category>
      <category>Architecture</category>
      <category>Node.js</category>
    </item>
    <item>
      <title>Keycloak + OpenFGA: A Practical Integration Guide</title>
      <link>https://mobinshaterian.com/blog/Keycloak---OpenFGA--A-Practical-Integration-Guide-a9ed984ee205</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Keycloak---OpenFGA--A-Practical-Integration-Guide-a9ed984ee205</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <description>Overview</description>
      <category>Security</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>Deploying a Lovable (TanStack Start) App with GitHub Actions — the Real Story</title>
      <link>https://mobinshaterian.com/blog/Deploying-a-Lovable--TanStack-Start--App-with-GitHub-Actions---the-Real-Story-272he</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Deploying-a-Lovable--TanStack-Start--App-with-GitHub-Actions---the-Real-Story-272he</guid>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
      <description>Deploying a Lovable (TanStack Start) App with GitHub Actions — the Real Story Lovable is a great way to scaffold a TanStack Start app fast. But the moment you want to ship it yourself — on your own domain, through your…</description>
      <category>DevOps</category>
    </item>
    <item>
      <title>How Domain Boundary Violations Slowly Destroy Your Codebase</title>
      <link>https://mobinshaterian.com/blog/How-Domain-Boundary-Violations-Slowly-Destroy-Your-Codebase-9cef4b11f8f1</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/How-Domain-Boundary-Violations-Slowly-Destroy-Your-Codebase-9cef4b11f8f1</guid>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
      <description>Have you ever opened a “service” file and seen it reach deep into three or four other domains? Ever had to add a workaround like…</description>
      <category>Architecture</category>
    </item>
    <item>
      <title>The Entity You Modeled Isn&apos;t the Entity That Persists</title>
      <link>https://mobinshaterian.com/blog/The-Entity-You-Modeled-Isn-t-the-Entity-That-Persists-vtwge</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/The-Entity-You-Modeled-Isn-t-the-Entity-That-Persists-vtwge</guid>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
      <description>A recurring architectural mistake — and the state machine pattern that fixes it. A pattern you&apos;ve probably seen before There&apos;s a particular kind of mess that shows up in almost every system that models a multi-stage bus…</description>
      <category>Architecture</category>
    </item>
    <item>
      <title>One Door, Two Mechanisms: When Your Domain Model Quietly Forks Itself</title>
      <link>https://mobinshaterian.com/blog/One-Door--Two-Mechanisms--When-Your-Domain-Model-Quietly-Forks-Itself-oewde</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/One-Door--Two-Mechanisms--When-Your-Domain-Model-Quietly-Forks-Itself-oewde</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <description>I want to talk about a bug that, on the surface, looked trivial. An endpoint was missing.</description>
      <category>Architecture</category>
    </item>
    <item>
      <title>Understanding Server-Sent Events (SSE): Architecture, Authentication, and Testing in NestJS</title>
      <link>https://mobinshaterian.com/blog/Understanding-Server-Sent-Events--SSE---Architecture--Authentication--and-Testing-in-NestJS-oc5uf</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Understanding-Server-Sent-Events--SSE---Architecture--Authentication--and-Testing-in-NestJS-oc5uf</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <description>Introduction Modern web applications often need real-time communication. Examples include: Notifications Chat applications Live dashboards Stock prices Progress tracking Monitoring systems Most developers immediately th…</description>
      <category>API</category>
      <category>Testing</category>
    </item>
    <item>
      <title>When Medium&apos;s Bots Fear Your Writing: Why I&apos;m Leaving After 6 Years and 200 Articles</title>
      <link>https://mobinshaterian.com/blog/When-Mediums-Bots-Fear-Your-Writing--Why-Im-Leaving-After-6-Years-and-200-Articles-anlqe</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/When-Mediums-Bots-Fear-Your-Writing--Why-Im-Leaving-After-6-Years-and-200-Articles-anlqe</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <description>Six years. Two hundred articles. Technical writing about software architecture, data pipelines, and the tools I work with every day.</description>
      <category>Career</category>
    </item>
    <item>
      <title>What Happens When You Hire a Junior Who Vibe Codes as a Senior Engineer</title>
      <link>https://mobinshaterian.com/blog/What-Happens-When-You-Hire-a-Junior-Who-Vibe-Codes-as-a-Senior-Engineer-a047146d9ae9</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/What-Happens-When-You-Hire-a-Junior-Who-Vibe-Codes-as-a-Senior-Engineer-a047146d9ae9</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <description>On the difference between generating solutions and understanding problems</description>
      <category>Career</category>
    </item>
    <item>
      <title>Rebuilding the Time Machine: Designing a Dual-Purpose Data Versioning System for Modern Backends…</title>
      <link>https://mobinshaterian.com/blog/Rebuilding-the-Time-Machine--Designing-a-Dual-Purpose-Data-Versioning-System-for-Modern-Backends--c00ddf54bf53</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Rebuilding-the-Time-Machine--Designing-a-Dual-Purpose-Data-Versioning-System-for-Modern-Backends--c00ddf54bf53</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <description>In traditional software engineering, databases are treated as state machines. When a user updates their profile, a transaction executes an…</description>
      <category>Career</category>
      <category>Machine Learning</category>
    </item>
    <item>
      <title>The New Generation of E2E Test Automation: Capturing Traffic and Bypassing Auth with Postman and…</title>
      <link>https://mobinshaterian.com/blog/The-New-Generation-of-E2E-Test-Automation--Capturing-Traffic-and-Bypassing-Auth-with-Postman-and--16f167e37950</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/The-New-Generation-of-E2E-Test-Automation--Capturing-Traffic-and-Bypassing-Auth-with-Postman-and--16f167e37950</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <description>End-to-End (E2E) testing ensures that your systems work cohesively, from the user interface down to the backend database. However, as…</description>
      <category>Security</category>
      <category>Testing</category>
    </item>
    <item>
      <title>Serving an Offline GraphQL Playground in Go: Avoiding the Gin Static File Pitfalls</title>
      <link>https://mobinshaterian.com/blog/Serving-an-Offline-GraphQL-Playground-in-Go--Avoiding-the-Gin-Static-File-Pitfalls-dd907b2ab087</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Serving-an-Offline-GraphQL-Playground-in-Go--Avoiding-the-Gin-Static-File-Pitfalls-dd907b2ab087</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>When building a GraphQL API in Go using gqlgen and Gin, the built-in playground.Handler is the standard way to serve the GraphiQL UI. Out…</description>
      <category>Go</category>
      <category>API</category>
      <category>GraphQL</category>
    </item>
    <item>
      <title>Tunneling TCP Connections Over SSH Using socat and nc</title>
      <link>https://mobinshaterian.com/blog/Tunneling-TCP-Connections-Over-SSH-Using-socat-and-nc-fb142a2d6034</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Tunneling-TCP-Connections-Over-SSH-Using-socat-and-nc-fb142a2d6034</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <description>The Problem</description>

    </item>
    <item>
      <title>Real-Time Data Ingestion: Connecting Distributed Kafka to ClickHouse in Docker</title>
      <link>https://mobinshaterian.com/blog/Real-Time-Data-Ingestion--Connecting-Distributed-Kafka-to-ClickHouse-in-Docker-1e29e0b0f665</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Real-Time-Data-Ingestion--Connecting-Distributed-Kafka-to-ClickHouse-in-Docker-1e29e0b0f665</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <description>Building a high-throughput analytics pipeline requires a database that can ingest millions of rows per second and a message broker that can…</description>
      <category>Kafka</category>
      <category>ClickHouse</category>
      <category>Docker</category>
      <category>Performance</category>
    </item>
    <item>
      <title>Integrating Kafka with ClickHouse using SSL/SASL: A Technical Retrospective</title>
      <link>https://mobinshaterian.com/blog/Integrating-Kafka-with-ClickHouse-using-SSL-SASL--A-Technical-Retrospective-be9d75864340</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Integrating-Kafka-with-ClickHouse-using-SSL-SASL--A-Technical-Retrospective-be9d75864340</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <description>Integrating ClickHouse with a secured Kafka cluster often presents a challenge because of the strict separation between SQL-level settings…</description>
      <category>Kafka</category>
      <category>ClickHouse</category>
    </item>
    <item>
      <title>ClickHouse Tiered Storage: Volumes, Storage Policies, and TTL from Scratch to Production</title>
      <link>https://mobinshaterian.com/blog/ClickHouse-Tiered-Storage--Volumes--Storage-Policies--and-TTL-from-Scratch-to-Production-8758d8f3f066</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/ClickHouse-Tiered-Storage--Volumes--Storage-Policies--and-TTL-from-Scratch-to-Production-8758d8f3f066</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <description>Most ClickHouse deployments start simple: one server, one disk, one table. That works fine until the day you realise you are paying NVMe…</description>
      <category>ClickHouse</category>
    </item>
    <item>
      <title>The Test-Backdoor Pattern: Safe E2E Automation for Hard-to-Test Flows</title>
      <link>https://mobinshaterian.com/blog/The-Test-Backdoor-Pattern--Safe-E2E-Automation-for-Hard-to-Test-Flows-8e5e234dc859</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/The-Test-Backdoor-Pattern--Safe-E2E-Automation-for-Hard-to-Test-Flows-8e5e234dc859</guid>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
      <description>End-to-End (E2E) testing ensures that systems work cohesively from the user interface down to the database. However, modern security…</description>
      <category>Security</category>
      <category>Testing</category>
    </item>
    <item>
      <title>How We Rebuilt a Telecom KPI Platform to Handle Billions of Records: From JSON Blobs to Flat…</title>
      <link>https://mobinshaterian.com/blog/How-We-Rebuilt-a-Telecom-KPI-Platform-to-Handle-Billions-of-Records--From-JSON-Blobs-to-Flat--1a4eb6b27574</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/How-We-Rebuilt-a-Telecom-KPI-Platform-to-Handle-Billions-of-Records--From-JSON-Blobs-to-Flat--1a4eb6b27574</guid>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
      <description>Background</description>
      <category>Data Engineering</category>
    </item>
    <item>
      <title>Architectural Optimization of Shared Sandbox Deployments in GitLab CI/CD</title>
      <link>https://mobinshaterian.com/blog/Architectural-Optimization-of-Shared-Sandbox-Deployments-in-GitLab-CI-CD-47ccce21fa9d</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Architectural-Optimization-of-Shared-Sandbox-Deployments-in-GitLab-CI-CD-47ccce21fa9d</guid>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
      <description>The shared sandbox deployment strategy provides high feedback velocity at a low cost by using a centralized development environment, yet it…</description>
      <category>DevOps</category>
      <category>Architecture</category>
      <category>Machine Learning</category>
    </item>
    <item>
      <title>Building a High-Throughput KPI Pipeline on ClickHouse: Partitioning, Idempotent Recalculation, and…</title>
      <link>https://mobinshaterian.com/blog/Building-a-High-Throughput-KPI-Pipeline-on-ClickHouse--Partitioning--Idempotent-Recalculation--and--3302a12ddf83</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-High-Throughput-KPI-Pipeline-on-ClickHouse--Partitioning--Idempotent-Recalculation--and--3302a12ddf83</guid>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <description>Every hour, 15 million rows of raw network measurement data land in our ClickHouse cluster. From that data we calculate per-cell…</description>
      <category>Star</category>
      <category>My Experience</category>
      <category>ClickHouse</category>
      <category>Performance</category>
      <category>Data Engineering</category>
    </item>
    <item>
      <title>Solving the “NaN” Deadlock: Streaming Kafka to ClickHouse with Data Sanitization</title>
      <link>https://mobinshaterian.com/blog/Solving-the--NaN--Deadlock--Streaming-Kafka-to-ClickHouse-with-Data-Sanitization-530ff573762f</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Solving-the--NaN--Deadlock--Streaming-Kafka-to-ClickHouse-with-Data-Sanitization-530ff573762f</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <description>Integrating high-velocity streaming data into ClickHouse often feels like a “set it and forget it” task — until it isn’t. Recently, we…</description>
      <category>Kafka</category>
      <category>ClickHouse</category>
    </item>
    <item>
      <title>Mastering the Manual: A Guide to Manually Installing PostgreSQL JDBC Drivers in DBeaver</title>
      <link>https://mobinshaterian.com/blog/Mastering-the-Manual--A-Guide-to-Manually-Installing-PostgreSQL-JDBC-Drivers-in-DBeaver-ac5c1507c94b</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Mastering-the-Manual--A-Guide-to-Manually-Installing-PostgreSQL-JDBC-Drivers-in-DBeaver-ac5c1507c94b</guid>
      <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
      <description>In the world of database management, DBeaver is widely regarded as the “Swiss Army Knife” for developers and DBAs. While its automated…</description>
      <category>Postgres</category>
    </item>
    <item>
      <title>A Microservice That Teaches Everything Not to Do</title>
      <link>https://mobinshaterian.com/blog/A-Microservice-That-Teaches-Everything-Not-to-Do-e055f7480424</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/A-Microservice-That-Teaches-Everything-Not-to-Do-e055f7480424</guid>
      <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
      <description>Every engineer eventually encounters a system that becomes a living catalog of anti-patterns. Recently, I reviewed a microservice…</description>
      <category>Microservices</category>
      <category>Career</category>
    </item>
    <item>
      <title>Connecting Kafka to ClickHouse with SSL: A Complete Integration Guide</title>
      <link>https://mobinshaterian.com/blog/Connecting-Kafka-to-ClickHouse-with-SSL--A-Complete-Integration-Guide-e5a0a5957de3</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Connecting-Kafka-to-ClickHouse-with-SSL--A-Complete-Integration-Guide-e5a0a5957de3</guid>
      <pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate>
      <description>Setting up a production-ready data pipeline requires balancing high performance with rigorous security. When integrating ClickHouse with a…</description>
      <category>Kafka</category>
      <category>ClickHouse</category>
      <category>Performance</category>
      <category>Security</category>
    </item>
    <item>
      <title>The “Clear-as-you-go” Pattern: Solving Memory Spikes in High-Volume Go Data Pipelines</title>
      <link>https://mobinshaterian.com/blog/The--Clear-as-you-go--Pattern--Solving-Memory-Spikes-in-High-Volume-Go-Data-Pipelines-b40b3f7ce2d2</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/The--Clear-as-you-go--Pattern--Solving-Memory-Spikes-in-High-Volume-Go-Data-Pipelines-b40b3f7ce2d2</guid>
      <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
      <description>In the world of data engineering with Go, the OOMKilled (Exit Code 137) error is a common ghost in the machine. It often haunts developers…</description>
      <category>Go</category>
      <category>Data Engineering</category>
      <category>Career</category>
    </item>
    <item>
      <title>Database Seeder Implementation in the Go-Wordpress project</title>
      <link>https://mobinshaterian.com/blog/Database-Seeder-Implementation-in-the-Go-Wordpress-project-b09ce0a4728d</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Database-Seeder-Implementation-in-the-Go-Wordpress-project-b09ce0a4728d</guid>
      <pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate>
      <description>Overview</description>
      <category>Go</category>
    </item>
    <item>
      <title>Building a Category, Config &amp; Product Management System in Go: A Deep Dive</title>
      <link>https://mobinshaterian.com/blog/Building-a-Category--Config---Product-Management-System-in-Go--A-Deep-Dive-5100ef95f814</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-Category--Config---Product-Management-System-in-Go--A-Deep-Dive-5100ef95f814</guid>
      <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
      <description>Overview</description>
      <category>Go</category>
    </item>
    <item>
      <title>Go-WordPress: A Robust Web Scraping Architecture for Product Aggregation</title>
      <link>https://mobinshaterian.com/blog/Go-WordPress--A-Robust-Web-Scraping-Architecture-for-Product-Aggregation-e99de3f91bd5</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Go-WordPress--A-Robust-Web-Scraping-Architecture-for-Product-Aggregation-e99de3f91bd5</guid>
      <pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate>
      <description>Introduction</description>
      <category>Go</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>The “Phantom” 403: Solving Django CSRF Failures in Golang Clients</title>
      <link>https://mobinshaterian.com/blog/The--Phantom--403--Solving-Django-CSRF-Failures-in-Golang-Clients-83906f4770e8</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/The--Phantom--403--Solving-Django-CSRF-Failures-in-Golang-Clients-83906f4770e8</guid>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <description>In the world of backend development, few things are as frustrating as an API that works the first time perfectly but fails mysteriously on…</description>
      <category>Go</category>
      <category>API</category>
    </item>
    <item>
      <title>Bridging Networks: Using Nginx as a Reverse Proxy for Port Redirection</title>
      <link>https://mobinshaterian.com/blog/Bridging-Networks--Using-Nginx-as-a-Reverse-Proxy-for-Port-Redirection-b8e1f515b549</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Bridging-Networks--Using-Nginx-as-a-Reverse-Proxy-for-Port-Redirection-b8e1f515b549</guid>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <description>When managing distributed systems or local development environments, you often encounter a common networking hurdle: needing to access a…</description>

    </item>
    <item>
      <title>How to Port Forward Traffic to a Remote IP Using Iptables</title>
      <link>https://mobinshaterian.com/blog/How-to-Port-Forward-Traffic-to-a-Remote-IP-Using-Iptables-c3a8c10a6228</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/How-to-Port-Forward-Traffic-to-a-Remote-IP-Using-Iptables-c3a8c10a6228</guid>
      <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
      <description>In the world of networking, you often find yourself in a situation where a vital service — like a Swagger API dashboard — is hosted on a…</description>
      <category>API</category>
    </item>
    <item>
      <title>Go WordPress Crawler: Advanced Structural Improvements</title>
      <link>https://mobinshaterian.com/blog/Go-WordPress-Crawler--Advanced-Structural-Improvements-ec460d05c4f0</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Go-WordPress-Crawler--Advanced-Structural-Improvements-ec460d05c4f0</guid>
      <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
      <description>A Deep Dive into Enhanced Web Scraping Architecture and Configuration</description>
      <category>Go</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>When Authentication Grows Without a Plan: A Hidden Security Risk in Legacy Django and SPA Systems</title>
      <link>https://mobinshaterian.com/blog/When-Authentication-Grows-Without-a-Plan--A-Hidden-Security-Risk-in-Legacy-Django-and-SPA-Systems-eeb172bc92a8</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/When-Authentication-Grows-Without-a-Plan--A-Hidden-Security-Risk-in-Legacy-Django-and-SPA-Systems-eeb172bc92a8</guid>
      <pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate>
      <description>Modern web applications rarely start complex. A typical backend begins with session-based authentication, a frontend renders server-side…</description>
      <category>Security</category>
    </item>
    <item>
      <title>Building a Safe, Parallel WooCommerce Crawler in Go with Colly</title>
      <link>https://mobinshaterian.com/blog/Building-a-Safe--Parallel-WooCommerce-Crawler-in-Go-with-Colly-8786353b4b16</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-Safe--Parallel-WooCommerce-Crawler-in-Go-with-Colly-8786353b4b16</guid>
      <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
      <description>Web crawling often starts simple: fetch a listing page, extract some fields, and move on. The complexity appears when you need to enrich…</description>
      <category>Go</category>
      <category>Machine Learning</category>
    </item>
    <item>
      <title>Building a Go Microservice to Crawl WooCommerce Products</title>
      <link>https://mobinshaterian.com/blog/Building-a-Go-Microservice-to-Crawl-WooCommerce-Products-3910d3b99f1d</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-Go-Microservice-to-Crawl-WooCommerce-Products-3910d3b99f1d</guid>
      <pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate>
      <description>In this project, we explored how to design and implement a Go‑based microservice that crawls products from a WooCommerce WordPress site.</description>
      <category>Go</category>
      <category>Microservices</category>
    </item>
    <item>
      <title>Integrating SQLC and GraphQL in Go: A Practical Example with Product Filtering</title>
      <link>https://mobinshaterian.com/blog/Integrating-SQLC-and-GraphQL-in-Go--A-Practical-Example-with-Product-Filtering-4722e0a53179</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Integrating-SQLC-and-GraphQL-in-Go--A-Practical-Example-with-Product-Filtering-4722e0a53179</guid>
      <pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate>
      <description>GraphQL provides a powerful query language for clients, while SQLC generates type‑safe Go code directly from SQL queries</description>
      <category>Go</category>
      <category>GraphQL</category>
    </item>
    <item>
      <title>Designing a Scalable Poller–Dispatcher–Worker Architecture in Go</title>
      <link>https://mobinshaterian.com/blog/Designing-a-Scalable-Poller-Dispatcher-Worker-Architecture-in-Go-eb5576116190</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Designing-a-Scalable-Poller-Dispatcher-Worker-Architecture-in-Go-eb5576116190</guid>
      <pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate>
      <description>This architecture establishes a production-grade job processing system in Go by decoupling logic into a Poller (decision-maker), Dispatcher</description>
      <category>Go</category>
      <category>Architecture</category>
      <category>Machine Learning</category>
    </item>
    <item>
      <title>Combining SQLC and GraphQL in Go for Type‑Safe APIs</title>
      <link>https://mobinshaterian.com/blog/Combining-SQLC-and-GraphQL-in-Go-for-Type-Safe-APIs-0b77c1ae0249</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Combining-SQLC-and-GraphQL-in-Go-for-Type-Safe-APIs-0b77c1ae0249</guid>
      <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
      <description>Modern backend development often requires balancing flexibility for clients with performance and safety in the data layer. Two powerful…</description>
      <category>Go</category>
      <category>GraphQL</category>
      <category>Performance</category>
    </item>
    <item>
      <title>Database Migration Mismatch: The “Hash Client Secret” Error in Django OAuth🚨</title>
      <link>https://mobinshaterian.com/blog/Database-Migration-Mismatch--The--Hash-Client-Secret--Error-in-Django-OAuth---db8fc9a511c7</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Database-Migration-Mismatch--The--Hash-Client-Secret--Error-in-Django-OAuth---db8fc9a511c7</guid>
      <pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate>
      <description>The error message django.db.utils.ProgrammingError: column oauth2_provider_application.hash_client_secret does not exist is a classic…</description>
      <category>Security</category>
    </item>
    <item>
      <title>Building a GraphQL API in Go with Custom Scalars</title>
      <link>https://mobinshaterian.com/blog/Building-a-GraphQL-API-in-Go-with-Custom-Scalars-0b1a1b3e52f9</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-GraphQL-API-in-Go-with-Custom-Scalars-0b1a1b3e52f9</guid>
      <pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate>
      <description>GraphQL has become a powerful alternative to REST APIs, offering clients the ability to request exactly the data they need. In Go, the…</description>
      <category>Go</category>
      <category>API</category>
      <category>GraphQL</category>
    </item>
    <item>
      <title>Successfully Migrating from a Monolith to Microservices with a Technical-Debt Approach</title>
      <link>https://mobinshaterian.com/blog/Successfully-Migrating-from-a-Monolith-to-Microservices-with-a-Technical-Debt-Approach-aa08d713deec</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Successfully-Migrating-from-a-Monolith-to-Microservices-with-a-Technical-Debt-Approach-aa08d713deec</guid>
      <pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate>
      <description>Deciding to migrate from a large, aging monolithic system to a microservices architecture is often a reactive response to…</description>
      <category>Microservices</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>Complete Guide: Migrating from REST &amp; gRPC to GraphQL in Go</title>
      <link>https://mobinshaterian.com/blog/Complete-Guide--Migrating-from-REST---gRPC-to-GraphQL-in-Go-96c53025d9dc</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Complete-Guide--Migrating-from-REST---gRPC-to-GraphQL-in-Go-96c53025d9dc</guid>
      <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
      <description>we’ll walk through the complete process of migrating a Go application from a REST API with gRPC to a modern GraphQL Go base</description>
      <category>Go</category>
      <category>API</category>
      <category>gRPC</category>
      <category>GraphQL</category>
    </item>
    <item>
      <title>Adding ClickHouse to a Go Project: A Practical Guide Inspired by go-simple</title>
      <link>https://mobinshaterian.com/blog/Adding-ClickHouse-to-a-Go-Project--A-Practical-Guide-Inspired-by-go-simple-5a4cfef93e41</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Adding-ClickHouse-to-a-Go-Project--A-Practical-Guide-Inspired-by-go-simple-5a4cfef93e41</guid>
      <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
      <description>ClickHouse has become a favorite for developers who need fast analytical queries, real‑time inserts, and effortless scalability. But…</description>
      <category>Go</category>
      <category>ClickHouse</category>
    </item>
    <item>
      <title>Building a Complete Kafka + ClickHouse Streaming Stack with Docker Compose</title>
      <link>https://mobinshaterian.com/blog/Building-a-Complete-Kafka---ClickHouse-Streaming-Stack-with-Docker-Compose-98cbfc4bbf0c</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Building-a-Complete-Kafka---ClickHouse-Streaming-Stack-with-Docker-Compose-98cbfc4bbf0c</guid>
      <pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate>
      <description>The article demonstrates building a complete, reproducible real-time data streaming and analytics stack using Kafka and ClickHouse.</description>
      <category>Kafka</category>
      <category>ClickHouse</category>
      <category>Docker</category>
    </item>
    <item>
      <title>Rsync from One Origin to Multiple Destinations: Strategies and Solutions 🔄</title>
      <link>https://mobinshaterian.com/blog/Rsync-from-One-Origin-to-Multiple-Destinations--Strategies-and-Solutions----30fb79b4164d</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Rsync-from-One-Origin-to-Multiple-Destinations--Strategies-and-Solutions----30fb79b4164d</guid>
      <pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate>
      <description>Scale one-to-many rsync using a concurrent fan-out script or a staged mirroring hierarchy to ensure speed and consistency.</description>
      <category>Performance</category>
    </item>
    <item>
      <title>Preventing Race Conditions in Kubernetes Applications with Redis Locks</title>
      <link>https://mobinshaterian.com/blog/Preventing-Race-Conditions-in-Kubernetes-Applications-with-Redis-Locks-7da00ec8c8dd</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Preventing-Race-Conditions-in-Kubernetes-Applications-with-Redis-Locks-7da00ec8c8dd</guid>
      <pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate>
      <description>Redis provides a distributed lock for Kubernetes to manage concurrency and prevent race conditions in scheduled tasks.</description>
      <category>Redis</category>
      <category>Kubernetes</category>
    </item>
    <item>
      <title>Eliminating Code Duplication in Go with go:generate: A Practical Guide</title>
      <link>https://mobinshaterian.com/blog/Eliminating-Code-Duplication-in-Go-with-go-generate--A-Practical-Guide-13d40dfa6df1</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Eliminating-Code-Duplication-in-Go-with-go-generate--A-Practical-Guide-13d40dfa6df1</guid>
      <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
      <description>When building data-intensive applications in Go, you often find yourself writing repetitive boilerplate code.</description>
      <category>Go</category>
    </item>
    <item>
      <title>Getting Started with Docker files: A Complete Guide</title>
      <link>https://mobinshaterian.com/blog/Getting-Started-with-Docker-files--A-Complete-Guide-d1d5b2d44d1b</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Getting-Started-with-Docker-files--A-Complete-Guide-d1d5b2d44d1b</guid>
      <pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate>
      <description>Docker has revolutionized how developers build, ship, and run applications</description>
      <category>Docker</category>
    </item>
    <item>
      <title>Atomic Deployment of Go Binaries on Ubuntu with Cron</title>
      <link>https://mobinshaterian.com/blog/Atomic-Deployment-of-Go-Binaries-on-Ubuntu-with-Cron-dd7cf94cd8ab</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/Atomic-Deployment-of-Go-Binaries-on-Ubuntu-with-Cron-dd7cf94cd8ab</guid>
      <pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate>
      <description>This article presents a production-ready deployment strategy for Go applications on Ubuntu servers using GitLab CI/CD and cron scheduling.</description>
      <category>Go</category>
      <category>Linux</category>
      <category>DevOps</category>
      <category>Machine Learning</category>
    </item>
    <item>
      <title>PostgreSQL Foreign Data Wrappers for Data Federation</title>
      <link>https://mobinshaterian.com/blog/PostgreSQL-Foreign-Data-Wrappers-for-Data-Federation-7043c561f218</link>
      <guid isPermaLink="true">https://mobinshaterian.com/blog/PostgreSQL-Foreign-Data-Wrappers-for-Data-Federation-7043c561f218</guid>
      <pubDate>Sat, 22 Nov 2025 00:00:00 GMT</pubDate>
      <description>Foreign Data Wrappers (FDWs) are a powerful feature in PostgreSQL that enables the database to act as a federated data hub ,…</description>
      <category>Postgres</category>
    </item>
  </channel>
</rss>
