<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Brahim Boumlik — Engineering Insights</title>
    <link>https://www.boumlikbrahim.com</link>
    <description>Technical writing on cloud architecture, engineering leadership, and systems design by Brahim Boumlik, Technical Lead based in Casablanca, Morocco.</description>
    <language>en-US</language>
    <managingEditor>contact@boumlikbrahim.com (Brahim Boumlik)</managingEditor>
    <webMaster>contact@boumlikbrahim.com (Brahim Boumlik)</webMaster>
    <atom:link href="https://www.boumlikbrahim.com/feed.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Sun, 05 Apr 2026 02:38:28 GMT</lastBuildDate>
    <item>
      <title><![CDATA[How I Lead Engineering Teams: Lessons from Building a Product from 0 to Production]]></title>
      <link>https://www.boumlikbrahim.com/blog/technical-leadership-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/technical-leadership-complete</guid>
      <description><![CDATA[Leadership isn't just about code reviews and sprint planning. It's about context-switching between strategy and execution, protecting engineers from scope creep, and making the hard calls when no one else will. These are the principles I've developed leading teams through full product lifecycles.]]></description>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <category>Leadership</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[How I Run Projects: From Kickoff to On-Time Delivery]]></title>
      <link>https://www.boumlikbrahim.com/blog/project-management-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/project-management-complete</guid>
      <description><![CDATA[Every late project has the same root cause: unclear ownership and no defined definition of done. Here's the framework I use to scope work, align stakeholders, and ship predictably — regardless of whether the team runs Scrum, Kanban, or a hybrid.]]></description>
      <pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate>
      <category>Leadership</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[When to Split Your Application: An Architecture Decision Guide]]></title>
      <link>https://www.boumlikbrahim.com/blog/software-architecture-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/software-architecture-complete</guid>
      <description><![CDATA[The biggest architectural mistake teams make isn't choosing the wrong pattern — it's choosing too early. Here's the decision framework I use to determine whether a product is ready for microservices, and how to migrate without breaking everything in production.]]></description>
      <pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Shipping AI Features in Production: GPT-4o Inside a Live Platform]]></title>
      <link>https://www.boumlikbrahim.com/blog/ai-engineering-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/ai-engineering-complete</guid>
      <description><![CDATA[We didn't just add a chatbot — we embedded AI into the core prioritization engine at Fygurs. Here's how we designed the prompts, managed async load, and deployed GPT-4o-mini on Azure without adding latency to our critical path.]]></description>
      <pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[How We Deployed and Scaled on Azure: A Production Playbook]]></title>
      <link>https://www.boumlikbrahim.com/blog/azure-cloud-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/azure-cloud-complete</guid>
      <description><![CDATA[Moving to Azure Container Apps changed how fast we could ship. This is the exact setup we run at Fygurs — container registry, environment-based scaling, and automated deployments triggered by a GitHub push — with the lessons from doing it wrong first.]]></description>
      <pubDate>Thu, 05 Dec 2024 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Building Subscription Payments: Stripe from Design to Production]]></title>
      <link>https://www.boumlikbrahim.com/blog/stripe-integration-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/stripe-integration-complete</guid>
      <description><![CDATA[Payments are the most unforgiving part of any SaaS product — a bug here means lost revenue. We built Stripe's full subscription flow into a microservices architecture, including webhook retry logic, billing aggregation, and the edge cases nobody warns you about.]]></description>
      <pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Securing User Sessions: How Modern Authentication Works]]></title>
      <link>https://www.boumlikbrahim.com/blog/jwt-management-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/jwt-management-complete</guid>
      <description><![CDATA[Most auth vulnerabilities aren't in the login form — they're in how tokens are issued, stored, and invalidated. This breaks down access/refresh token flows, blacklisting strategies, and the production edge cases that keep user sessions genuinely secure.]]></description>
      <pubDate>Tue, 20 Aug 2024 00:00:00 GMT</pubDate>
      <category>Security</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Adding a Second Lock on the Door: Implementing 2FA]]></title>
      <link>https://www.boumlikbrahim.com/blog/two-factor-auth-setup</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/two-factor-auth-setup</guid>
      <description><![CDATA[Two-factor auth is table stakes for any product handling sensitive data. Here's how we implemented TOTP with QR codes, backup codes, and account recovery — and the encryption decisions that made it production-safe.]]></description>
      <pubDate>Sat, 10 Aug 2024 00:00:00 GMT</pubDate>
      <category>Security</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[One Codebase, Multiple Products: How Monorepos Accelerate Teams]]></title>
      <link>https://www.boumlikbrahim.com/blog/monorepo-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/monorepo-complete</guid>
      <description><![CDATA[Splitting a product into separate repositories feels clean until you need to share types, coordinate releases, or run a single CI pipeline. Monorepos solve this — here's when to make the move and how to structure it so it stays manageable as the team grows.]]></description>
      <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
      <category>Architecture</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Shipping Faster with Automated Pipelines: CI/CD with GitHub Actions]]></title>
      <link>https://www.boumlikbrahim.com/blog/github-actions-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/github-actions-complete</guid>
      <description><![CDATA[Every manual deployment is a deployment that will eventually be forgotten or done wrong. This is the GitHub Actions setup we use to build, test, and ship to Azure on every merge — with caching strategies that make pipelines actually fast.]]></description>
      <pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[From Code to Container: A Production Docker Guide]]></title>
      <link>https://www.boumlikbrahim.com/blog/docker-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/docker-complete</guid>
      <description><![CDATA[Containers are only as good as the build strategy behind them. This covers the multi-stage setup we use to keep production images lean, the Compose orchestration for local development, and the configuration mistakes that bloat images and slow pipelines.]]></description>
      <pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Scaling Applications in the Cloud: Kubernetes and GitOps in Practice]]></title>
      <link>https://www.boumlikbrahim.com/blog/container-orchestration-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/container-orchestration-complete</guid>
      <description><![CDATA[Kubernetes enforces a discipline — every change is declarative, every deployment is auditable, and rollbacks are a single command. Here's how we run K3s clusters with ArgoCD for continuous delivery without manual intervention.]]></description>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Automating Cloud Infrastructure: From Manual Setup to Code-Driven Deployment]]></title>
      <link>https://www.boumlikbrahim.com/blog/cloud-1-ansible-iac</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/cloud-1-ansible-iac</guid>
      <description><![CDATA[If you can't recreate your infrastructure from scratch in under 30 minutes, you have a single point of failure. Ansible lets you describe exactly what a server should look like and apply it repeatedly, identically, across every environment.]]></description>
      <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Enforcing Code Standards Across a Multi-Language Team]]></title>
      <link>https://www.boumlikbrahim.com/blog/code-quality-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/code-quality-complete</guid>
      <description><![CDATA[Code quality in a team isn't about personal preference — it's about reducing review friction and preventing entire classes of bugs. This is the linting and formatting setup we use across TypeScript and Python in a shared monorepo, enforced automatically in CI.]]></description>
      <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
      <category>Cloud & DevOps</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[How We Architected a Production SaaS: A Microservices Deep Dive]]></title>
      <link>https://www.boumlikbrahim.com/blog/nestjs-microservices-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/nestjs-microservices-complete</guid>
      <description><![CDATA[Building a product strategy platform means handling auth, roadmapping, payments, notifications, and real-time collaboration — all independently scalable. This is the architecture we landed on after several iterations in a production SaaS, the tradeoffs we made, and what we'd reconsider.]]></description>
      <pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[How Our Services Talk to Each Other: Message Queues Explained]]></title>
      <link>https://www.boumlikbrahim.com/blog/rabbitmq-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/rabbitmq-complete</guid>
      <description><![CDATA[When two services need to communicate without blocking each other, you need a message queue. RabbitMQ decouples our services, handles retries, and bridges our Node.js and Python microservices — here's how it works and why we chose it.]]></description>
      <pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[The Blueprints Behind Good Software: Design Patterns Explained]]></title>
      <link>https://www.boumlikbrahim.com/blog/design-patterns-typescript-guide</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/design-patterns-typescript-guide</guid>
      <description><![CDATA[The same problems appear in almost every software project — initialization, dependency management, behavior switching. Design patterns are the battle-tested solutions. Here's how they look in real code, not textbook diagrams.]]></description>
      <pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Technical Debt: How to Identify and Eliminate It Before It Costs You]]></title>
      <link>https://www.boumlikbrahim.com/blog/refactoring-techniques-guide</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/refactoring-techniques-guide</guid>
      <description><![CDATA[Technical debt is the interest paid on past shortcuts. Left unchecked, it slows every new feature and drives good engineers out. Here's how to spot it, measure it, and systematically reduce it without halting product delivery.]]></description>
      <pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Designing Databases for Scale: Isolated Data Per Service]]></title>
      <link>https://www.boumlikbrahim.com/blog/prisma-database-per-microservice</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/prisma-database-per-microservice</guid>
      <description><![CDATA[Shared databases are the most common microservices mistake. When every service reads and writes to the same tables, you lose the ability to scale, deploy, and version them independently. Here's the database-per-service pattern and how we implemented it.]]></description>
      <pubDate>Fri, 25 Oct 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Storing and Serving Files in the Cloud: Azure Blob Storage in Practice]]></title>
      <link>https://www.boumlikbrahim.com/blog/azure-blob-storage</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/azure-blob-storage</guid>
      <description><![CDATA[File handling in a microservices environment is harder than it looks — upload limits, streaming, access control, and durability all need to be designed upfront. This covers how we built a scalable document management system on Azure Blob Storage.]]></description>
      <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Real-Time Communication: How WebSockets Power Live Features]]></title>
      <link>https://www.boumlikbrahim.com/blog/nestjs-websockets</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/nestjs-websockets</guid>
      <description><![CDATA[HTTP requests are stateless — great for fetching data, not for reacting to events as they happen. WebSockets keep a persistent connection open, which is how we power live matchmaking, notifications, and presence indicators without constant polling.]]></description>
      <pubDate>Sun, 25 Aug 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Online Now: Building Real-Time Presence and Notification Systems]]></title>
      <link>https://www.boumlikbrahim.com/blog/notifications-presence-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/notifications-presence-complete</guid>
      <description><![CDATA[Knowing who's online and alerting them instantly changes how people use a product. This covers the full stack for presence tracking and live notifications — from Socket.io events to the Browser Notifications API and push with service workers.]]></description>
      <pubDate>Tue, 30 Jul 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Building Slack-Style Chat from Scratch: Architecture and Trade-offs]]></title>
      <link>https://www.boumlikbrahim.com/blog/chat-implementation-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/chat-implementation-complete</guid>
      <description><![CDATA[Chat is deceptively complex — rooms, direct messages, moderation, blocked users, and message persistence all interact in non-obvious ways. This walks through the full implementation we built for a live multiplayer platform and the decisions that shaped it.]]></description>
      <pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[End-to-End Authentication: Designing a Secure Login System]]></title>
      <link>https://www.boumlikbrahim.com/blog/secure-auth-nextjs-nestjs-prisma</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/secure-auth-nextjs-nestjs-prisma</guid>
      <description><![CDATA[Authentication done right touches the frontend, backend, database, and infrastructure simultaneously. This walks through the full stack — session flow, JWT validation, user models, and the hardening decisions that make it production-safe.]]></description>
      <pubDate>Fri, 22 Mar 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Managing a Large Codebase at Speed: Turborepo in Production]]></title>
      <link>https://www.boumlikbrahim.com/blog/saas-platform-turborepo-nestjs-django</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/saas-platform-turborepo-nestjs-django</guid>
      <description><![CDATA[When a monorepo grows to dozens of packages and CI takes 20 minutes, something has to change. Turborepo's task graph and remote caching cut our pipeline times dramatically — here's the exact configuration we run and the pitfalls we worked around.]]></description>
      <pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Building an Operating System from Zero: What It Taught Me About Computers]]></title>
      <link>https://www.boumlikbrahim.com/blog/kernel-dev-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/kernel-dev-complete</guid>
      <description><![CDATA[There's no better way to understand how software works than to build the thing it runs on. Starting from a blank bootloader, I implemented interrupt handling, a keyboard driver, and memory paging — entirely from scratch, no frameworks underneath.]]></description>
      <pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[How Attackers Break Software: A Security Research Deep Dive]]></title>
      <link>https://www.boumlikbrahim.com/blog/binary-exploitation</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/binary-exploitation</guid>
      <description><![CDATA[Understanding how vulnerabilities are exploited is the only reliable way to design software that resists them. This covers the mechanics behind common attack techniques — grounded in real controlled-environment CTF research and what each one teaches about defensive engineering.]]></description>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <category>Security</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
    <item>
      <title><![CDATA[Security from the Attacker's Perspective: Lessons from Vulnerability Research]]></title>
      <link>https://www.boumlikbrahim.com/blog/cybersecurity-complete</link>
      <guid isPermaLink="true">https://www.boumlikbrahim.com/blog/cybersecurity-complete</guid>
      <description><![CDATA[The best secure code is written by engineers who understand how it breaks. This documents a structured journey through real security research — logical flaws, memory corruption, and exploitation techniques — and the defensive lessons each one surfaced.]]></description>
      <pubDate>Sat, 15 Jan 2022 00:00:00 GMT</pubDate>
      <category>Security</category>
      <author>contact@boumlikbrahim.com (Brahim Boumlik)</author>
    </item>
  </channel>
</rss>