<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Chukwuma Akunyili&#39;s Blog</title>
    <description>Thoughts on software engineering, functional programming, and technology</description>
    <link>https://fearful-odds.rocks</link>
    <image>
      <url>https://fearful-odds.rocks/static/images/logo.svg</url>
      <title>Chukwuma Akunyili&#39;s Blog</title>
      <link>https://fearful-odds.rocks</link>
    </image>
    <atom:link href="https://fearful-odds.rocks/feed.xml" rel="self" type="application/rss+xml" />
    <language>en</language>
    <lastBuildDate>Sun, 01 Feb 2026 10:15:07 +0000</lastBuildDate>
    <pubDate>Sun, 01 Feb 2026 10:15:07 +0000</pubDate>
    <ttl>60</ttl>
    <managingEditor>Chukwuma Akunyili</managingEditor>
    <webMaster>Chukwuma Akunyili</webMaster>
    <item>
      <title>Securing the Monolith: CSRF, Redis, and the Driver Lifecycle</title>
      <link>https://fearful-odds.rocks/blog/securing-the-monolith:csrf-and-the-driver-lifecycle</link>
      <description><![CDATA[From fixing critical security holes to architecting the driver signup flow. A deep dive into CSRF in Dream, Azure Redis, and the importance of building a mental model.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/securing-the-monolith:csrf-and-the-driver-lifecycle</guid>
      <category>OCaml</category>
      <category>Dream</category>
      <category>Security</category>
      <category>Azure</category>
      <category>Redis</category>
      <category>Architecture</category>
      <category>DevOps</category>
    </item>
    <item>
      <title>Enabling SSH in Azure App Service for OCaml Containers: A Production Journey</title>
      <link>https://fearful-odds.rocks/blog/azure-ssh-ocaml-containers-production</link>
      <description><![CDATA[Complete guide to deploying OCaml containers to Azure App Service with SSH access, database migrations, and PostgreSQL extension management. From Docker multi-stage builds to production user creation.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/azure-ssh-ocaml-containers-production</guid>
      <category>OCaml</category>
      <category>Azure</category>
      <category>Docker</category>
      <category>SSH</category>
      <category>PostgreSQL</category>
      <category>Containers</category>
      <category>DevOps</category>
      <category>Migrations</category>
      <category>Production</category>
      <category>App Service</category>
    </item>
    <item>
      <title>Session Management &amp; WebAuthn : Secure Sessions and Better Auth</title>
      <link>https://fearful-odds.rocks/blog/session-management-and-webauthn-sprint</link>
      <description><![CDATA[Implementing secure session utilities, upgrading WebAuthn flows with better logging.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/session-management-and-webauthn-sprint</guid>
      <category>OCaml</category>
      <category>Dream</category>
      <category>WebAuthn</category>
      <category>Sessions</category>
      <category>Security</category>
      <category>Lwt</category>
      <category>Telemetry</category>
      <category>Azure</category>
    </item>
    <item>
      <title>Mental Check: Reflecting on the OCaml Journey So Far</title>
      <link>https://fearful-odds.rocks/journal/oct-5-entry</link>
      <description><![CDATA[A reflection on my OCaml web development journey so far.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 05 Oct 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/journal/oct-5-entry</guid>
      <category>journal</category>
      <category>ocaml</category>
      <category>journey</category>
      <category>retrospective</category>
    </item>
    <item>
      <title>WebAuthn &amp; Passkeys in OCaml: Implementing Passwordless Authentication</title>
      <link>https://fearful-odds.rocks/blog/webauthn-passkey-implementation-ocaml</link>
      <description><![CDATA[Building a complete WebAuthn/Passkeys authentication system in OCaml: from bytea binary storage challenges to Base64 encoding layers, model validation, and repository patterns.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/webauthn-passkey-implementation-ocaml</guid>
      <category>OCaml</category>
      <category>WebAuthn</category>
      <category>Passkeys</category>
      <category>Authentication</category>
      <category>Security</category>
      <category>Binary Data</category>
      <category>Base64</category>
      <category>PostgreSQL</category>
      <category>Caqti</category>
      <category>Dream Framework</category>
      <category>Passwordless</category>
    </item>
    <item>
      <title>Setting up Open Telemetry (OTel) with OCaml and Azure Monitor Integration</title>
      <link>https://fearful-odds.rocks/blog/setting-up-otel-with-ocaml-and-azure-monitor</link>
      <description><![CDATA[Complete guide to implementing OpenTelemetry in OCaml with Dream Framework, including Azure Monitor integration, environment-specific configuration, and production-ready tracing middleware.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/setting-up-otel-with-ocaml-and-azure-monitor</guid>
      <category>OCaml</category>
      <category>OpenTelemetry</category>
      <category>Azure Monitor</category>
      <category>Dream Framework</category>
      <category>Observability</category>
      <category>Monitoring</category>
      <category>Operations</category>
      <category>CI/CD</category>
    </item>
    <item>
      <title>Model Validation &amp; Time Utilities Sprint: From Basic Models to Proper Validation Layer</title>
      <link>https://fearful-odds.rocks/blog/model-mapping-and-validation-in-ocaml</link>
      <description><![CDATA[A weekend sprint documenting the evolution from basic OCaml models to comprehensive validation infrastructure with field enhancements, time utilities, and cryptographic security improvements for the Chaufr MVP]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/model-mapping-and-validation-in-ocaml</guid>
      <category>OCaml</category>
      <category>Model Validation</category>
      <category>Database Models</category>
      <category>Time Utilities</category>
      <category>Cryptographic Security</category>
      <category>Ptime</category>
      <category>Mirage-Crypto</category>
      <category>Sprint Retrospective</category>
      <category>Production Architecture</category>
    </item>
    <item>
      <title>Database Testing in OCaml: From CRUD to Connection Pool Stress Testing</title>
      <link>https://fearful-odds.rocks/blog/database-testing-for-chaufr</link>
      <description><![CDATA[Building a comprehensive database testing suite for Chaufr: integration tests, transaction verification, migration rollback testing, connection pool stress tests, and performance benchmarks using Alcotest, Lwt, and Caqti]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 21 Sep 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/database-testing-for-chaufr</guid>
      <category>OCaml</category>
      <category>Database Testing</category>
      <category>Alcotest</category>
      <category>Caqti</category>
      <category>PostgreSQL</category>
      <category>Stress Testing</category>
      <category>Performance</category>
      <category>Migrations</category>
      <category>Integration Testing</category>
    </item>
    <item>
      <title>Shipping a robust DB migration runner for Chaufr (OCaml + Caqti + Lwt)</title>
      <link>https://fearful-odds.rocks/blog/db-migration-runner-for-chaufr</link>
      <description><![CDATA[Implemented a production-minded database migration system for Chaufr: CLI, tracking, checksum validation, rollback, and safe SQL execution.]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 14 Sep 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/db-migration-runner-for-chaufr</guid>
      <category>OCaml</category>
      <category>Caqti</category>
      <category>Database</category>
      <category>Migrations</category>
      <category>Lwt</category>
    </item>
    <item>
      <title>Day X: Summoning Odoc – A Joyful Documentation Portal Appears</title>
      <link>https://fearful-odds.rocks/journal/odoc-generation</link>
      <description><![CDATA[Adding odoc generated API docs to the Memoir site with Makefile magic, laughter, and a shiny /docs route]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sat, 13 Sep 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/journal/odoc-generation</guid>
      <category>journal</category>
      <category>ocaml</category>
      <category>documentation</category>
      <category>odoc</category>
      <category>automation</category>
    </item>
    <item>
      <title>Building Database Layer in OCaml: From UUID v7 to Standardized Error Handling</title>
      <link>https://fearful-odds.rocks/blog/database-service-layer-sprint</link>
      <description><![CDATA[A comprehensive sprint retrospective documenting the implementation of a near-production-ready database and service layer using OCaml, Caqti, UUID v7, and standardized error handling for the Chaufr MVP]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/database-service-layer-sprint</guid>
      <category>OCaml</category>
      <category>Database</category>
      <category>Caqti</category>
      <category>UUID</category>
      <category>Error Handling</category>
      <category>PostgreSQL</category>
      <category>Sprint Retrospective</category>
      <category>Enterprise Architecture</category>
    </item>
    <item>
      <title>Modern PostgreSQL Connection Pooling in OCaml (2025): Caqti + Dream + Lwt</title>
      <link>https://fearful-odds.rocks/blog/postgres-caqti-pooling-ocaml-2025</link>
      <description><![CDATA[A practical, production-focused walkthrough of building a PostgreSQL connection pool in OCaml using Caqti_lwt_unix, with health checks, graceful shutdown, and Dream integration]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 24 Aug 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/postgres-caqti-pooling-ocaml-2025</guid>
      <category>OCaml</category>
      <category>PostgreSQL</category>
      <category>Caqti</category>
      <category>Lwt</category>
      <category>Dream</category>
      <category>Backend</category>
      <category>Production</category>
    </item>
    <item>
      <title>Azure Deployment Journey: OCaml Web Application with Dream Framework</title>
      <link>https://fearful-odds.rocks/blog/azure-deployment-journey-ocaml-dream</link>
      <description><![CDATA[A comprehensive guide to deploying OCaml applications on Azure App Service using Azure Container Registry - from authentication challenges to production success]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/azure-deployment-journey-ocaml-dream</guid>
      <category>OCaml</category>
      <category>Azure</category>
      <category>Dream Framework</category>
      <category>Docker</category>
      <category>DevOps</category>
      <category>Cloud Deployment</category>
    </item>
    <item>
      <title>Advent of Code with OCaml: Building a Complete Automation Pipeline</title>
      <link>https://fearful-odds.rocks/blog/advent-of-code-ocaml-automation</link>
      <description><![CDATA[How I built a fully automated OCaml solution pipeline for Advent of Code with input downloading, solution running, and automatic submission]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sat, 12 Jul 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/advent-of-code-ocaml-automation</guid>
      <category>OCaml</category>
      <category>Advent of Code</category>
      <category>Automation</category>
      <category>Functional Programming</category>
    </item>
    <item>
      <title>Getting Started with OCaml</title>
      <link>https://fearful-odds.rocks/blog/getting-started-with-ocaml</link>
      <description><![CDATA[A beginner&#39;s guide to functional programming with OCaml]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/blog/getting-started-with-ocaml</guid>
      <category>ocaml</category>
      <category>functional-programming</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day 1: Setting Up the Memoir Project</title>
      <link>https://fearful-odds.rocks/journal/day-1-setting-up-memoir</link>
      <description><![CDATA[First entry detailing the setup of my OCaml static site generator]]></description>
      <dc:creator>Chukwuma Akunyili</dc:creator>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="true">https://fearful-odds.rocks/journal/day-1-setting-up-memoir</guid>
      <category>journal</category>
      <category>ocaml</category>
      <category>web</category>
      <category>setup</category>
    </item>
  </channel>
</rss>