<!DOCTYPE html><html lang="en"> <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 e(){dataLayer.push(arguments)}e(`js`,new Date),e(`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.aQfDf-Kh.js"></script><style>.yt-lite{contain:layout style;cursor:pointer;aspect-ratio:16/9;background-color:#000;background-position:50%;background-size:cover;display:block;position:relative}.yt-lite.lyt-activated:before{content:"";box-sizing:content-box;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==);background-position:top;background-repeat:repeat-x;width:100%;height:60px;padding-bottom:50px;transition:all .2s cubic-bezier(0,0,.2,1);display:block;position:absolute;top:0}.yt-lite:after{content:"";padding-bottom:var(--aspect-ratio,56.25%);display:block}@supports (aspect-ratio:16 / 9){.yt-lite:after{display:none}}.yt-lite>iframe{border:0;outline:0;width:100%;height:100%;margin:0;padding:0;display:block;position:absolute;top:0;left:0;right:0}.yt-lite>.lty-thumbnail{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:100%;height:100%;position:absolute;top:0;left:0}.yt-lite>.lty-playbtn{z-index:1;cursor:pointer;filter:grayscale();opacity:.8;background-color:#0000;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%;border:none;width:68px;height:48px;padding:0;font-size:0;line-height:0;transition:filter .1s cubic-bezier(0,0,.2,1);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.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{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.yt-lite>.lty-playlist-icon{z-index:1;pointer-events:none;background-color:#000c;border-radius:4px;justify-content:center;align-items:center;width:48px;height:48px;display:flex;position:absolute;top:8px;right:8px}.yt-lite>.lty-playlist-icon:before{content:"";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-position:50%;background-repeat:no-repeat;background-size:contain;width:28px;height:28px}
</style><link rel="stylesheet" href="/_astro/PageLayout.CW_5ZW2E.css"><style>@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}
.line-clamp-2[data-astro-cid-wkphu6oc]{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}
</style><style>[data-astro-transition-scope="astro-a36aqq6m-1"] { view-transition-name: post-title-categorical-solutions-architect-part-11; }@layer astro { ::view-transition-old(post-title-categorical-solutions-architect-part-11) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }::view-transition-new(post-title-categorical-solutions-architect-part-11) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(post-title-categorical-solutions-architect-part-11) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(post-title-categorical-solutions-architect-part-11) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-1"],
			[data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-1"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-1"],
			[data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-1"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-1"],
			[data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-1"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-1"],
			[data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-1"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-a36aqq6m-2"] { view-transition-name: post-title-categorical-solutions-architect-part-10; }@layer astro { ::view-transition-old(post-title-categorical-solutions-architect-part-10) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }::view-transition-new(post-title-categorical-solutions-architect-part-10) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(post-title-categorical-solutions-architect-part-10) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(post-title-categorical-solutions-architect-part-10) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-2"],
			[data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-2"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-2"],
			[data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-2"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-2"],
			[data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-2"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-2"],
			[data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-2"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-a36aqq6m-3"] { view-transition-name: post-title-categorical-solutions-architect-part-9; }@layer astro { ::view-transition-old(post-title-categorical-solutions-architect-part-9) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }::view-transition-new(post-title-categorical-solutions-architect-part-9) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(post-title-categorical-solutions-architect-part-9) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(post-title-categorical-solutions-architect-part-9) { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-3"],
			[data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-3"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-3"],
			[data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-3"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-a36aqq6m-3"],
			[data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-a36aqq6m-3"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-a36aqq6m-3"],
			[data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-a36aqq6m-3"] { 
	animation-duration: 180ms;
	animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
	animation-fill-mode: both;
	animation-name: astroFadeIn; }</style></head> <body class="antialiased text-slate-900 dark:text-slate-100 tracking-tight bg-white dark:bg-slate-900 overflow-x-hidden">  <a href="#main-content" class="skip-nav" aria-label="Skip to main content" data-astro-cid-mgodhpf2>
Skip to main content
</a> <div class="reading-progress-container" data-astro-cid-xszgtpar> <div class="reading-progress-bar" id="reading-progress-bar" data-astro-cid-xszgtpar></div> </div> <script type="module">function e(){let e=document.getElementById(`reading-progress-bar`);if(!e)return;let t=window.innerHeight,n=document.documentElement.scrollHeight,r=(window.scrollY||document.documentElement.scrollTop)/(n-t)*100;e.style.width=`${Math.min(r,100)}%`}document.addEventListener(`DOMContentLoaded`,e);var t=!1;window.addEventListener(`scroll`,()=>{t||=(window.requestAnimationFrame(()=>{e(),t=!1}),!0)}),window.addEventListener(`resize`,e);</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-indigo-500 dark:focus:ring-indigo-400 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-indigo-500 dark:focus:ring-indigo-400 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" aria-expanded="false" aria-controls="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-600 dark:text-gray-300" aria-label="Main navigation" id="menu"> <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 &amp; 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-indigo-500 dark:focus:ring-indigo-400 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-indigo-500 dark:focus:ring-indigo-400 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-indigo-500 dark:focus:ring-indigo-400 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">  <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 lang="en" class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2026-08-08T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2026-08-08 </time> <div class="flex-grow"> <h3 data-astro-transition-scope="astro-a36aqq6m-1" class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/categorical-solutions-architect-part-11" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Adjunctions: The Formal Structure of Trade-offs </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> Flexibility vs. governance. Performance vs. cost. Consistency vs. availability. These aren&#39;t problems to solve—they&#39;re adjunctions to navigate. Part 11 of applying category theory to Solutions Architecture. </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-700"> 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-1 rounded-md
                bg-lime-700 hover:bg-lime-800
                !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-1 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/trade-offs" class="inline-flex items-center gap-1 text-xs px-2 py-1 rounded-md
                bg-green-700 hover:bg-green-800
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Trade-offs"> <span aria-hidden="true">#</span> <span>Trade-offs</span> </a> </div> </div> </div> </article> </li><li class="group"> <article lang="en" class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2026-07-29T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2026-07-29 </time> <div class="flex-grow"> <h3 data-astro-transition-scope="astro-a36aqq6m-2" class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/categorical-solutions-architect-part-10" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Limits and Colimits: The General Theory of &#39;Best Fit&#39; </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> Products, pullbacks, and terminal objects are all limits. Coproducts, pushouts, and initial objects are all colimits. Part 10 of applying category theory to Solutions Architecture—the unified theory. </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-700"> 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-1 rounded-md
                bg-lime-700 hover:bg-lime-800
                !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-1 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/universal properties" class="inline-flex items-center gap-1 text-xs px-2 py-1 rounded-md
                bg-red-600 hover:bg-red-700
                !text-white !no-underline hover:!text-white visited:!text-white
                font-medium
                transition-colors duration-200" title="View all posts tagged with Universal Properties"> <span aria-hidden="true">#</span> <span>Universal Properties</span> </a> </div> </div> </div> </article> </li><li class="group"> <article lang="en" class="flex flex-col sm:flex-row sm:items-baseline gap-2 sm:gap-6"> <time datetime="2026-07-29T12:00:00.000Z" class="text-sm font-mono text-slate-500 dark:text-slate-400 shrink-0 tabular-nums"> 2026-07-29 </time> <div class="flex-grow"> <h3 data-astro-transition-scope="astro-a36aqq6m-3" class="text-xl sm:text-2xl font-semibold leading-snug"> <a href="/blog/categorical-solutions-architect-part-9" class="text-slate-900 dark:text-slate-100 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors duration-200"> Pullbacks and Pushouts: Integration Points That Don&#39;t Lie </a> </h3> <p class="text-slate-600 dark:text-slate-400 text-sm mt-1 line-clamp-2"> When two services need to agree on something, you need a pullback. When two sources need to merge, you need a pushout. Part 9 of applying category theory to Solutions Architecture. </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-700"> 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-1 rounded-md
                bg-lime-700 hover:bg-lime-800
                !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-1 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/integration" class="inline-flex items-center gap-1 text-xs px-2 py-1 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 Integration"> <span aria-hidden="true">#</span> <span>Integration</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-wkphu6oc> <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-wkphu6oc> <span class="text-red-500" aria-hidden="true" data-astro-cid-wkphu6oc>▶</span> What I Watched
</h2> <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6" data-astro-cid-wkphu6oc> <a href="/watched/landscape-of-consciousness-robert-kuhn" class="group block" data-astro-cid-wkphu6oc> <article class="h-full" data-astro-cid-wkphu6oc> <div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-wkphu6oc> <img src="https://i.ytimg.com/vi/h5G6Oc_V3Lw/hqdefault.jpg" alt="" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-wkphu6oc> <div class="absolute inset-0 flex items-center justify-center" data-astro-cid-wkphu6oc> <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-wkphu6oc> <svg class="w-4 h-4 text-white ml-0.5" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-wkphu6oc> <path d="M8 5v14l11-7z" data-astro-cid-wkphu6oc></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-wkphu6oc> 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-wkphu6oc> Robert Lawrence Kuhn: A Landscape of Consciousness </h3> <p class="text-xs text-slate-500 dark:text-slate-400 mt-1" data-astro-cid-wkphu6oc> Essentia Foundation </p> </article> </a><a href="/watched/quantum-gravity-wolfram-physics-project" class="group block" data-astro-cid-wkphu6oc> <article class="h-full" data-astro-cid-wkphu6oc> <div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-wkphu6oc> <img src="https://i.ytimg.com/vi/ioXwL-c1RXQ/hqdefault.jpg" alt="" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-wkphu6oc> <div class="absolute inset-0 flex items-center justify-center" data-astro-cid-wkphu6oc> <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-wkphu6oc> <svg class="w-4 h-4 text-white ml-0.5" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-wkphu6oc> <path d="M8 5v14l11-7z" data-astro-cid-wkphu6oc></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-wkphu6oc> 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-wkphu6oc> 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-wkphu6oc> Curt Jaimungal </p> </article> </a><a href="/watched/visual-group-theory-lecture-1-1" class="group block" data-astro-cid-wkphu6oc> <article class="h-full" data-astro-cid-wkphu6oc> <div class="relative aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3" data-astro-cid-wkphu6oc> <img src="https://i.ytimg.com/vi/UwTQdOop-nU/hqdefault.jpg" alt="" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300" loading="lazy" data-astro-cid-wkphu6oc> <div class="absolute inset-0 flex items-center justify-center" data-astro-cid-wkphu6oc> <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-wkphu6oc> <svg class="w-4 h-4 text-white ml-0.5" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24" data-astro-cid-wkphu6oc> <path d="M8 5v14l11-7z" data-astro-cid-wkphu6oc></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-wkphu6oc> 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-wkphu6oc> 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-wkphu6oc> Professor Macauley </p> </article> </a> </div> <div class="mt-6 text-center" data-astro-cid-wkphu6oc> <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-wkphu6oc>
View all videos
<svg class="w-4 h-4" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-wkphu6oc> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" data-astro-cid-wkphu6oc></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-500 dark:text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <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-500 dark:text-slate-400 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-500 dark:text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <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-500 dark:text-slate-400 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-500 dark:text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <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-500 dark:text-slate-400 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> <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 &amp; content!" target="_blank" href="https://github.com/ibrahimcesar/blog"><span class="external">Source Code</span><span class="sr-only"> (opens in new tab)</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"> <h2 class="text-base text-gray-800 dark:text-gray-300 font-medium mb-2">
Find me
</h2> <ul class="text-sm flex flex-wrap gap-x-2"> <li> <a class="text-gray-600 dark:text-gray-400 transition duration-150 ease-in-out" rel="noopener noreferrer" target="_blank" title="My repositories &amp; contributions" href="https://github.com/ibrahimcesar"><span class="external">GitHub</span><span class="sr-only"> (opens in new tab)</span> </a> <span aria-hidden="true">·</span> </li> <li> <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><span class="sr-only"> (opens in new tab)</span> </a> <span aria-hidden="true">·</span> </li> <li> <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><span class="sr-only"> (opens in new tab)</span> </a> </li> </ul> </div> <div class="col-span-6 md:col-span-2 lg:col-span-2"> <h2 class="text-base text-gray-800 dark:text-gray-300 font-medium mb-2">
Pages
</h2> <ul class="text-sm flex flex-wrap gap-x-2"> <li> <a class="text-gray-600  dark:text-gray-400 transition duration-150 ease-in-out" href="/talks">Talks
</a> <span aria-hidden="true">·</span> </li> <li> <a class="text-gray-600  dark:text-gray-400 transition duration-150 ease-in-out" href="/whoiam">About/Sobre
</a> </li> </ul> </div> <div class="col-span-12 md:col-span-8 lg:col-span-8"> <div class="mb-3"> <h2 class="text-base text-gray-800 dark:text-gray-300 font-medium mb-3">
AWS Certifications
</h2> <!-- 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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </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"> <span class="sr-only"> (opens in new tab)</span> </a> </div> </div> <!-- Show More/Less Button and Credly Link --> <div class="mt-2"> <button id="toggle-badges" class="inline-block py-1 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="inline-block py-1 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><span class="sr-only"> (opens in new tab)</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><span class="sr-only"> (opens in new tab)</span></a>, hosted on <a rel="noopener noreferrer" href="https://aws.amazon.com/amplify/" target="_blank" class="underline"><span class="external">AWS Amplify</span><span class="sr-only"> (opens in new tab)</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-400 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-400 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: 157,484 words in 95 posts</div> <div>Entropy: 4.998 bits/char</div> <div>Built: 2026-08-08</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">function e(){let e=document.getElementById(`toggle-badges`),t=document.getElementById(`additional-badges`);e&&t&&(e.onclick=()=>{t.classList.contains(`hidden`)?(t.classList.remove(`hidden`),e.setAttribute(`aria-expanded`,`true`),e.textContent=`Show fewer badges`):(t.classList.add(`hidden`),e.setAttribute(`aria-expanded`,`false`),e.textContent=e.dataset.originalText)})}e(),document.addEventListener(`astro:page-load`,e);function t(e){return e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`}function n(){let e=document.getElementById(`fcp-time`),n=document.getElementById(`lcp-time`),r=document.getElementById(`tti-time`),i=document.getElementById(`page-load-time`),a=document.getElementById(`page-size`),o=document.getElementById(`dom-nodes`),s=document.getElementById(`carbon-estimate`),c=document.getElementById(`unix-timestamp`),l=performance.getEntriesByType(`navigation`)[0];if(e){let n=performance.getEntriesByName(`first-contentful-paint`)[0];n&&(e.textContent=t(n.startTime))}if(n&&`PerformanceObserver`in window)try{let e=performance.getEntriesByType(`largest-contentful-paint`);if(e.length>0){let r=e[e.length-1];n.textContent=t(r.startTime)}else new PerformanceObserver(e=>{let r=e.getEntries(),i=r[r.length-1];i&&n&&(n.textContent=t(i.startTime))}).observe({type:`largest-contentful-paint`,buffered:!0})}catch{n.textContent=`N/A`}if(r&&l){let e=l.domInteractive-l.fetchStart;e>0&&(r.textContent=t(e))}if(i&&l){let e=l.loadEventEnd-l.fetchStart;e>0&&(i.textContent=t(e))}if(a){let e=performance.getEntriesByType(`resource`),t=l?.transferSize||0;e.forEach(e=>{t+=e.transferSize||0}),t>0&&(a.textContent=t>1024*1024?`${(t/(1024*1024)).toFixed(2)} MB`:t>1024?`${(t/1024).toFixed(1)} KB`:`${t} B`,s&&(s.textContent=(t/(1024*1024)*.2).toFixed(3)))}o&&(o.textContent=document.getElementsByTagName(`*`).length.toLocaleString()),c&&(c.textContent=Math.floor(Date.now()/1e3).toString())}document.readyState===`complete`?setTimeout(n,0):window.addEventListener(`load`,()=>setTimeout(n,0)),document.addEventListener(`astro:page-load`,()=>setTimeout(n,0));</script>  <script type="module" src="/_astro/BasicScripts.astro_astro_type_script_index_0_lang.BLsW7AaF.js"></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);

  // Document-level event delegation so the header controls keep working
  // after Astro view transitions swap the DOM. Registered once.
  if (!window._awDelegatedClicks) {
    window._awDelegatedClicks = true;
    document.addEventListener("click", function (e) {
      if (!(e.target instanceof Element)) return;

      const menuToggle = e.target.closest("[data-aw-toggle-menu]");
      if (menuToggle) {
        menuToggle.classList.toggle("expanded");
        menuToggle.setAttribute(
          "aria-expanded",
          menuToggle.classList.contains("expanded") ? "true" : "false"
        );
        document.getElementById("menu")?.classList.toggle("hidden");
        return;
      }

      const schemeToggle = e.target.closest("[data-aw-toggle-color-scheme]");
      if (schemeToggle) {
        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");
      elem.setAttribute("aria-expanded", "false");
    }
    document.getElementById("menu")?.classList.add("hidden");
  };
</script> </body> </html>