<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Writing by Azraf Al Monzim</title><description>Notes on building systems, understanding failures, and making software that works.</description><link>https://monzim.com/blog</link><language>en</language><item><title>UCAM Cloud: a realtime seat board that never blocks section selection</title><link>https://monzim.com/blog/ucam-cloud-realtime-seat-board-websocket-redis</link><guid isPermaLink="true">https://monzim.com/blog/ucam-cloud-realtime-seat-board-websocket-redis</guid><description>A WebSocket seat board fed by Redis pub/sub, built as a fire-and-forget side-car that can never take down UCamCloud&apos;s section-selection hot path.</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><category>Distributed systems</category><category>websocket</category><category>redis</category><category>go</category><category>realtime</category><category>architecture</category><category>distributed-systems</category></item><item><title>Advising day: the afternoon a whole semester picks its seats at once</title><link>https://monzim.com/blog/advising-day-at-scale-summer26</link><guid isPermaLink="true">https://monzim.com/blog/advising-day-at-scale-summer26</guid><description>Wanna know something crazy? A platform that sleeps most of the year, then takes thousands of requests a second in one afternoon and what bot defense did to the flood.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Distributed systems</category><category>scale</category><category>performance</category><category>reliability</category><category>bot-detection</category><category>engineering</category></item><item><title>ULID: the unique ID that sorts itself</title><link>https://monzim.com/blog/ulid-sortable-unique-id</link><guid isPermaLink="true">https://monzim.com/blog/ulid-sortable-unique-id</guid><description>Why random UUIDs wreck your database index, how a ULID&apos;s 48-bit timestamp + 80-bit randomness fixes it, and when to pick ULID over UUIDv4 and UUIDv7.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>Distributed systems</category><category>ulid</category><category>uuid</category><category>databases</category><category>identifiers</category><category>postgres</category></item><item><title>Distributed rate limiting at the edge with Cloudflare Durable Objects</title><link>https://monzim.com/blog/distributed-rate-limiting-cloudflare-durable-objects</link><guid isPermaLink="true">https://monzim.com/blog/distributed-rate-limiting-cloudflare-durable-objects</guid><description>Why the per-colo rate-limit binding leaked my API limits, and how one single-threaded Durable Object per key running a sliding window counter fixed it.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>cloudflare</category><category>durable-objects</category><category>rate-limiting</category><category>edge</category><category>workers</category></item><item><title>Counting views at the edge for a dollar a month without a single cookie</title><link>https://monzim.com/blog/edge-view-counter-cloudflare-kv-d1</link><guid isPermaLink="true">https://monzim.com/blog/edge-view-counter-cloudflare-kv-d1</guid><description>A deep dive into the privacy-first view counter behind my portfolio: a Cloudflare Workers KV hot path, a D1 read model, two cron jobs, and a salted hash that forgets you at midnight.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>cloudflare-workers</category><category>kv</category><category>d1</category><category>analytics</category><category>edge</category><category>privacy</category></item><item><title>Postmortem: DocPipe v1 hung under load</title><link>https://monzim.com/blog/docpipe-v1-hang-postmortem</link><guid isPermaLink="true">https://monzim.com/blog/docpipe-v1-hang-postmortem</guid><description>A sanitised postmortem for the DocPipe v1 service hang — root cause, timeline, fix, and the soak test that prevents the failure mode from coming back. Google SRE Chapter 15 format.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>postmortem</category><category>docpipe</category><category>chromium</category><category>go</category><category>reliability</category><category>tini</category><category>sre</category></item><item><title>Three bugs that hung my PDF service | DocPipe</title><link>https://monzim.com/blog/docpipe-v2-three-bugs</link><guid isPermaLink="true">https://monzim.com/blog/docpipe-v2-three-bugs</guid><description>My HTML-to-PDF service hung under load. The fix was three problems compounding — a zombie reaper, a chromedp lifetime gotcha, and a synchronously-fired event I was waiting for asynchronously.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>go</category><category>chromedp</category><category>docker</category><category>pdf</category><category>debugging</category></item><item><title>Beyond the Chat Window: How Claude Code Actually Persists Knowledge Between Sessions</title><link>https://monzim.com/blog/claude-code-memory-system-explained</link><guid isPermaLink="true">https://monzim.com/blog/claude-code-memory-system-explained</guid><description>Every Claude Code session starts blank. No memory, no continuity. Yet somehow it knows your stack, your conventions, your quirks. Here&apos;s exactly how that works.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><category>AI &amp; tooling</category><category>claude-code</category><category>ai-tools</category><category>developer-experience</category><category>productivity</category></item><item><title>EduQueue Deep Dive: The Asynq Worker Pool, ChromeDP PDF Pipeline &amp; Live-Reload Settings</title><link>https://monzim.com/blog/eduqueue-async-worker-pool</link><guid isPermaLink="true">https://monzim.com/blog/eduqueue-async-worker-pool</guid><description>A platform-engineering deep dive into UIU EduQueue&apos;s async backbone — Asynq with a 10-permit global pool and a 2-permit ChromeDP semaphore, idempotent PDF generation, presigned R2 URLs, gocron-driven monitoring, and a Redis pub/sub settings service that live-reloads worker behavior without a redeploy.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>Go</category><category>Asynq</category><category>Redis</category><category>ChromeDP</category><category>Maroto</category><category>PDF Generation</category><category>Cloudflare R2</category><category>Presigned URLs</category><category>gocron</category><category>Live Reload</category><category>Pub/Sub</category><category>Platform Engineering</category><category>Deep Dive</category><category>EduQueue</category></item><item><title>EduQueue Deep Dive: Multi-Provider Email Failover, Bounce Idempotency &amp; Tracking Pixels</title><link>https://monzim.com/blog/eduqueue-email-failover</link><guid isPermaLink="true">https://monzim.com/blog/eduqueue-email-failover</guid><description>A platform-engineering deep dive into UIU EduQueue&apos;s email subsystem — the pluggable EmailProvider interface, per-provider sliding-window rate limiting in Redis, the AWS SES → Azure CS → custom Cloudflare Worker fallback chain, idempotent bounce-webhook handling, and the cache-defeating tracking pixel that survives Gmail&apos;s image proxy.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>Go</category><category>Email</category><category>AWS SES</category><category>Azure Communication Services</category><category>Cloudflare Workers</category><category>Redis</category><category>Rate Limiting</category><category>Webhooks</category><category>Idempotency</category><category>Tracking Pixels</category><category>Platform Engineering</category><category>Deep Dive</category><category>EduQueue</category></item><item><title>EduQueue Deep Dive: OTP-Authenticated Operator Console &amp; Append-Only Email Analytics</title><link>https://monzim.com/blog/eduqueue-otp-console-analytics</link><guid isPermaLink="true">https://monzim.com/blog/eduqueue-otp-console-analytics</guid><description>A platform-engineering deep dive into UIU EduQueue&apos;s operator surface — passwordless OTP login backed by Redis-TTL sessions, the append-only EmailEvent schema, on-demand analytics rollups, the campaign builder&apos;s draft → scheduled → sending → sent state machine, and the live &quot;pause everything&quot; toggle that runs over Redis pub/sub.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>Go</category><category>OTP</category><category>Passwordless Auth</category><category>Redis Sessions</category><category>Analytics</category><category>Append-Only</category><category>Email Tracking</category><category>Campaign Builder</category><category>State Machine</category><category>Operator Console</category><category>Platform Engineering</category><category>Deep Dive</category><category>EduQueue</category></item><item><title>From GitHub Actions to Self-Hosted CI/CD: My Woodpecker Migration Guide with Docker</title><link>https://monzim.com/blog/from-github-actions-to-woodpecker</link><guid isPermaLink="true">https://monzim.com/blog/from-github-actions-to-woodpecker</guid><description>A platform engineer&apos;s comprehensive guide to migrating from GitHub Actions to self-hosted Woodpecker CI with Docker Compose. Covers setup, pipeline configuration, security best practices, scaling strategies, and an honest cost comparison.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><category>Infrastructure</category><category>CI/CD</category><category>Woodpecker CI</category><category>Docker</category><category>Self-Hosted</category><category>Platform Engineering</category><category>DevOps</category><category>GitHub Actions</category><category>Docker Compose</category><category>Infrastructure</category><category>Automation</category></item><item><title>Building a Privacy-First Media Sharing System: The Friniemy Architecture</title><link>https://monzim.com/blog/friniemy-media-architecture</link><guid isPermaLink="true">https://monzim.com/blog/friniemy-media-architecture</guid><description>In building Friniemy, a modern social media platform, one of our biggest challenges was creating a media sharing system that truly respects user privacy while maintaining excellent performance. This is the story of how we architected a solution using a dual-bucket storage strategy.</description><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><category>Distributed systems</category><category>Architecture</category><category>Privacy</category><category>Cloud Storage</category><category>Social Media</category><category>NestJS</category></item><item><title>Understanding IPFS: The InterPlanetary File System</title><link>https://monzim.com/blog/understanding-ipfs</link><guid isPermaLink="true">https://monzim.com/blog/understanding-ipfs</guid><description>The InterPlanetary File System (IPFS) is a groundbreaking protocol that redefines how we store and share files on the internet. It shifts from traditional centralized systems to a decentralized, peer-to-peer model. In this blog, we&apos;ll explore IPFS in depth.</description><pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate><category>Distributed systems</category><category>IPFS</category><category>Decentralization</category><category>Web3</category><category>Distributed Systems</category><category>File Storage</category></item><item><title>Architecting Distributed Real-Time Translation with WebSockets and Redis</title><link>https://monzim.com/blog/architecting-distributed-real-time-translation-with-websockets-and-redis</link><guid isPermaLink="true">https://monzim.com/blog/architecting-distributed-real-time-translation-with-websockets-and-redis</guid><description>In the world of global communication, real-time translation can be an indispensable feature. Whether you&apos;re building a chat app that connects users from different countries or an internal tool for multinational teams, a reliable and scalable architecture for instant translation is essential. In this post, I&apos;ll walk you through the architecture of a real-time translation chat application built using NestJS, Redis, and the Google Translate API.</description><pubDate>Wed, 25 Sep 2024 00:00:00 GMT</pubDate><category>Distributed systems</category><category>Real-time Translation</category><category>NestJS</category><category>Redis</category><category>WebSocket</category><category>Google Translate API</category><category>Scalable Architecture</category><category>Distributed Systems</category><category>Microservices</category><category>Chat Application</category><category>Real-time Communication</category><category>Message Broker</category><category>Redis Pub/Sub</category><category>PostgreSQL</category><category>Multilingual Chat</category></item><item><title>OpenChat&apos;s Architecture: Scaling Real-Time Chat with Go, Redis, and WebSockets</title><link>https://monzim.com/blog/scaling-realtime-chatapp-with-go-redis-and-websocket</link><guid isPermaLink="true">https://monzim.com/blog/scaling-realtime-chatapp-with-go-redis-and-websocket</guid><description>Discover how OpenChat scales real-time communication using Go, Redis, and WebSockets. From spam prevention to horizontal scaling, explore the architecture that powers this self-hosted, anonymous chat server.</description><pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate><category>Distributed systems</category><category>Go</category><category>Redis</category><category>WebSocket</category><category>Real-Time</category><category>Architecture</category><category>Scalability</category><category>Docker</category><category>Anonymous Chat</category><category>Self-Hosted</category><category>OpenChat</category><category>spam prevention</category><category>JWT</category></item><item><title>Building an App in 5 hours | Experimenting with AI (claude.ai) Capabilities for Flutter</title><link>https://monzim.com/blog/experimenting-ai-capabilities-flutter</link><guid isPermaLink="true">https://monzim.com/blog/experimenting-ai-capabilities-flutter</guid><description>Discover how I leveraged AI (claude.ai) capabilities to build a real-time status update app in just 5 hours. Learn about the process, challenges, and insights into using AI for faster app development.</description><pubDate>Thu, 12 Sep 2024 00:00:00 GMT</pubDate><category>AI &amp; tooling</category><category>Claude AI</category><category>AI</category><category>Appwrite</category><category>Flutter</category><category>Dart</category><category>Realtime</category></item><item><title>dated - Simplifying DateTime Operations in Dart</title><link>https://monzim.com/blog/dated-simplifying-datetime-operations-in-dart</link><guid isPermaLink="true">https://monzim.com/blog/dated-simplifying-datetime-operations-in-dart</guid><description>The new Dart package &apos;dated&apos; simplifies working with dates and times. It offers easy comparisons, &apos;time ago&apos; calculations, and customization options for your projects. Check out the documentation and contribute on GitHub!</description><pubDate>Sat, 11 May 2024 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item><item><title>GPG Signing git commits on macOS keeps asking for passphrase</title><link>https://monzim.com/blog/gpg-signing-git-commits-on-macos-keeps-asking-for-passphrase</link><guid isPermaLink="true">https://monzim.com/blog/gpg-signing-git-commits-on-macos-keeps-asking-for-passphrase</guid><description>This blog provides a solution for macOS users who encounter repetitive passphrase prompts when signing Git commits with GPG. By installing pinentry-mac via Homebrew and configuring GPG-agent to utilize it, users can seamlessly integrate passphrase management with the macOS keychain, streamlining the signing process.</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><category>Guides</category></item><item><title>IUT 11th National ICT Fest OpenAPI Hackathon Team DevSprint&apos;s Solution for the Preliminary Round</title><link>https://monzim.com/blog/iut-11th-national-ict-fest-openapi-hackathon-team-devsprints-solution-for-the-preliminary-round</link><guid isPermaLink="true">https://monzim.com/blog/iut-11th-national-ict-fest-openapi-hackathon-team-devsprints-solution-for-the-preliminary-round</guid><description>My team DevSprint has earned a place in the Preliminary Round of the IUT National ICT Fest OpenApi Hackathon, emerging from a pool of over 55 teams. Among them, only 10 were chosen to advance. We&apos;re excited to announce our invitation to the final round, taking place on April 26th and 27th. In this blog post, I&apos;ll be unveiling our solution for the preliminary round.</description><pubDate>Mon, 29 Apr 2024 00:00:00 GMT</pubDate><category>Guides</category></item><item><title>Working with JSON in Dart for Beginners</title><link>https://monzim.com/blog/working-with-json-in-dart-for-beginners</link><guid isPermaLink="true">https://monzim.com/blog/working-with-json-in-dart-for-beginners</guid><description>Learn the essentials of JSON manipulation in Dart using the dart:convert library parse JSON strings with jsonDecode, generate JSON strings with jsonEncode, and handle lists seamlessly. Mastering these fundamentals empowers efficient communication with APIs and data storage in Dart applications.</description><pubDate>Sun, 07 Apr 2024 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item><item><title>Dapr — Simplifying Distributed Application Development</title><link>https://monzim.com/blog/understanding-dapr</link><guid isPermaLink="true">https://monzim.com/blog/understanding-dapr</guid><description>Explore how Dapr streamlines the development of distributed applications through its sidecar architecture and rich set of building blocks. Learn how Dapr&apos;s platform-agnostic approach simplifies service orchestration across diverse cloud providers, empowering developers to focus on writing code while abstracting away the complexities of distributed systems.</description><pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate><category>Distributed systems</category></item><item><title>Securing Your Code with AWS CodeCommit | A Step-by-Step Guide</title><link>https://monzim.com/blog/how-to-configure-aws-codecommit</link><guid isPermaLink="true">https://monzim.com/blog/how-to-configure-aws-codecommit</guid><description>Learn how to set up AWS CodeCommit seamlessly with these step-by-step instructions, ensuring smooth integration and efficient collaboration for your development projects.</description><pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate><category>Guides</category></item><item><title>Git And Github | A Comprehensive Guide</title><link>https://monzim.com/blog/git-and-github-a-comprehensive-guide</link><guid isPermaLink="true">https://monzim.com/blog/git-and-github-a-comprehensive-guide</guid><description>Git and GitHub are powerful tools for version control and collaborative software development. This comprehensive guide will walk you through the basics of using Git and GitHub, explain how they work together, and provide essential tips to enhance your workflow.</description><pubDate>Fri, 16 Feb 2024 00:00:00 GMT</pubDate><category>Guides</category></item><item><title>Setting Up Development Environment For Flutter A Step-by-step Guide</title><link>https://monzim.com/blog/setting-up-development-environment-for-flutter-a-step-by-step-guide</link><guid isPermaLink="true">https://monzim.com/blog/setting-up-development-environment-for-flutter-a-step-by-step-guide</guid><description>This blog provides a detailed guide on setting up a development environment for Flutter. From installing Git, GitHub CLI, OpenJDK, Flutter SDK, Visual Studio Code, and Android Studio, this comprehensive tutorial will help you set up all the necessary tools for Flutter development.</description><pubDate>Tue, 06 Feb 2024 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item><item><title>A Step-by-step Guide | How To Use Unizim App</title><link>https://monzim.com/blog/a-step-by-step-guide-how-to-use-unizim-app</link><guid isPermaLink="true">https://monzim.com/blog/a-step-by-step-guide-how-to-use-unizim-app</guid><description>Unizim is an innovative app designed exclusively for UIU students, providing a seamless and efficient way to manage academic activities, collaborate with peers, and stay connected with the UIU community. In this step-by-step guide, we&apos;ll walk you through the process of using Unizim to make the most out of your educational journey. Let&apos;s get started!</description><pubDate>Thu, 25 May 2023 00:00:00 GMT</pubDate><category>Guides</category></item><item><title>Build A Well-structured Flutter App With Mason Brick</title><link>https://monzim.com/blog/build-a-well-structured-flutter-app-with-mason-brick</link><guid isPermaLink="true">https://monzim.com/blog/build-a-well-structured-flutter-app-with-mason-brick</guid><description>Explore using Mason brick to structure Flutter projects—install Mason CLI, Flutter project, and A-project Mason bricks. Create a streamlined project with Riverpod, go_router, Google Fonts, and a custom theme. Dive into your next Flutter project effortlessly.</description><pubDate>Wed, 17 May 2023 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item><item><title>How To Add Firebase To Your Flutter App?</title><link>https://monzim.com/blog/how-to-add-firebase-to-your-flutter-app</link><guid isPermaLink="true">https://monzim.com/blog/how-to-add-firebase-to-your-flutter-app</guid><description>In this lesson, we are going to learn how we can add Firebase to our flutter application. And we are going the follow the official documentation.</description><pubDate>Tue, 14 Mar 2023 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item><item><title>Quick Setting Up Your Development Environment for Flutter</title><link>https://monzim.com/blog/how-to-setup-development-environment-for-flutter</link><guid isPermaLink="true">https://monzim.com/blog/how-to-setup-development-environment-for-flutter</guid><description>Flutter, a powerful and versatile framework for building cross-platform applications, requires a well-configured development environment to unleash its full potential. In this guide, we&apos;ll walk you through the step-by-step process of setting up your development environment for Flutter on both Windows and Linux machines.</description><pubDate>Sun, 11 Sep 2022 00:00:00 GMT</pubDate><category>Flutter &amp; Dart</category></item></channel></rss>