<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Sanfor2004 — Articles</title><description>Notes on backend, automation, design patterns and systems, by Ahmed (Sanfor).</description><link>https://sanfor2004.com/</link><language>en</language><item><title>CVE-2026-96889: when an SVG upload can free memory your parser still needs</title><link>https://sanfor2004.com/articles/cve-2026-96889-librsvg-use-after-free/</link><guid isPermaLink="true">https://sanfor2004.com/articles/cve-2026-96889-librsvg-use-after-free/</guid><description>A backend engineer&apos;s read of the librsvg use-after-free in nested XInclude parsing, which systems quietly render SVG, how to check what you run, and what to do before you can patch.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><category>Backend</category><category>Security</category><category>Vulnerabilities</category><category>Linux</category><category>Rust</category><category>Image Processing</category></item><item><title>CMake Explained for Beginners: Targets, Libraries, and Builds</title><link>https://sanfor2004.com/articles/cmake-explained-for-beginners/</link><guid isPermaLink="true">https://sanfor2004.com/articles/cmake-explained-for-beginners/</guid><description>Learn what CMake actually does by building a small C++20 executable, library, and test with targets, usage requirements, and out-of-source builds.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>C++</category><category>C++</category><category>CMake</category><category>Build Systems</category><category>Developer Tools</category></item><item><title>Build a C++ Discord Bot with DPP</title><link>https://sanfor2004.com/articles/cpp-discord-bot-dpp/</link><guid isPermaLink="true">https://sanfor2004.com/articles/cpp-discord-bot-dpp/</guid><description>Create a modern C++ Discord bot with DPP, CMake, slash commands, safe token handling, and a practical path from local testing to deployment.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>C++</category><category>C++</category><category>Discord</category><category>DPP</category><category>CMake</category><category>Bots</category></item><item><title>Build a Desktop App with Electron and Next.js</title><link>https://sanfor2004.com/articles/electron-nextjs-desktop-app/</link><guid isPermaLink="true">https://sanfor2004.com/articles/electron-nextjs-desktop-app/</guid><description>Package a Next.js static export inside Electron with TypeScript, a custom application protocol, isolated preload code, narrow IPC, and no embedded web server.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>Project Engineering</category><category>Electron</category><category>Next.js</category><category>TypeScript</category><category>Desktop Apps</category><category>Security</category></item><item><title>Redis Internals: From a Command to Memory and Disk</title><link>https://sanfor2004.com/articles/redis-internals/</link><guid isPermaLink="true">https://sanfor2004.com/articles/redis-internals/</guid><description>Follow a Redis command through the event loop, data structures, expiration, eviction, persistence, and replication without reducing Redis to &apos;just a cache.&apos;</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>Systems</category><category>Redis</category><category>Databases</category><category>Backend</category><category>Systems</category><category>Performance</category></item><item><title>Design Patterns Overview (Creational, Structural, and Behavioral Patterns)</title><link>https://sanfor2004.com/articles/design-patterns-overview/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-patterns-overview/</guid><description>Start here: all 23 GoF design patterns, their categories and scope, with illustrated Python and C++20 lessons.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Python</category><category>C++</category><category>Architecture</category><category>Software Engineering</category></item><item><title>Abstract Factory (Creational Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-abstract-factory/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-abstract-factory/</guid><description>Create compatible families of objects without coupling the client to concrete classes.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Creational Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Adapter (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-adapter/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-adapter/</guid><description>Translate one interface into another interface the client already understands.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Bridge (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-bridge/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-bridge/</guid><description>Separate an abstraction from its implementation so both dimensions can vary independently.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Builder (Creational Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-builder/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-builder/</guid><description>Construct a complex object step by step while allowing different final representations.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Creational Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Chain of Responsibility (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-chain-of-responsibility/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-chain-of-responsibility/</guid><description>Pass a request through an ordered chain until a handler processes it or the chain ends.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Command (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-command/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-command/</guid><description>Represent a request as an object so it can be queued, logged, retried, or undone.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Composite (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-composite/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-composite/</guid><description>Treat individual objects and nested groups through the same component interface.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Decorator (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-decorator/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-decorator/</guid><description>Add responsibilities by wrapping an object with components that share its interface.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Facade (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-facade/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-facade/</guid><description>Offer a focused entry point to a complex subsystem without removing lower-level access.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Factory Method (Creational Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-factory-method/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-factory-method/</guid><description>Let subclasses or specialized creators decide which concrete product to instantiate.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Creational Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Flyweight (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-flyweight/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-flyweight/</guid><description>Share repeated intrinsic state while keeping context-specific state outside the shared object.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Interpreter (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-interpreter/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-interpreter/</guid><description>Represent a small grammar as objects that evaluate expressions in a context.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Iterator (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-iterator/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-iterator/</guid><description>Traverse a collection without exposing how that collection stores its elements.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Mediator (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-mediator/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-mediator/</guid><description>Centralize complex collaboration so peer objects do not depend directly on one another.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Memento (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-memento/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-memento/</guid><description>Capture and restore an object’s state without exposing its internal representation.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Observer (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-observer/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-observer/</guid><description>Notify a changing set of subscribers when a subject emits an event or changes state.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Prototype (Creational Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-prototype/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-prototype/</guid><description>Create new objects by copying an existing configured prototype.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Creational Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Proxy (Structural Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-proxy/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-proxy/</guid><description>Stand in for another object to control access, loading, location, or instrumentation.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Structural Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Singleton (Creational Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-singleton/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-singleton/</guid><description>Provide one controlled instance and a global access point—while understanding the coupling it creates.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Creational Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>State (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-state/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-state/</guid><description>Change an object’s behavior when its internal state changes by delegating to state objects.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Strategy (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-strategy/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-strategy/</guid><description>Package interchangeable algorithms behind one interface and choose among them by composition.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Template Method (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-template-method/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-template-method/</guid><description>Define an algorithm’s stable skeleton while allowing selected steps to vary in subclasses.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>Visitor (Behavioral Pattern)</title><link>https://sanfor2004.com/articles/design-pattern-visitor/</link><guid isPermaLink="true">https://sanfor2004.com/articles/design-pattern-visitor/</guid><description>Add operations across a stable set of element types without placing every operation on those elements.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>Design Patterns</category><category>Design Patterns</category><category>Behavioral Patterns</category><category>Python</category><category>C++</category><category>Software Engineering</category></item><item><title>360Vision: Building a 360° Virtual Tour Studio in Next.js</title><link>https://sanfor2004.com/articles/360vision-nextjs-virtual-tour-studio/</link><guid isPermaLink="true">https://sanfor2004.com/articles/360vision-nextjs-virtual-tour-studio/</guid><description>How I built 360Vision with Next.js, Three.js, interactive floor plans, angular hotspots, and local JSON storage for connected real-estate tours.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><category>Project Engineering</category><category>Next.js</category><category>TypeScript</category><category>Three.js</category><category>360Vision</category><category>Virtual Tours</category><category>Backend</category><category>Product Engineering</category></item><item><title>How I Used AI, References, and Review Loops to Build Mint Woodland Pet</title><link>https://sanfor2004.com/articles/ai-reference-review-loops-mint-woodland-pet/</link><guid isPermaLink="true">https://sanfor2004.com/articles/ai-reference-review-loops-mint-woodland-pet/</guid><description>A first-person case study on turning a visual reference into an original Windows desktop companion through AI-assisted asset generation, deterministic sprite preparation, UI matching, and repeatable visual review.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><category>AI-Assisted Development</category><category>Generative AI</category><category>Prompt Engineering</category><category>Reference-Based Design</category><category>Visual QA</category><category>Iteration</category><category>Pixel Art</category><category>Sprite Animation</category><category>Windows Development</category><category>C++</category><category>Win32</category><category>Desktop Companion</category><category>UI Design</category><category>Software Engineering</category><category>Mint Woodland Pet</category></item><item><title>Designing a Reliable Background Job Pipeline</title><link>https://sanfor2004.com/articles/designing-a-reliable-background-job-pipeline/</link><guid isPermaLink="true">https://sanfor2004.com/articles/designing-a-reliable-background-job-pipeline/</guid><description>A long-form systems note about queues, retries, idempotency, observability, and operating background work safely in production.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><category>Backend</category><category>Backend</category><category>Queues</category><category>Reliability</category><category>Observability</category><category>Architecture</category></item></channel></rss>