{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "HexGigs Backend Labs",
  "home_page_url": "https://blog.hexgigs.com/",
  "feed_url": "https://blog.hexgigs.com/jsonfeed.json",
  "description": ".NET, SQL, RabbitMQ, background services, and AI notes from Omarr.",
  "items": [
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-code-engineering-judgment.html",
      "url": "https://blog.hexgigs.com/posts/ai-code-engineering-judgment.html",
      "title": "AI Can Write the Code. You Still Own the Architecture.",
      "summary": "AI can generate impressive code, but architecture, trade-offs, failure handling, and production ownership still require engineering judgment.",
      "date_published": "2026-09-08T12:00:00-05:00",
      "tags": [
        "AI",
        "Software Engineering",
        ".NET",
        "Architecture"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/dotnet-caching-production.html",
      "url": "https://blog.hexgigs.com/posts/dotnet-caching-production.html",
      "title": "Caching in .NET: The Fastest Code Is the Code You Never Execute",
      "summary": "Practical caching strategies for modern .NET applications.",
      "date_published": "2026-07-11T12:00:00-05:00",
      "tags": [
        "dotnet",
        "performance",
        "caching",
        "architecture"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/designing-event-driven-systems-production.html",
      "url": "https://blog.hexgigs.com/posts/designing-event-driven-systems-production.html",
      "title": "Designing Event-Driven Systems That Survive Production",
      "summary": "Lessons learned from designing resilient event-driven systems with .NET, RabbitMQ, retries, idempotency, and observability.",
      "date_published": "2026-07-08T12:00:00-05:00",
      "tags": [
        "architecture",
        "rabbitmq",
        "dotnet",
        "event-driven"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/how-i-use-ai-daily-senior-dotnet-engineer.html",
      "url": "https://blog.hexgigs.com/posts/how-i-use-ai-daily-senior-dotnet-engineer.html",
      "title": "How I Use AI Daily as a Senior Software Engineer (.NET Edition)",
      "summary": "How I practically use AI every day as a senior .NET engineer.",
      "date_published": "2026-05-25T12:00:00-05:00",
      "tags": [
        "ai",
        "dotnet",
        "developer-productivity"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-real-backend-systems-where-it-creates-value.html",
      "url": "https://blog.hexgigs.com/posts/ai-real-backend-systems-where-it-creates-value.html",
      "title": "AI in Real Backend Systems: Where It Actually Creates Value",
      "summary": "A practical backend-engineer view of where AI creates real business value inside production systems.",
      "date_published": "2026-04-22T12:00:00-05:00",
      "tags": [
        "ai",
        "backend",
        "architecture"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/dotnet-integration-testing-what-unit-tests-miss.html",
      "url": "https://blog.hexgigs.com/posts/dotnet-integration-testing-what-unit-tests-miss.html",
      "title": "Integration Testing in .NET: What Unit Tests Don’t Catch",
      "summary": "Why integration testing matters in .NET systems and what unit tests fail to catch in real production code.",
      "date_published": "2026-04-06T12:00:00-05:00",
      "tags": [
        "dotnet",
        "testing",
        "integration-testing"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/dotnet10-unit-testing-real-world.html",
      "url": "https://blog.hexgigs.com/posts/dotnet10-unit-testing-real-world.html",
      "title": "Unit Testing in .NET 10: What Actually Matters in Real Systems",
      "summary": "A practical guide to unit testing in .NET 10.",
      "date_published": "2026-04-01T12:00:00-05:00",
      "tags": [
        "dotnet",
        "testing"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/dotnet10-csharp-quick-tips.html",
      "url": "https://blog.hexgigs.com/posts/dotnet10-csharp-quick-tips.html",
      "title": "C# and .NET 10: Small Things That Make a Big Difference",
      "summary": "Practical C# tips for modern .NET backend systems.",
      "date_published": "2026-03-18T12:00:00-06:00",
      "tags": [
        "dotnet",
        "csharp"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/python-ai-importance.html",
      "url": "https://blog.hexgigs.com/posts/python-ai-importance.html",
      "title": "Why Python Became the Language of AI",
      "summary": "Why Python dominates the machine learning ecosystem.",
      "date_published": "2026-03-15T12:00:00-06:00",
      "tags": [
        "ai",
        "python"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/rabbitmq-patterns-backend-systems.html",
      "url": "https://blog.hexgigs.com/posts/rabbitmq-patterns-backend-systems.html",
      "title": "RabbitMQ Patterns Every Backend Engineer Should Know",
      "summary": "Common RabbitMQ messaging patterns used in production backend systems.",
      "date_published": "2026-03-08T12:00:00-06:00",
      "tags": [
        "rabbitmq",
        "backend"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/data-science-ai-engineering-boundary.html",
      "url": "https://blog.hexgigs.com/posts/data-science-ai-engineering-boundary.html",
      "title": "Data Science vs Software Engineering: Where AI Systems Actually Meet",
      "summary": "How data science and engineering combine to create real AI systems.",
      "date_published": "2026-03-06T12:00:00-06:00",
      "tags": [
        "ai",
        "data-science"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-probability-uncertainty.html",
      "url": "https://blog.hexgigs.com/posts/ai-probability-uncertainty.html",
      "title": "Probability, Uncertainty, and Why AI Outputs Are Never “Certain”",
      "summary": "Understanding probability and uncertainty in AI systems.",
      "content_text": "AI models estimate probabilities. They do not produce certainties.",
      "date_published": "2026-02-20T12:00:00-06:00",
      "tags": [
        "ai",
        "statistics",
        "probability"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-math-statistics-foundation.html",
      "url": "https://blog.hexgigs.com/posts/ai-math-statistics-foundation.html",
      "title": "Math, Statistics, and Why AI Is Not Magic",
      "summary": "Why math and statistics are the real foundation of AI and ML — beyond the hype.",
      "content_text": "AI is not magic. It is applied mathematics and statistics at scale.",
      "date_published": "2026-02-06T12:00:00-06:00",
      "tags": [
        "ai",
        "math",
        "statistics",
        "ml"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-production-guardrails.html",
      "url": "https://blog.hexgigs.com/posts/ai-production-guardrails.html",
      "title": "Designing Guardrails for AI in Production Backends",
      "content_text": "Practical guardrails for running AI safely in real backend systems.",
      "date_published": "2026-01-21T12:00:00-06:00"
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-backend-automation-vs-engineering.html",
      "url": "https://blog.hexgigs.com/posts/ai-backend-automation-vs-engineering.html",
      "title": "AI in backend systems: where automation ends and engineering still matters",
      "summary": "A senior-level look at where AI genuinely helps backend systems and where engineering judgment still matters.",
      "content_html": "<p>AI helps backend engineers reduce cognitive load, but it does not replace engineering judgment.</p>",
      "date_published": "2026-01-18T00:00:00Z",
      "tags": [
        "ai",
        "backend",
        "architecture"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/dotnet-10-backend-what-matters.html",
      "url": "https://blog.hexgigs.com/posts/dotnet-10-backend-what-matters.html",
      "title": ".NET 10 for Backend Engineers: What’s Actually Worth Paying Attention To",
      "content_text": "A backend-focused look at .NET 10 and what actually changes for production systems.",
      "date_published": "2026-01-14T12:00:00-06:00"
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/backend-idempotency-patterns.html",
      "url": "https://blog.hexgigs.com/posts/backend-idempotency-patterns.html",
      "title": "Idempotency in backend systems",
      "summary": "Why retries make idempotency mandatory in backend systems, especially for APIs and queue-driven workflows.",
      "content_html": "<p>Idempotency is the difference between a system that retries safely and one that creates duplicate side effects.</p>",
      "date_published": "2026-01-08T00:00:00Z",
      "tags": [
        "architecture",
        "backend",
        "reliability"
      ]
    },
    {
      "id": "https://omarr-backend-lab.netlify.app/posts/ai-backend-agents.html",
      "url": "https://blog.hexgigs.com/posts/ai-backend-agents.html",
      "title": "Why AI agents are becoming backend engineers' new teammates",
      "content_html": "<p>How AI agents are evolving from code helpers into always-on backend teammates that triage incidents, steer background jobs, and operate inside your .NET and SQL stack.</p>",
      "summary": "How AI agents are evolving from code helpers into always-on backend teammates that triage incidents, steer background jobs, and operate inside your .NET and SQL stack.",
      "date_published": "2025-11-19T00:00:00Z",
      "tags": [
        "ai",
        "backend",
        "agents",
        ".net"
      ]
    },
    {
      "id": "agentic-vs-generative-ai-2025-11-17",
      "url": "https://blog.hexgigs.com/posts/agentic-vs-generative-ai-backend.html",
      "title": "Agentic AI vs “plain” generative AI for backend systems",
      "content_text": "A backend-focused look at when a simple generative AI call is enough and when you want an agent that can plan, use tools, and orchestrate work across services.",
      "date_published": "2025-11-17T10:05:00-06:00",
      "tags": [
        "AI",
        "agentic AI",
        "generative AI",
        "architecture"
      ]
    },
    {
      "id": "dotnet-json-handling-2025-11-16",
      "url": "https://blog.hexgigs.com/posts/dotnet-json-handling.html",
      "title": "Pragmatic JSON handling in .NET",
      "content_text": "How I keep JSON contracts boring and predictable in backend services: DTOs, versioning, validation, and logging without drowning in payloads.",
      "date_published": "2025-11-16T16:20:00-06:00",
      "tags": [
        ".NET",
        "JSON",
        "APIs"
      ]
    },
    {
      "id": "blue-green-deployments-2025-11-14",
      "url": "https://blog.hexgigs.com/posts/blue-green-deployments.html",
      "title": "Blue/green deployments without drama",
      "content_text": "Practical blue/green strategies for APIs, queues, and background workers so rollouts and rollbacks stay boring.",
      "date_published": "2025-11-14T15:10:00-06:00",
      "tags": [
        "deployments",
        "blue/green",
        "background services"
      ]
    },
    {
      "id": "dotnet-9-backend-services-2025-11-10",
      "url": "https://blog.hexgigs.com/posts/dotnet-9-backend-services.html",
      "title": ".NET 9 for backend services: what actually matters",
      "content_text": "An opinionated look at what .NET 9 changes for backend services and APIs: runtime performance, Aspire, C# 13 and more.",
      "date_published": "2025-11-10T20:30:00-06:00",
      "tags": [
        ".NET",
        ".NET 9",
        "backend"
      ]
    },
    {
      "id": "dotnet-efcore-dapper-2025-11-08",
      "url": "https://blog.hexgigs.com/posts/dotnet-efcore-dapper.html",
      "title": "EF Core or Dapper? How I decide",
      "content_text": "A practical guide to choosing between EF Core and Dapper without turning it into a religion.",
      "date_published": "2025-11-08T19:45:00-06:00",
      "tags": [
        ".NET",
        "EF Core",
        "Dapper",
        "data access"
      ]
    },
    {
      "id": "dotnet-record-class-struct-2025-11-06",
      "url": "https://blog.hexgigs.com/posts/dotnet-record-class-struct.html",
      "title": "Record vs class vs struct in C#",
      "content_text": "Simple heuristics I use for choosing record, class, or struct when modelling backend data and domain types.",
      "date_published": "2025-11-06T21:30:00-06:00",
      "tags": [
        ".NET",
        "C#",
        "design"
      ]
    },
    {
      "id": "dotnet-threading-basics-2025-10-25",
      "url": "https://blog.hexgigs.com/posts/dotnet-threading-basics.html",
      "title": "Threading in .NET: the mental model",
      "content_text": "A backend-focused way to think about threads, tasks, and async/await so you can reason about throughput and bugs.",
      "date_published": "2025-10-25T14:15:00-06:00",
      "tags": [
        ".NET",
        "threading",
        "async"
      ]
    },
    {
      "id": "sql-functions-vs-procs-vs-views-2025-10-05",
      "url": "https://blog.hexgigs.com/posts/sql-functions-vs-procs-vs-views.html",
      "title": "Functions vs stored procedures vs views vs CTEs vs temp tables",
      "content_text": "How I choose the right SQL tool for the job instead of defaulting everything to 'just put it in a stored procedure'.",
      "date_published": "2025-10-05T17:00:00-06:00",
      "tags": [
        "SQL",
        "design"
      ]
    },
    {
      "id": "dotnet-resilient-background-services-2025-05-02",
      "url": "https://blog.hexgigs.com/posts/dotnet-resilient-background-services.html",
      "title": "Designing resilient .NET 8 background services",
      "content_text": "How I structure long-running BackgroundService types with graceful shutdown, retry logic, and observability.",
      "date_published": "2025-05-02T21:15:00-06:00",
      "tags": [
        ".NET",
        "background services"
      ]
    },
    {
      "id": "dotnet-splitting-monolith-queues-2025-04-18",
      "url": "https://blog.hexgigs.com/posts/dotnet-splitting-monolith-queues.html",
      "title": "Splitting a monolith into queue-driven microservices",
      "content_text": "Lessons from carving out a high-throughput eligibility processor into smaller queue-driven services.",
      "date_published": "2025-04-18T20:40:00-06:00",
      "tags": [
        ".NET",
        "architecture",
        "microservices"
      ]
    },
    {
      "id": "sql-senior-level-queries-2025-03-10",
      "url": "https://blog.hexgigs.com/posts/sql-senior-level-queries.html",
      "title": "From “it works” queries to senior-level SQL",
      "content_text": "Taking queries from 'it works' to production-grade with plans, indexing, and parameter sniffing awareness.",
      "date_published": "2025-03-10T19:05:00-06:00",
      "tags": [
        "SQL",
        "performance"
      ]
    },
    {
      "id": "sql-event-logs-replays-2025-02-21",
      "url": "https://blog.hexgigs.com/posts/sql-event-logs-replays.html",
      "title": "Event logs, audit trails, and replays in SQL",
      "content_text": "How I design schemas that support replaying state, tracking changes, and debugging nasty production issues.",
      "date_published": "2025-02-21T09:55:00-06:00",
      "tags": [
        "SQL",
        "audit",
        "events"
      ]
    },
    {
      "id": "rabbitmq-channel-best-practices-2025-01-30",
      "url": "https://blog.hexgigs.com/posts/rabbitmq-channel-best-practices.html",
      "title": "RabbitMQ channel & connection best practices",
      "content_text": "Sharing channels, connection pools, prefetch tuning, and isolating workloads so one bad consumer can’t ruin everything.",
      "date_published": "2025-01-30T11:20:00-06:00",
      "tags": [
        "RabbitMQ",
        "messaging"
      ]
    },
    {
      "id": "rabbitmq-dead-letter-queues-2025-01-05",
      "url": "https://blog.hexgigs.com/posts/rabbitmq-dead-letter-queues.html",
      "title": "Dead-letter queues and poison message handling",
      "content_text": "A practical pattern for dealing with poison messages, retries, and 'at least once' delivery without a graveyard queue.",
      "date_published": "2025-01-05T22:10:00-06:00",
      "tags": [
        "RabbitMQ",
        "DLQ",
        "reliability"
      ]
    },
    {
      "id": "background-cron-like-scheduler-2024-12-15",
      "url": "https://blog.hexgigs.com/posts/background-cron-like-scheduler.html",
      "title": "Cron-like scheduling with .NET background workers",
      "content_text": "Building a lightweight scheduler for recurring jobs without pulling in heavy frameworks.",
      "date_published": "2024-12-15T06:30:00-06:00",
      "tags": [
        ".NET",
        "background services",
        "scheduling"
      ]
    },
    {
      "id": "background-observability-2024-11-28",
      "url": "https://blog.hexgigs.com/posts/background-observability.html",
      "title": "Making invisible background jobs observable",
      "content_text": "Metrics, logging, and tracing strategies so your background processes stop being a black box.",
      "date_published": "2024-11-28T15:45:00-06:00",
      "tags": [
        "observability",
        "background services"
      ]
    },
    {
      "id": "https://omr-holiday-atlas.netlify.app",
      "url": "https://omr-holiday-atlas.netlify.app",
      "title": "OMR Holiday Atlas — side project",
      "content_html": "<p>A small travel-planning web app built by Omarr as a playground for frontend and API integration experiments.</p>",
      "summary": "A small travel-planning web app built as a playground for frontend and API integration experiments.",
      "date_published": "2025-11-10T00:00:00Z",
      "tags": [
        "project",
        "frontend",
        "travel"
      ]
    },
    {
      "id": "https://omrcade.netlify.app",
      "url": "https://omrcade.netlify.app",
      "title": "OMRCade — JavaScript mini arcade",
      "content_html": "<p>A browser-based mini arcade of JavaScript games with a dark theme, used as a sandbox for UI and game loop experiments.</p>",
      "summary": "A dark-themed browser mini arcade used as a sandbox for JavaScript game loops and UI experiments.",
      "date_published": "2025-11-12T00:00:00Z",
      "tags": [
        "project",
        "javascript",
        "games"
      ]
    }
  ]
}
