<!DOCTYPE html><html lang="pt-br" data-astro-transition-scope="astro-tyfwoq7n-1"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/x-icon" href="/favicon.ico"><!-- Web App Manifest --><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#1e293b"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- RSS Autodiscovery --><link rel="alternate" type="application/rss+xml" title="Ibrahim Cesar's Blog" href="https://ibrahimcesar.cloud/rss.xml"><!-- JSON-LD Structured Data --><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Ibrahim Cesar","url":"https://ibrahimcesar.cloud","description":"Personal blog about Cloud, Code and Everything Else","author":{"@type":"Person","name":"Ibrahim Cesar","url":"https://ibrahimcesar.cloud","sameAs":["https://github.com/ibrahimcesar","https://twitter.com/ibrahimcesar","https://linkedin.com/in/ibrahimcesar"]}}</script><title>Ibrahim Cesar — Solutions Architect</title><meta name="description" content="Helping organizations transform their cloud infrastructure from good to exceptional. AWS Well-Architected team member sharing insights on cloud architecture, serverless, and software engineering."><link rel="canonical" href="https://ibrahimcesar.cloud/"><!-- Google / Search Engine Tags --><meta itemprop="name" content="Ibrahim Cesar — Solutions Architect"><meta itemprop="description" content="Helping organizations transform their cloud infrastructure from good to exceptional. AWS Well-Architected team member sharing insights on cloud architecture, serverless, and software engineering."><meta itemprop="image" content="https://ibrahimcesar.cloud/blog-card.png"><!-- Facebook Meta Tags --><meta property="og:url" content="https://ibrahimcesar.cloud/"><meta property="og:type" content="website"><meta property="og:title" content="Ibrahim Cesar — Solutions Architect"><meta property="og:description" content="Helping organizations transform their cloud infrastructure from good to exceptional. AWS Well-Architected team member sharing insights on cloud architecture, serverless, and software engineering."><meta property="og:image" content="https://ibrahimcesar.cloud/blog-card.png"><!-- Twitter Meta Tags --><meta name="twitter:url" content="https://ibrahimcesar.cloud/"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Ibrahim Cesar — Solutions Architect"><meta name="twitter:creator" content="@ibrahimcesar"><meta name="twitter:description" content="Helping organizations transform their cloud infrastructure from good to exceptional. AWS Well-Architected team member sharing insights on cloud architecture, serverless, and software engineering."><meta name="twitter:image" content="https://ibrahimcesar.cloud/blog-card.png"><meta name="twitter:image:alt" content=""><!-- Fonts --><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;700&display=swap" rel="stylesheet"><!-- KaTeX for math rendering --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css" integrity="sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV" crossorigin="anonymous"><link href="/code.css" rel="stylesheet"><!-- Google tag (gtag.js) --><script async src="https://www.googletagmanager.com/gtag/js?id=G-V2LWX9607C"></script><script type="module">window.dataLayer=window.dataLayer||[];function a(){dataLayer.push(arguments)}a("js",new Date);a("config","G-V2LWX9607C");</script><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.QW52Ox2j.js"></script><style>.yt-lite{background-color:#000;position:relative;display:block;contain:layout style;background-position:50%;background-size:cover;cursor:pointer;aspect-ratio:16 / 9}.yt-lite.lyt-activated:before{content:"";box-sizing:content-box;display:block;position:absolute;top:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==);background-position:top;background-repeat:repeat-x;height:60px;padding-bottom:50px;width:100%;transition:all .2s cubic-bezier(0,0,.2,1)}.yt-lite:after{content:"";display:block;padding-bottom:var(--aspect-ratio, 56.25%)}@supports (aspect-ratio: 16 / 9){.yt-lite:after{display:none}}.yt-lite>iframe{width:100%;height:100%;position:absolute;top:0;left:0;right:0;border:0;outline:0;margin:0;padding:0;display:block}.yt-lite>.lty-thumbnail{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.yt-lite>.lty-playbtn{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);width:68px;height:48px;z-index:1;background-color:transparent;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="%23f00"/><path d="M45 24 27 14v20" fill="%23fff"/></svg>');background-repeat:no-repeat;background-size:100% 100%;transition:filter .1s cubic-bezier(0,0,.2,1);border:none;cursor:pointer;filter:grayscale(100%);opacity:.8;padding:0;line-height:0;font-size:0}.yt-lite:hover>.lty-playbtn{filter:none;opacity:1}.yt-lite.lyt-activated{cursor:unset}.yt-lite.lyt-activated:before,.yt-lite.lyt-activated>.lty-playbtn{opacity:0;pointer-events:none}.lty-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.yt-lite>.lty-playlist-icon{position:absolute;top:8px;right:8px;width:48px;height:48px;background-color:#000c;border-radius:4px;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:none}.yt-lite>.lty-playlist-icon:before{content:"";width:28px;height:28px;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M4 6h2v12H4V6zm12 0h-2v12h2V6zM8 6h10v12H8V6z" opacity="0.5"/><path d="M10 8h8v8h-8V8z"/></svg>');background-repeat:no-repeat;background-size:contain;background-position:center}
</style>
<link rel="stylesheet" href="/_astro/_page_.CGWshzL_.css">
<link rel="stylesheet" href="/_astro/_page_.Dmn2wnQ_.css">
<style>.skip-nav[data-astro-cid-7ony6kt4]{position:fixed;top:-100%;left:1rem;z-index:9999;padding:.75rem 1.25rem;background:#1e293b;color:#fff;text-decoration:none;border-radius:.375rem;font-weight:600;font-size:.875rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transition:top .2s ease-in-out;white-space:nowrap}.skip-nav[data-astro-cid-7ony6kt4]:focus{top:1rem;outline:2px solid #3b82f6;outline-offset:2px}.skip-nav[data-astro-cid-7ony6kt4]:hover:focus{background:#0f172a}@media(prefers-color-scheme:dark){.skip-nav[data-astro-cid-7ony6kt4]{background:#0f172a;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}.skip-nav[data-astro-cid-7ony6kt4]:focus{outline-color:#60a5fa}.skip-nav[data-astro-cid-7ony6kt4]:hover:focus{background:#1e293b}}.reading-progress-container[data-astro-cid-n3debmvq]{position:fixed;top:0;left:0;right:0;height:4px;background:#0000000d;z-index:9998;overflow:hidden}@media(prefers-color-scheme:dark){.reading-progress-container[data-astro-cid-n3debmvq]{background:#ffffff0d}}.reading-progress-bar[data-astro-cid-n3debmvq]{height:100%;width:0%;background:linear-gradient(90deg,#7c3aed,#a855f7,#c084fc);transition:width .1s ease-out;box-shadow:0 0 10px #7c3aed80}@media(prefers-color-scheme:dark){.reading-progress-bar[data-astro-cid-n3debmvq]{background:linear-gradient(90deg,#a855f7,#c084fc,#d8b4fe);box-shadow:0 0 10px #a855f780}}[data-aw-toggle-menu].expanded .line1{transform:rotate(-45deg) translate(-12px,8px)}[data-aw-toggle-menu].expanded .line2{transform:rotate(45deg) translate(4px,-16px)}
.line-clamp-2[data-astro-cid-zlo25txy]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
</style><style>[data-astro-transition-scope="astro-tyfwoq7n-1"] { view-transition-name: astro-tyfwoq7n-1; }@layer astro { ::view-transition-old(astro-tyfwoq7n-1) { animation: none; opacity: 0; mix-blend-mode: normal; }::view-transition-new(astro-tyfwoq7n-1) { animation: none; mix-blend-mode: normal; }::view-transition-group(astro-tyfwoq7n-1) { animation: none } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-tyfwoq7n-1"],
			[data-astro-transition-fallback="old"][data-astro-transition-scope="astro-tyfwoq7n-1"] { animation: none; mix-blend-mode: normal; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-tyfwoq7n-1"],
			[data-astro-transition-fallback="new"][data-astro-transition-scope="astro-tyfwoq7n-1"] { animation: none; mix-blend-mode: normal; }</style><style>[data-astro-transition-scope="astro-54sps4ts-2"] { view-transition-name: astro-54sps4ts-2; }@layer astro { ::view-transition-old(astro-54sps4ts-2) { animation: none; opacity: 0; mix-blend-mode: normal; }::view-transition-new(astro-54sps4ts-2) { animation: none; mix-blend-mode: normal; }::view-transition-group(astro-54sps4ts-2) { animation: none } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-54sps4ts-2"],
			[data-astro-transition-fallback="old"][data-astro-transition-scope="astro-54sps4ts-2"] { animation: none; mix-blend-mode: normal; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-54sps4ts-2"],
			[data-astro-transition-fallback="new"][data-astro-transition-scope="astro-54sps4ts-2"] { animation: none; mix-blend-mode: normal; }</style></head> <body class="antialiased text-slate-900 dark:text-slate-100 tracking-tight bg-white dark:bg-slate-900 overflow-x-hidden" data-astro-transition-scope="astro-54sps4ts-2">  <a href="#main-content" class="skip-nav" aria-label="Skip to main content" data-astro-cid-7ony6kt4>
Skip to main content
</a>  <div class="reading-progress-container" data-astro-cid-n3debmvq> <div class="reading-progress-bar" id="reading-progress-bar" data-astro-cid-n3debmvq></div> </div>  <script type="module">function n(){const t=document.getElementById("reading-progress-bar");if(!t)return;const o=window.innerHeight,d=document.documentElement.scrollHeight,i=window.scrollY||document.documentElement.scrollTop,r=d-o,s=i/r*100;t.style.width=`${Math.min(s,100)}%`}document.addEventListener("DOMContentLoaded",n);let e=!1;window.addEventListener("scroll",()=>{e||(window.requestAnimationFrame(()=>{n(),e=!1}),e=!0)});window.addEventListener("resize",n);</script> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-white/90 dark:bg-slate-900/90 backdrop-blur-sm border-b dark:border-b-0"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="/"> <img src="/ibrahimcesar.png" class="rounded-full max-h-9" alt="Ibrahim Cesar" loading="lazy"> <span class="self-center ml-2 text-2xl font-extrabold text-gray-900 whitespace-nowrap dark:text-white"> <span class="cloud-color">Ibrahim Cesar</span><span class="hidden md:inline-block __blinker">&nbsp;
    Blog
</span> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-aw-toggle-color-scheme> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"></path> </svg> </button> <button class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-aw-toggle-menu> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <line class="line1 transition" x1="4" y1="8" x2="20" y2="8"></line> <line class="line2 transition" x1="4" y1="16" x2="20" y2="16"></line> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-60 dark:text-slate-200" aria-label="Main navigation" id="menu"> <p></p> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li> <a class="font-medium hover:text-indigo-600 dark:hover:text-indigo-400 px-4 py-3 flex items-center transition duration-150 ease-in-out" href="/talks">Talks
</a> </li> <li> <a class="font-medium hover:text-indigo-600 dark:hover:text-indigo-400 px-4 py-3 flex items-center transition duration-150 ease-in-out" href="/tags">Tags
</a> </li> <li> <a class="font-medium hover:text-indigo-600 dark:hover:text-indigo-400 px-4 py-3 flex items-center transition duration-150 ease-in-out" href="/whoiam">About/Sobre
</a> </li> <li> <a class="font-medium hover:text-indigo-600 dark:hover:text-indigo-400 px-4 py-3 flex items-center transition duration-150 ease-in-out" rel="noopener noreferrer" target="_blank" title="My repositories & contributions" href="https://github.com/ibrahimcesar"><span class="external">Code</span> </a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0"> <div class="hidden items-center mr-3 md:flex"> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Search" href="/search" title="Search posts"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5"> <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"></path> </svg> </a> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-aw-toggle-color-scheme> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"></path> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="/rss.xml"> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16"></path> <path d="M4 11a9 9 0 0 1 9 9"></path> </svg> </a> </div> </div> </nav> </div> </header>  <main id="main-content">  <main> <section class="px-4 pt-6 pb-2 mx-auto max-w-4xl"> <div class="mb-4"> <h1 class="text-2xl md:text-3xl font-bold text-slate-900 dark:text-slate-100 mb-2">
Cloud, Code &amp; Everything Else
</h1> <p class="text-base text-slate-600 dark:text-slate-300 leading-relaxed">
Builder &bull; Startup Co-Founder &bull; TEDx Speaker &bull; Science Fiction Author &bull; Proudly Autistic
</p> </div> <div class="flex flex-wrap gap-2 text-xs font-medium"> <span class="px-2 py-0.5 bg-orange-500 text-white dark:bg-orange-600 rounded-full">
AWS Well-Architected
</span> <span class="px-2 py-0.5 bg-purple-500 text-white dark:bg-purple-600 rounded-full">
Serverless
</span> <span class="px-2 py-0.5 bg-blue-500 text-white dark:bg-blue-600 rounded-full">
TypeScript
</span> <span class="px-2 py-0.5 bg-emerald-500 text-white dark:bg-emerald-600 rounded-full">
Cloud Architecture
</span> </div> <p class="mt-4 text-sm text-slate-700 dark:text-slate-200 leading-relaxed">
This digital garden is bilingual, with posts in
<span class="inline-flex items-center px-1.5 py-0.5 mx-0.5 rounded bg-blue-100 dark:bg-blue-900 text-blue-700 dark:text-blue-200 font-medium text-xs">en</span>
English and
<span class="inline-flex items-center px-1.5 py-0.5 mx-0.5 rounded bg-green-100 dark:bg-green-900 text-green-700 dark:text-yellow-300 font-medium text-xs">pt-br</span>
Brazilian Portuguese. <span class="italic text-slate-500 dark:text-slate-400">Opinions are my own.</span> </p> </section> <section class="px-4 sm:px-6 pt-4 pb-12 mx-auto max-w-4xl overflow-x-hidden" aria-label="latest posts"> <h2 class="text-2xl font-bold mb-6 text-slate-900 dark:text-slate-100 border-b border-slate-200 dark:border-slate-700 pb-3">
Latest Posts
</h2> <ul class="space-y-8"> <li class="group"> <article class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2025-12-26T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2025-12-26 </time> <div class="flex-grow"> <h3 class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/categorical-solutions-architect-part-6" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Natural Transformations: Coherent Change Across Systems </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> When you change from one architecture to another, changes must be consistent everywhere. Part 6 of applying category theory to Solutions Architecture—the mathematics of coherent transformation. </p> <div class="mt-2 flex flex-wrap gap-2 items-center justify-center sm:justify-start">  <span class="inline-flex items-center text-xs px-2 py-0.5 rounded-md font-medium bg-blue-600 text-white dark:bg-blue-500"> en </span> <div class="flex flex-wrap gap-2 items-center "> <a href="/tags/category theory" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-lime-600 hover:bg-lime-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Category Theory"> <span aria-hidden="true">#</span> <span>Category Theory</span> </a><a href="/tags/solutions architecture" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-blue-600 hover:bg-blue-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Solutions Architecture"> <span aria-hidden="true">#</span> <span>Solutions Architecture</span> </a><a href="/tags/refactoring" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-indigo-600 hover:bg-indigo-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Refactoring"> <span aria-hidden="true">#</span> <span>Refactoring</span> </a> </div> </div> </div> </article> </li><li class="group"> <article class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2025-12-26T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2025-12-26 </time> <div class="flex-grow"> <h3 class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/grok-and-the-naked-king" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Grok and the Naked King: The Ultimate Argument Against AI Alignment </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> When the world&#39;s richest man can simply &#39;correct&#39; an AI to reflect his own values, what does that tell us about the entire alignment discourse? </p> <div class="mt-2 flex flex-wrap gap-2 items-center justify-center sm:justify-start">  <span class="inline-flex items-center text-xs px-2 py-0.5 rounded-md font-medium bg-blue-600 text-white dark:bg-blue-500"> en </span> <div class="flex flex-wrap gap-2 items-center "> <a href="/tags/ai" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-purple-600 hover:bg-purple-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with AI"> <span aria-hidden="true">#</span> <span>AI</span> </a><a href="/tags/grok" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-orange-600 hover:bg-orange-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Grok"> <span aria-hidden="true">#</span> <span>Grok</span> </a><a href="/tags/alignment" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-indigo-600 hover:bg-indigo-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Alignment"> <span aria-hidden="true">#</span> <span>Alignment</span> </a> </div> </div> </div> </article> </li><li class="group"> <article class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2025-12-24T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2025-12-24 </time> <div class="flex-grow"> <h3 class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/categorical-solutions-architect-part-5" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Functors: The Mathematics of Migration </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> Every migration is a functor — a structure - preserving transformation between systems. Part 5 of applying category theory to Solutions Architecture, where we learn when migrations succeed and why they fail. </p> <div class="mt-2 flex flex-wrap gap-2 items-center justify-center sm:justify-start">  <span class="inline-flex items-center text-xs px-2 py-0.5 rounded-md font-medium bg-blue-600 text-white dark:bg-blue-500"> en </span> <div class="flex flex-wrap gap-2 items-center "> <a href="/tags/category theory" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-lime-600 hover:bg-lime-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Category Theory"> <span aria-hidden="true">#</span> <span>Category Theory</span> </a><a href="/tags/solutions architecture" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-blue-600 hover:bg-blue-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Solutions Architecture"> <span aria-hidden="true">#</span> <span>Solutions Architecture</span> </a><a href="/tags/migration" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-md
                bg-orange-600 hover:bg-orange-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Migration"> <span aria-hidden="true">#</span> <span>Migration</span> </a> </div> </div> </div> </article> </li> </ul> <div class="mt-10 text-center"> <a href="/blog" class="inline-flex items-center gap-2 text-indigo-600 dark:text-indigo-400 hover:text-indigo-800 dark:hover:text-indigo-300 font-medium transition-colors">
View all posts
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path> </svg> </a> </div> </section> <section class="favorite-books px-4 sm:px-6 py-8 mx-auto max-w-4xl"> <h2 class="text-2xl font-bold mb-6 text-slate-900 dark:text-slate-100 border-b border-slate-200 dark:border-slate-700 pb-3">
Favorite Books
</h2> <div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4"> <a href="https://amzn.to/44eUVLe" target="_blank" rel="noopener noreferrer" class="group block" title="Designing Data-Intensive Applications by Martin Kleppmann"> <div class="aspect-[2/3] overflow-hidden rounded-lg shadow-md group-hover:shadow-xl transition-shadow duration-300"> <img src="https://m.media-amazon.com/images/I/91YfNb49PLL._SY522_.jpg" alt="Cover of Designing Data-Intensive Applications" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="mt-2"> <p class="text-sm font-medium text-slate-900 dark:text-slate-100 line-clamp-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"> Designing Data-Intensive Applications </p> <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-1"> Martin Kleppmann </p> </div> </a><a href="https://amzn.to/3KzmYhS" target="_blank" rel="noopener noreferrer" class="group block" title="Anna Kariênina by Liev Tolstói"> <div class="aspect-[2/3] overflow-hidden rounded-lg shadow-md group-hover:shadow-xl transition-shadow duration-300"> <img src="https://m.media-amazon.com/images/I/61pTISHTptL._SY522_.jpg" alt="Cover of Anna Kariênina" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="mt-2"> <p class="text-sm font-medium text-slate-900 dark:text-slate-100 line-clamp-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"> Anna Kariênina </p> <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-1"> Liev Tolstói </p> </div> </a><a href="https://amzn.to/3MiaFai" target="_blank" rel="noopener noreferrer" class="group block" title="Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman and, Julie Sussman"> <div class="aspect-[2/3] overflow-hidden rounded-lg shadow-md group-hover:shadow-xl transition-shadow duration-300"> <img src="https://m.media-amazon.com/images/I/71BBXQnykuL._AC_UL640_FMwebp_QL65_.jpg" alt="Cover of Structure and Interpretation of Computer Programs" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="mt-2"> <p class="text-sm font-medium text-slate-900 dark:text-slate-100 line-clamp-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"> Structure and Interpretation of Computer Programs </p> <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-1"> Harold Abelson, Gerald Jay Sussman and, Julie Sussman </p> </div> </a><a href="https://amzn.to/4iK1MlP" target="_blank" rel="noopener noreferrer" class="group block" title="Fundamentals of Software Architecture by Mark Richards and Neal Ford"> <div class="aspect-[2/3] overflow-hidden rounded-lg shadow-md group-hover:shadow-xl transition-shadow duration-300"> <img src="https://m.media-amazon.com/images/I/81duqPx-r9L._SY522_.jpg" alt="Cover of Fundamentals of Software Architecture" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="mt-2"> <p class="text-sm font-medium text-slate-900 dark:text-slate-100 line-clamp-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"> Fundamentals of Software Architecture </p> <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-1"> Mark Richards and Neal Ford </p> </div> </a><a href="https://amzn.to/3KPIrTI" target="_blank" rel="noopener noreferrer" class="group block" title="Conceptual Mathematics: A First Introduction to Categories by F. W. Lawvere and Stephen H. Schanuel"> <div class="aspect-[2/3] overflow-hidden rounded-lg shadow-md group-hover:shadow-xl transition-shadow duration-300"> <img src="https://m.media-amazon.com/images/I/51b3voe8OdL._SY522_.jpg" alt="Cover of Conceptual Mathematics: A First Introduction to Categories" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="mt-2"> <p class="text-sm font-medium text-slate-900 dark:text-slate-100 line-clamp-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"> Conceptual Mathematics: A First Introduction to Categories </p> <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-1"> F. W. Lawvere and Stephen H. Schanuel </p> </div> </a> </div> <p class="mt-6 text-xs text-slate-400 dark:text-slate-500 italic">
Links are Amazon affiliate links.
</p> </section> <section class="px-4 sm:px-6 pt-4 pb-12 mx-auto max-w-4xl overflow-x-hidden" aria-label="latest watched" data-astro-cid-zlo25txy><h2 class="text-2xl font-bold mb-6 text-slate-900 dark:text-slate-100 border-b border-slate-200 dark:border-slate-700 pb-3 flex items-center gap-2" data-astro-cid-zlo25txy><span class="text-red-500" data-astro-cid-zlo25txy>▶</span> What I Watched
</h2><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6" data-astro-cid-zlo25txy><a href="/watched/landscape-of-consciousness-robert-kuhn" class="group block" data-astro-cid-zlo25txy><article class="h-full" data-astro-cid-zlo25txy><div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-zlo25txy><img src="https://i.ytimg.com/vi/h5G6Oc_V3Lw/hqdefault.jpg" alt="Robert Lawrence Kuhn: A Landscape of Consciousness" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-zlo25txy><div class="absolute inset-0 flex items-center justify-center" data-astro-cid-zlo25txy><div class="w-10 h-10 bg-red-600 rounded-full flex items-center justify-center opacity-90 group-hover:opacity-100 group-hover:scale-110 transition-all" data-astro-cid-zlo25txy><svg class="w-4 h-4 text-white ml-0.5" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-zlo25txy><path d="M8 5v14l11-7z" data-astro-cid-zlo25txy></path></svg></div></div><span class="absolute bottom-2 right-2 bg-black/80 text-white text-xs px-1.5 py-0.5 rounded" data-astro-cid-zlo25txy>3h</span></div><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors line-clamp-2 text-sm" data-astro-cid-zlo25txy>Robert Lawrence Kuhn: A Landscape of Consciousness</h3><p class="text-xs text-slate-500 dark:text-slate-400 mt-1" data-astro-cid-zlo25txy>Essentia Foundation</p></article></a><a href="/watched/quantum-gravity-wolfram-physics-project" class="group block" data-astro-cid-zlo25txy><article class="h-full" data-astro-cid-zlo25txy><div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-zlo25txy><img src="https://i.ytimg.com/vi/ioXwL-c1RXQ/hqdefault.jpg" alt="Jonathan Gorard: Quantum Gravity &#38; Wolfram Physics Project" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-zlo25txy><div class="absolute inset-0 flex items-center justify-center" data-astro-cid-zlo25txy><div class="w-10 h-10 bg-red-600 rounded-full flex items-center justify-center opacity-90 group-hover:opacity-100 group-hover:scale-110 transition-all" data-astro-cid-zlo25txy><svg class="w-4 h-4 text-white ml-0.5" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-zlo25txy><path d="M8 5v14l11-7z" data-astro-cid-zlo25txy></path></svg></div></div><span class="absolute bottom-2 right-2 bg-black/80 text-white text-xs px-1.5 py-0.5 rounded" data-astro-cid-zlo25txy>3h</span></div><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors line-clamp-2 text-sm" data-astro-cid-zlo25txy>Jonathan Gorard: Quantum Gravity &amp; Wolfram Physics Project</h3><p class="text-xs text-slate-500 dark:text-slate-400 mt-1" data-astro-cid-zlo25txy>Curt Jaimungal</p></article></a><a href="/watched/visual-group-theory-lecture-1-1" class="group block" data-astro-cid-zlo25txy><article class="h-full" data-astro-cid-zlo25txy><div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-zlo25txy><img src="https://i.ytimg.com/vi/UwTQdOop-nU/hqdefault.jpg" alt="Visual Group Theory, Lecture 1.1: What is a group?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-zlo25txy><div class="absolute inset-0 flex items-center justify-center" data-astro-cid-zlo25txy><div class="w-10 h-10 bg-red-600 rounded-full flex items-center justify-center opacity-90 group-hover:opacity-100 group-hover:scale-110 transition-all" data-astro-cid-zlo25txy><svg class="w-4 h-4 text-white ml-0.5" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-zlo25txy><path d="M8 5v14l11-7z" data-astro-cid-zlo25txy></path></svg></div></div><span class="absolute bottom-2 right-2 bg-black/80 text-white text-xs px-1.5 py-0.5 rounded" data-astro-cid-zlo25txy>27m</span></div><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors line-clamp-2 text-sm" data-astro-cid-zlo25txy>Visual Group Theory, Lecture 1.1: What is a group?</h3><p class="text-xs text-slate-500 dark:text-slate-400 mt-1" data-astro-cid-zlo25txy>Professor Macauley</p></article></a></div><div class="mt-6 text-center" data-astro-cid-zlo25txy><a href="/watched" class="inline-flex items-center gap-2 text-indigo-600 dark:text-indigo-400 hover:text-indigo-800 dark:hover:text-indigo-300 font-medium transition-colors text-sm" data-astro-cid-zlo25txy>
View all videos
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-zlo25txy><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-zlo25txy></path></svg></a></div></section> <section class="px-4 sm:px-6 pt-4 pb-12 mx-auto max-w-4xl overflow-x-hidden" aria-label="latest reads"><h2 class="text-2xl font-bold mb-6 text-slate-900 dark:text-slate-100 border-b border-slate-200 dark:border-slate-700 pb-3 flex items-center gap-2"><span>📖</span> What I Read
</h2><ul class="space-y-4"><li class="group"><a href="https://arxiv.org/abs/2512.15567" target="_blank" rel="noopener noreferrer" class="flex items-start gap-4 p-4 rounded-lg hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors"><span class="text-2xl flex-shrink-0">📑</span><div class="flex-grow min-w-0"><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors inline-flex items-center gap-1">Evaluating Large Language Models in Scientific Discovery<svg class="w-3.5 h-3.5 text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path></svg></h3><p class="text-sm text-slate-500 dark:text-slate-400 mt-0.5"><span>Zhangde Song, Jieyu Lu, Yuanqi Du, et al.</span><span class="mx-1">·</span><span>arXiv</span></p></div><time datetime="2025-12-23T00:00:00.000Z" class="text-xs text-slate-400 dark:text-slate-500 flex-shrink-0">2025-12-23</time></a></li><li class="group"><a href="https://martin.kleppmann.com/2025/12/08/ai-formal-verification.html" target="_blank" rel="noopener noreferrer" class="flex items-start gap-4 p-4 rounded-lg hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors"><span class="text-2xl flex-shrink-0">📄</span><div class="flex-grow min-w-0"><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors inline-flex items-center gap-1">Prediction: AI will make formal verification go mainstream<svg class="w-3.5 h-3.5 text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path></svg></h3><p class="text-sm text-slate-500 dark:text-slate-400 mt-0.5"><span>Martin Kleppmann</span><span class="mx-1">·</span><span>Martin Kleppmann&#39;s Blog</span></p></div><time datetime="2025-12-08T00:00:00.000Z" class="text-xs text-slate-400 dark:text-slate-500 flex-shrink-0">2025-12-08</time></a></li><li class="group"><a href="https://www.nonzero.org/p/is-marc-andreessen-just-flat-out" target="_blank" rel="noopener noreferrer" class="flex items-start gap-4 p-4 rounded-lg hover:bg-slate-50 dark:hover:bg-slate-800/50 transition-colors"><span class="text-2xl flex-shrink-0">📄</span><div class="flex-grow min-w-0"><h3 class="font-semibold text-slate-900 dark:text-slate-100 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors inline-flex items-center gap-1">Is Marc Andreessen just flat-out dumb?<svg class="w-3.5 h-3.5 text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path></svg></h3><p class="text-sm text-slate-500 dark:text-slate-400 mt-0.5"><span>Robert Wright</span><span class="mx-1">·</span><span>Nonzero Newsletter</span></p></div><time datetime="2025-12-03T00:00:00.000Z" class="text-xs text-slate-400 dark:text-slate-500 flex-shrink-0">2025-12-03</time></a></li></ul><div class="mt-6 text-center"><a href="/reads" class="inline-flex items-center gap-2 text-indigo-600 dark:text-indigo-400 hover:text-indigo-800 dark:hover:text-indigo-300 font-medium transition-colors text-sm">
View all reads
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></section> </main>  </main> <footer> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="grid grid-cols-12 gap-4 gap-y-8 sm:gap-8 py-8 md:py-12 border-t border-gray-200 dark:border-slate-800"> <div class="col-span-12 lg:col-span-3"> <div class="mb-2"> <a class="inline-block font-bold text-xl" href="/">Ibrahim Cesar</a> </div> <div class="text-sm text-gray-600"> <a class="text-gray-600 dark:text-gray-400 hover:underline transition duration-150 ease-in-out" rel="noopener noreferrer" title="Code for this blog & content!" target="_blank" href="https://github.com/ibrahimcesar/blog"><span class="external">Source Code</span> </a> ·
<a class="text-gray-600 dark:text-gray-400 hover:underline transition duration-150 ease-in-out" title="Terms of Use" href="/terms-and-privacy">Terms and Privacy Policy
</a> </div> </div> </div> <div class="grid grid-cols-12 gap-4 gap-y-8"> <div class="col-span-6 md:col-span-2 lg:col-span-2"> <div class="text-gray-800 dark:text-gray-300 font-medium mb-2">
Find me
</div> <ul class="text-sm"> <a class="text-gray-600 dark:text-gray-400 transition duration-150 ease-in-out" rel="noopener noreferrer" target="_blank" title="My repositories & contributions" href="https://github.com/ibrahimcesar"><span class="external">GitHub</span> </a> ·
<a class="text-gray-600 dark:text-gray-400 transition duration-150 ease-in-out" rel="noopener noreferrer" target="_blank" title="My professional experience" href="https://www.linkedin.com/in/ibrahimcesar/?locale=en_US"><span class="external">LinkedIn</span> </a> ·
<a class="text-gray-600 dark:text-gray-400 transition duration-150 ease-in-out" rel="noopener noreferrer" target="_blank" title="View my Badges on Credly" href="https://www.credly.com/users/ibrahimcesar"><span class="external">Credly</span> </a> </ul> </div> <div class="col-span-6 md:col-span-2 lg:col-span-2"> <div class="text-gray-800 dark:text-gray-300 font-medium mb-2">
Pages
</div> <ul class="text-sm"> <a class="text-gray-600  dark:text-gray-400 transition duration-150 ease-in-out" href="/talks">Talks
</a> ·
<a class="text-gray-600  dark:text-gray-400 transition duration-150 ease-in-out" href="/whoiam">About/Sobre
</a> </ul> </div> <div class="col-span-12 md:col-span-8 lg:col-span-8"> <div class="mb-3"> <div class="text-gray-800 dark:text-gray-300 font-medium mb-3">
AWS Certifications
</div> <!-- Visible Certifications --> <div class="mb-3"> <div class="inline-block"> <a href="https://www.credly.com/badges/3773b694-fdad-4b0c-8e7d-be6db77f1c72/public_url" target="_blank" title="AWS Certified Solutions Architect - Professional" rel="noopener noreferrer"> <img src="/certs/aws-certified-solutions-architect-professional.png" alt="AWS Certified Solutions Architect - Professional" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/9d0b63e9-dc89-432c-b4cd-57342fb6e294/public_url" target="_blank" title="AWS Certified DevOps Engineer - Professional" rel="noopener noreferrer"> <img src="/certs/aws-certified-devops-engineer-professional.png" alt="AWS Certified DevOps Engineer - Professional" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/5f1acc74-2575-415a-a9a1-1ab786cbf72d/public_url" target="_blank" title="Well-Architected Proficient" rel="noopener noreferrer"> <img src="/certs/well-architected-proficient.png" alt="Well-Architected Proficient" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/b46e75f0-3838-4133-b62f-8eecf4338b81/public_url" target="_blank" title="AWS Certified Security - Specialty" rel="noopener noreferrer"> <img src="/certs/aws-certified-security-specialty.png" alt="AWS Certified Security - Specialty" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/3489f3ba-6b26-420e-a38a-d7a26e0f50dc/public_url" target="_blank" title="AWS Certified Machine Learning - Specialty" rel="noopener noreferrer"> <img src="/certs/aws-certified-machine-learning-specialty.png" alt="AWS Certified Machine Learning - Specialty" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/a229e88f-f0b5-46fe-be56-ac2f1d884c29/public_url" target="_blank" title="AWS Certified Data Analytics – Specialty" rel="noopener noreferrer"> <img src="/certs/aws-certified-data-analytics-specialty.png" alt="AWS Certified Data Analytics – Specialty" width="100px"> </a> </div> </div> <!-- Additional Badges (Expandable) --> <div id="additional-badges" class="hidden"> <div class="inline-block"> <a href="https://www.credly.com/badges/d657610e-f06b-4c47-9ba5-b53edd895024/public_url" target="_blank" title="AWS Certified Solutions Architect – Associate" rel="noopener noreferrer"> <img src="/certs/aws-certified-solutions-architect-associate.png" alt="AWS Certified Solutions Architect – Associate" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/81e155c6-e7d5-4a83-81ea-dd48672c74df/public_url" target="_blank" title="AWS Certified AI Practitioner" rel="noopener noreferrer"> <img src="/certs/aws-certified-ai-practitioner.png" alt="AWS Certified AI Practitioner" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/03f205a7-487d-4d78-b93d-df8970b9ec33/public_url" target="_blank" title="AWS Certified SysOps Administrator – Associate" rel="noopener noreferrer"> <img src="/certs/aws-certified-sysops-administrator-associate.png" alt="AWS Certified SysOps Administrator – Associate" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/f9501e3a-6618-4029-a9a2-e853dfb9ffb1/public_url" target="_blank" title="AWS Certified Machine Learning Engineer – Associate" rel="noopener noreferrer"> <img src="/certs/aws-certified-machine-learning-engineer-associate.png" alt="AWS Certified Machine Learning Engineer – Associate" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/da11a745-acae-4d2c-b8a3-ca41f49f072f/public_url" target="_blank" title="AWS Certified Data Engineer – Associate" rel="noopener noreferrer"> <img src="/certs/aws-certified-data-engineer-associate.png" alt="AWS Certified Data Engineer – Associate" width="100px"> </a> </div><div class="inline-block"> <a href="https://www.credly.com/badges/abca4112-7358-43f2-a23d-bf03760052a7/public_url" target="_blank" title="AWS Certified Cloud Practitioner" rel="noopener noreferrer"> <img src="/certs/aws-certified-cloud-practitioner.png" alt="AWS Certified Cloud Practitioner" width="100px"> </a> </div> </div> <!-- Show More/Less Button and Credly Link --> <div class="mt-2"> <button id="toggle-badges" class="text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 underline transition duration-150 ease-in-out" aria-expanded="false" aria-controls="additional-badges" data-original-text="Show 6 more badges">
Show 6 more badges
</button> <span class="text-sm text-gray-600 dark:text-gray-400 mx-2">·</span> <a href="https://www.credly.com/users/ibrahimcesar" target="_blank" rel="noopener noreferrer" class="text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 underline transition duration-150 ease-in-out" title="View all my badges on Credly"> <span class="external">View all 50+ badges on Credly</span> </a> </div> </div> </div> </div> <div class="md:flex md:items-center md:justify-between py-8"> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400">
&copy; 2020 — 2026 <em>All rights reserved</em>. Made with
<span role="img" aria-label="puzzle piece">&nbsp;🧩&nbsp;</span>
in São Paulo, Brazil. Built with 🚀 <a rel="noopener noreferrer" href="https://astro.build" target="_blank" class="underline"><span class="external">Astro v5.15.8</span></a>, hosted on <a rel="noopener noreferrer" href="https://aws.amazon.com/amplify/" target="_blank" class="underline"><span class="external">AWS Amplify</span></a>. This blog represents my own viewpoints and not those of my employer, Amazon Web Services (AWS).
<details class="mt-2 text-xs"> <summary class="cursor-pointer font-mono text-gray-500 dark:text-gray-500 hover:text-gray-700 dark:hover:text-gray-300">
Stats for nerds ▾
</summary> <div class="mt-2 font-mono text-gray-500 dark:text-gray-500 space-y-0.5 pl-2 border-l-2 border-gray-300 dark:border-gray-600"> <div>FCP: <span id="fcp-time">...</span></div> <div>LCP: <span id="lcp-time">...</span></div> <div>TTI: <span id="tti-time">...</span></div> <div>Page load: <span id="page-load-time">...</span></div> <div>Page size: <span id="page-size">...</span></div> <div>DOM nodes: <span id="dom-nodes">...</span></div> <div>Carbon: ~<span id="carbon-estimate">...</span>g CO₂</div> <div>Blog: 147,325 words in 92 posts</div> <div>Entropy: 5.009 bits/char</div> <div>Built: 2026-01-09</div> <div>Unix: <span id="unix-timestamp">...</span></div> </div> </details> </div> <div class="mt-4 md:mt-0"> <iframe src="https://github.com/sponsors/ibrahimcesar/button" title="Sponsor ibrahimcesar" height="32" width="114" style="border: 0; border-radius: 6px;"></iframe> </div> </div> </div> </footer> <script type="module">const i=document.getElementById("toggle-badges"),c=document.getElementById("additional-badges");i&&c&&i.addEventListener("click",()=>{c.classList.contains("hidden")?(c.classList.remove("hidden"),i.setAttribute("aria-expanded","true"),i.textContent="Show fewer badges"):(c.classList.add("hidden"),i.setAttribute("aria-expanded","false"),i.textContent=i.dataset.originalText)});function d(n){return n>=1e3?`${(n/1e3).toFixed(2)}s`:`${Math.round(n)}ms`}function l(){const n=document.getElementById("fcp-time"),s=document.getElementById("lcp-time"),m=document.getElementById("tti-time"),f=document.getElementById("page-load-time"),g=document.getElementById("page-size"),E=document.getElementById("dom-nodes"),u=document.getElementById("carbon-estimate"),p=document.getElementById("unix-timestamp"),o=performance.getEntriesByType("navigation")[0];if(n){const t=performance.getEntriesByName("first-contentful-paint")[0];t&&(n.textContent=d(t.startTime))}if(s&&"PerformanceObserver"in window)try{const t=performance.getEntriesByType("largest-contentful-paint");if(t.length>0){const e=t[t.length-1];s.textContent=d(e.startTime)}else new PerformanceObserver(e=>{const a=e.getEntries(),r=a[a.length-1];r&&s&&(s.textContent=d(r.startTime))}).observe({type:"largest-contentful-paint",buffered:!0})}catch{s.textContent="N/A"}if(m&&o){const t=o.domInteractive-o.fetchStart;t>0&&(m.textContent=d(t))}if(f&&o){const t=o.loadEventEnd-o.fetchStart;t>0&&(f.textContent=d(t))}if(g){const t=performance.getEntriesByType("resource");let e=o?.transferSize||0;if(t.forEach(a=>{e+=a.transferSize||0}),e>0&&(g.textContent=e>1024*1024?`${(e/(1024*1024)).toFixed(2)} MB`:e>1024?`${(e/1024).toFixed(1)} KB`:`${e} B`,u)){const r=(e/1048576*.2).toFixed(3);u.textContent=r}}E&&(E.textContent=document.getElementsByTagName("*").length.toLocaleString()),p&&(p.textContent=Math.floor(Date.now()/1e3).toString())}document.readyState==="complete"?setTimeout(l,0):window.addEventListener("load",()=>setTimeout(l,0));document.addEventListener("astro:page-load",()=>setTimeout(l,0));</script>  <script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';

  function initMermaid() {
    const isDark = document.documentElement.classList.contains('dark');
    mermaid.initialize({
      startOnLoad: false,
      theme: isDark ? 'dark' : 'default'
    });

    // Only render elements that haven't been rendered yet
    // Check for: no SVG inside, and text content starts with a valid mermaid keyword
    const validDiagramTypes = ['flowchart', 'graph', 'sequenceDiagram', 'classDiagram', 'stateDiagram', 'erDiagram', 'gantt', 'pie', 'journey', 'gitGraph', 'timeline', 'mindmap', 'quadrantChart', 'xychart', 'sankey', 'block', '%%'];

    const unrenderedDiagrams = Array.from(document.querySelectorAll('pre.mermaid')).filter(el => {
      // Skip if already has SVG
      if (el.querySelector('svg')) return false;

      // Check if text content looks like a mermaid diagram
      const text = el.textContent?.trim() || '';
      return validDiagramTypes.some(type => text.startsWith(type) || text.toLowerCase().startsWith(type.toLowerCase()));
    });

    if (unrenderedDiagrams.length > 0) {
      mermaid.run({ nodes: unrenderedDiagrams }).then(() => {
        addExpandButtons();
      }).catch(err => {
        console.warn('Mermaid rendering error:', err);
        addExpandButtons();
      });
    } else {
      // Still add expand buttons for already-rendered diagrams
      addExpandButtons();
    }
  }

  function addExpandButtons() {
    document.querySelectorAll('pre.mermaid').forEach((pre) => {
      // Skip if already has expand button
      if (pre.parentElement?.classList.contains('mermaid-wrapper')) return;

      // Wrap the pre element
      const wrapper = document.createElement('div');
      wrapper.className = 'mermaid-wrapper';
      pre.parentNode.insertBefore(wrapper, pre);
      wrapper.appendChild(pre);

      // Add expand button
      const btn = document.createElement('button');
      btn.className = 'mermaid-expand-btn';
      btn.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg>`;
      btn.title = 'Expand diagram';
      btn.onclick = () => openModal(pre);
      wrapper.appendChild(btn);
    });
  }

  function openModal(pre) {
    const svg = pre.querySelector('svg');
    if (!svg) return;

    const overlay = document.createElement('div');
    overlay.className = 'mermaid-modal-overlay';
    overlay.innerHTML = `
      <div class="mermaid-modal">
        <button class="mermaid-modal-close" title="Close">&times;</button>
        <div class="mermaid-modal-content">${svg.outerHTML}</div>
      </div>
    `;

    overlay.querySelector('.mermaid-modal-close').onclick = () => overlay.remove();
    overlay.onclick = (e) => { if (e.target === overlay) overlay.remove(); };
    document.addEventListener('keydown', function escClose(e) {
      if (e.key === 'Escape') { overlay.remove(); document.removeEventListener('keydown', escClose); }
    });

    document.body.appendChild(overlay);
  }

  // Run on initial load
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initMermaid);
  } else {
    initMermaid();
  }

  // Re-run after View Transitions
  document.addEventListener('astro:page-load', initMermaid);
</script> <script>
  // Function to apply dark mode
  function applyDarkMode() {
    if (
      localStorage.theme === "dark" ||
      (!("theme" in localStorage) &&
        window.matchMedia("(prefers-color-scheme: dark)").matches)
    ) {
      document.documentElement.classList.add("dark");
    } else {
      document.documentElement.classList.remove("dark");
    }
  }

  // Apply on initial load
  applyDarkMode();

  // Reapply after View Transitions - multiple event listeners for reliability
  document.addEventListener('astro:after-swap', () => {
    applyDarkMode();
    // Force a repaint to ensure styles apply immediately
    document.body.offsetHeight;
  });

  document.addEventListener('astro:page-load', applyDarkMode);

  function attachEvent(selector, event, fn) {
    const matches = document.querySelectorAll(selector);
    if (matches && matches.length) {
      matches.forEach((elem) => {
        elem.addEventListener(
          event,
          function () {
            fn(elem);
          },
          false
        );
      });
    }
  }

  window.onload = function () {
    attachEvent("[data-aw-toggle-menu]", "click", function (elem) {
      elem.classList.toggle("expanded");
      document.getElementById("menu")?.classList.toggle("hidden");
    });

    attachEvent("[data-aw-toggle-color-scheme]", "click", function (elem) {
      document.documentElement.classList.toggle("dark");
      localStorage.theme = document.documentElement.classList.contains("dark")
        ? "dark"
        : "light";
    });
  };
  window.onpageshow = function () {
    const elem = document.querySelector("[data-aw-toggle-menu]");
    if (elem) {
      elem.classList.remove("expanded");
    }
    document.getElementById("menu")?.classList.add("hidden");
  };
</script> </body></html>