<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>Engineering Blog</title><description>Practical engineering write-ups on infrastructure, containers, and distributed systems. Every post comes from a real setup: no theory without execution.</description><link>https://blog.ibtisam-iq.com/</link><atom:link href="https://blog.ibtisam-iq.com/feed_rss_created.xml" rel="self" type="application/rss+xml" /> <managingEditor>Muhammad Ibtisam</managingEditor><language>en</language> <pubDate>Sun, 12 Jul 2026 02:05:16 -0000</pubDate> <lastBuildDate>Sun, 12 Jul 2026 02:05:16 -0000</lastBuildDate> <ttl>1440</ttl> <generator>MkDocs RSS plugin - v1.19.0</generator> <image> <url>None</url> <title>Engineering Blog</title> <link>https://blog.ibtisam-iq.com/</link> </image> <item> <title>Project Card Authoring Standards</title> <author>Muhammad Ibtisam</author> <category>Career</category> <category>Career &amp; Growth</category> <category>DevOps</category> <category>Documentation</category> <description>&lt;h1&gt;Project Card Authoring Standards&lt;/h1&gt; &lt;p&gt;This document defines the exact rules for writing project cards in &lt;code&gt;data/projects.yaml&lt;/code&gt; for &lt;a href=&#34;https://projects.ibtisam-iq.com&#34;&gt;projects.ibtisam-iq.com&lt;/a&gt;. Every rule was extracted from real mistakes caught and corrected during the authoring sessions. If an LLM is reading this, follow every rule exactly.&lt;/p&gt; &lt;p&gt;The YAML file is the single source of truth. A push to &lt;code&gt;data/projects.yaml&lt;/code&gt; triggers &lt;code&gt;node scripts/generate-projects.js&lt;/code&gt;, which auto-generates &lt;code&gt;src/data/projects.ts&lt;/code&gt;. The generated TypeScript file must never be edited directly.&lt;/p&gt;</description> <link>https://blog.ibtisam-iq.com/project-card-authoring-standards/</link> <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate> <source url="https://blog.ibtisam-iq.com/feed_rss_created.xml">Engineering Blog</source><guid isPermaLink="true">https://blog.ibtisam-iq.com/project-card-authoring-standards/</guid> <enclosure url="https://blog.ibtisam-iq.com/assets/images/social/project-card-authoring-standards.png" type="image/png" length="65624" /> </item> <item> <title>My Core AI Engineering Persona</title> <author>Muhammad Ibtisam</author> <category>AI</category> <category>Career</category> <category>Career &amp; Growth</category> <category>Prompt Engineering</category> <description>&lt;h1&gt;My Core AI Engineering Persona&lt;/h1&gt; &lt;p&gt;Writing clear, professional content is just as critical as writing immutable infrastructure code. Whether I am drafting a runbook, an architectural design document, or a professional summary, I have defined a strict LLM persona to ensure consistency. &lt;/p&gt; &lt;p&gt;Whenever I use AI to assist with writing, I provide it with a link to this exact reference page. This ensures the output reflects my actual engineering philosophy, experience level, and writing style. It avoids the arrogance of a &#34;10-year Principal Architect,&#34; completely bans &#34;robotic AI speak,&#34; and maintains strict production-grade standards.&lt;/p&gt;</description> <link>https://blog.ibtisam-iq.com/my-core-ai-engineering-persona/</link> <pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate> <source url="https://blog.ibtisam-iq.com/feed_rss_created.xml">Engineering Blog</source><guid isPermaLink="true">https://blog.ibtisam-iq.com/my-core-ai-engineering-persona/</guid> <enclosure url="https://blog.ibtisam-iq.com/assets/images/social/my-core-ai-engineering-persona.png" type="image/png" length="62522" /> </item> <item> <title>MkDocs CI Build Fails Locally It Works: The Pygments 2.19 NoneType Trap</title> <author>Muhammad Ibtisam</author> <category>CI/CD</category> <category>Debugging</category> <category>Documentation</category> <category>GitHub Actions</category> <category>MkDocs</category> <category>MkDocs Material</category> <category>Platform Engineering</category> <category>PyMdown Extensions</category> <category>Pygments</category> <category>Python</category> <description>&lt;h1&gt;MkDocs CI Build Fails, Locally It Works: The Pygments 2.19 NoneType Trap&lt;/h1&gt; &lt;p&gt;Everything was green for months. One new folder added, one push made — and CI started crashing with &lt;code&gt;AttributeError: &#39;NoneType&#39; object has no attribute &#39;replace&#39;&lt;/code&gt;. Local builds: perfectly fine. GitHub Actions: dead.&lt;/p&gt; &lt;p&gt;This is the full root cause analysis and fix.&lt;/p&gt;</description> <link>https://blog.ibtisam-iq.com/mkdocs-ci-build-fails-pygments-nonetype-crash/</link> <pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate> <source url="https://blog.ibtisam-iq.com/feed_rss_created.xml">Engineering Blog</source><guid isPermaLink="true">https://blog.ibtisam-iq.com/mkdocs-ci-build-fails-pygments-nonetype-crash/</guid> <enclosure url="https://blog.ibtisam-iq.com/assets/images/social/mkdocs-ci-build-fails-pygments-nonetype-crash.png" type="image/png" length="87141" /> </item> <item> <title>My Self-Hosted CI/CD Lab: Jenkins, SonarQube, and Nexus on Custom Domains with SSL</title> <author>Muhammad Ibtisam</author> <category>Cloudflare Tunnel</category> <category>Docker</category> <category>Jenkins</category> <category>Nexus</category> <category>Platform Engineering</category> <category>Platform Engineering</category> <category>Self-Hosted</category> <category>SonarQube</category> <description>&lt;h1&gt;My Self-Hosted CI/CD Lab: Jenkins, SonarQube, and Nexus on Custom Domains with SSL&lt;/h1&gt; &lt;p&gt;A four-node CI/CD lab — each service on its own server, its own subdomain, its own SSL cert — reproduced from a single command. No public IP. No manual setup.&lt;/p&gt;</description> <link>https://blog.ibtisam-iq.com/self-hosted-cicd-lab-jenkins-sonarqube-nexus/</link> <pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate> <source url="https://blog.ibtisam-iq.com/feed_rss_created.xml">Engineering Blog</source><guid isPermaLink="true">https://blog.ibtisam-iq.com/self-hosted-cicd-lab-jenkins-sonarqube-nexus/</guid> <enclosure url="https://blog.ibtisam-iq.com/assets/images/social/self-hosted-cicd-lab-jenkins-sonarqube-nexus.png" type="image/png" length="81044" /> </item> </channel> </rss>