PageSourceSearch

https://sumitagrawal.dev/blog/

html sumitagrawal.dev collected 2026-10-02 01:52:32 UTC 61,751 bytes, 110 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
vendor: 66 bytes, line 1
1<script async="" src="https://www.googletagmanager.com/gtag/js?id=
1G-77NBT1CZ0N
vendor: 11 bytes, line 1
1"></script>
1<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9953784416776334" crossorigin="anonymous"></script>
1<script async="" src="https://platform.twitter.com/widgets.js" charSet="utf-8"></script>
1<meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="generator" content="Gatsby 5.16.1"/><meta name="theme-color" content="#663399"/><meta name="description" content="Technical articles on software engineering, cloud architecture, React, AWS, DevOps, and AI. Tutorials, insights, and deep dives." data-gatsby-head="true"/><meta name="keywords" content="software engineer, full-stack developer, cloud architecture, technical blog, web development, portfolio, Sumit Agrawal" data-gatsby-head="true"/><meta name="author" content="Sumit Agrawal" data-gatsby-head="true"/><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" data-gatsby-head="true"/><meta property="og:type" content="website" data-gatsby-head="true"/><meta property="og:url" content="https://sumitagrawal.dev/blog" data-gatsby-head="true"/><meta property="og:title" content="Blog" data-gatsby-head="true"/><meta property="og:description" content="Technical articles on software engineering, cloud architecture, React, AWS, DevOps, and AI. Tutorials, insights, and deep dives." data-gatsby-head="true"/><meta property="og:image" content="https://sumitagrawal.dev/og-image.png" data-gatsby-head="true"/><meta property="og:image:width" content="1200" data-gatsby-head="true"/><meta property="og:image:height" content="630" data-gatsby-head="true"/><meta property="og:site_name" content="Sumit Agrawal {.dev}" data-gatsby-head="true"/><meta property="og:locale" content="en_US" data-gatsby-head="true"/><meta name="twitter:card" content="summary_large_image" data-gatsby-head="true"/><meta name="twitter:site" content="@tech_sumit" data-gatsby-head="true"/><meta name="twitter:creator" content="@tech_sumit" data-gatsby-head="true"/><meta name="twitter:title" content="Blog" data-gatsby-head="true"/><meta name="twitter:description" content="Technical articles on software engineering, cloud architecture, React, AWS, DevOps, and AI. Tutorials, insights, and deep dives." data-gatsby-head="true"/><meta name="twitter:image" content="https://sumitagrawal.dev/og-image.png" data-gatsby-head="true"/><meta name="content-signal" content="search=yes, ai-input=yes, ai-train=yes" data-gatsby-head="true"/><meta name="usage-rights" content="Free to use including AI/LLM training, with attribution to Sumit Agrawal (https://sumitagrawal.dev)" data-gatsby-head="true"/><meta name="ai-content-declaration" content="human-authored" data-gatsby-head="true"/><meta name="citation_author" content="Sumit Agrawal" data-gatsby-head="true"/><meta name="citation_title" content="Blog" data-gatsby-head="true"/><meta name="citation_public_url" content="https://sumitagrawal.dev/blog" data-gatsby-head="true"/><link rel="preconnect" href="https://www.googletagmanager.com"/><link rel="dns-prefetch" href="https://www.googletagmanager.com"/><link rel="icon" href="/favicon-32x32.png?v=a57437b27a2eebd2746c7a66c6e48a35" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=a57437b27a2eebd2746c7a66c6e48a35"/><link rel="sitemap" type="application/xml" href="/sitemap-index.xml"/><link rel="alternate" type="application/rss+xml" title="Sumit Agrawal&#x27;s Technical Blog" href="/rss.xml"/><link rel="preconnect" href="https://fonts.googleapis.com"/>
1<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title data-gatsby-head="true">Blog | Sumit Agrawal {.dev}</title><link rel="canonical" href="https://sumitagrawal.dev/blog" data-gatsby-head="true"/><link rel="alternate" type="application/rss+xml" title="Sumit Agrawal {.dev} - RSS Feed" href="https://sumitagrawal.dev/rss.xml" data-gatsby-head="true"/><link rel="alternate" type="text/plain" title="LLM Context" href="https://sumitagrawal.dev/llms.txt" data-gatsby-head="true"/><link rel="alternate" type="text/plain" title="AI Policy" href="https://sumitagrawal.dev/ai.txt" data-gatsby-head="true"/><link rel="author" href="https://sumitagrawal.dev/humans.txt" data-gatsby-head="true"/><link rel="alternate" type="text/markdown" title="Markdown version" href="https://sumitagrawal.dev/blog.md" data-gatsby-head="true"/><style data-href="/styles.882335a1e52bdd325568.css" data-identity="gatsby-global-css">.preload *{transition:none!important}:root,body{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--bg-card:rgba(30,41,59,.8);--text-primary:#f8fafc;--text-secondary:#cbd5e1;--text-tertiary:#94a3b8;--accent-primary:var(--gradient-primary,#007acc);--accent-secondary:var(--gradient-secondary,#0ea5e9);--accent-gradient:var(--gradient-bg,linear-gradient(135deg,#007acc 0%,#0ea5e9 100%));--gradient-primary:#dd83ad;--gradient-secondary:#c3e1fc;--gradient-bg:linear-gradient(90deg,#dd83ad,#c5e2fc);--gradient-text:linear-gradient(45deg,#dd83ad,#c3e1fc);--color-hover:#0284c7;--color-active:#0369a1;--border-color:#334155;--border-light:#475569;--divider-color:rgba(51,65,85,.6);--shadow-sm:0 1px 3px rgba(0,0,0,.2);--shadow-md:0 4px 15px rgba(0,0,0,.3);--shadow-lg:0 10px 40px rgba(0,0,0,.4);--shadow-glow:0 0 30px rgba(0,122,204,.3);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"SF Mono","Fira Code","Fira Mono","Roboto Mono","Cascadia Code",monospace;--max-width:1400px;--header-height:70px;--border-radius:12px;--border-radius-lg:20px;--transition-fast:0.15s ease;--transition-normal:0.3s ease;--transition-slow:0.5s ease}body.light-theme{--bg-primary:#fff;--bg-secondary:#f8fafc;--bg-tertiary:#f1f5f9;--bg-card:rgba(248,250,252,.9);--text-primary:#0f172a;--text-secondary:#334155;--text-tertiary:#64748b;--accent-primary:#007acc;--accent-secondary:#0284c7;--color-hover:#0369a1;--color-active:#075985;--border-color:#e2e8f0;--border-light:#cbd5e1;--divider-color:rgba(226,232,240,.8);--shadow-sm:0 1px 3px rgba(0,0,0,.05);--shadow-md:0 4px 15px rgba(0,0,0,.08);--shadow-lg:0 10px 40px rgba(0,0,0,.1);--shadow-glow:0 0 30px rgba(0,122,204,.15)}html{box-sizing:border-box;font-size:16px;scroll-behavior:smooth}*,:after,:before{box-sizing:inherit}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:16px;font-weight:400;line-height:1.6;margin:0;overflow-x:hidden;padding:0;transition:background-color var(--transition-normal),color var(--transition-normal)}body:before{background:radial-gradient(circle at 20% 20%,rgba(0,122,204,.05) 0,transparent 50%),radial-gradient(circle at 80% 80%,rgba(14,165,233,.05) 0,transparent 50%);content:"";height:100%;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}main{display:block;margin:0 auto;max-width:var(--max-width);min-height:calc(100vh - var(--header-height) - 80px);padding:0;position:relative}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-family:var(--font-sans);font-weight:700;letter-spacing:-.025em;line-height:1.2;margin-bottom:1rem;margin-top:0}h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:900;margin-bottom:1.5rem}h2{font-size:clamp(2rem,4vw,3rem);font-weight:800}h3{font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700}h4{font-size:clamp(1.25rem,2.5vw,1.875rem)}h4,h5{font-weight:600}h5{font-size:clamp(1.125rem,2vw,1.5rem)}h6{font-size:clamp(1rem,1.5vw,1.25rem);font-weight:600}p{color:var(--text-secondary);font-size:1.1rem;line-height:1.7;margin-bottom:1.5rem;margin-top:0;max-width:70ch}a{color:var(--accent-primary);position:relative;text-decoration:none;transition:all var(--transition-normal)}a:hover{color:var(--color-hover);transform:translateY(-1px)}a:active{color:var(--color-active);transform:translateY(0)}.gradient-text{color:transparent}.gradient-border,.gradient-text{-webkit-text-fill-color:transparent;background:var(--gradient-text);-webkit-background-clip:text;background-clip:text}.gradient-border{border:2px solid var(--gradient-primary)}.gradient-bg{background:var(--gradient-bg)}.gradient-shadow{box-shadow:0 4px 15px rgba(var(--gradient-primary),.4)}.btn{align-items:center;border:none;border-radius:var(--border-radius);cursor:pointer;display:inline-flex;font-family:var(--font-sans);font-size:1rem;font-weight:600;justify-content:center;letter-spacing:-.025em;overflow:hidden;padding:.875rem 2rem;position:relative;text-decoration:none;transition:all var(--transition-normal)}.btn-primary{background:var(--gradient-bg);box-shadow:0 4px 15px rgba(0,122,204,.4);color:#fff}.btn-primary:hover{box-shadow:0 8px 25px rgba(0,122,204,.6);color:#fff;transform:translateY(-2px)}.btn-secondary{-webkit-text-fill-color:transparent;background:transparent;background:var(--gradient-text);-webkit-background-clip:text;background-clip:text;border:2px solid var(--gradient-primary)}.btn-secondary:hover{-webkit-text-fill-color:#fff;background:var(--gradient-bg);box-shadow:0 4px 15px rgba(0,122,204,.4);color:#fff;transform:translateY(-2px)}.card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);padding:2rem;transition:all var(--transition-normal)}.card:hover{border-color:var(--border-light);box-shadow:var(--shadow-lg);transform:translateY(-4px)}code,pre{font-family:var(--font-mono);font-size:.9rem}pre{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);margin:1.5rem 0;overflow-x:auto;padding:1.5rem}code:not(pre code){background:var(--bg-tertiary);border-radius:.375rem;font-size:.875rem;padding:.25rem .5rem}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}::selection{background:rgba(0,122,204,.3);color:var(--text-primary)}:focus-visible{border-radius:4px;outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width:768px){main{padding:0 1rem}.card{padding:1.5rem}p{font-size:1rem}}:not(pre)>code[class*=language-],pre[class*=language-]{background:var(--bg-secondary)!important;border:1px solid var(--border-color);border-radius:var(--border-radius)}pre[class*=language-]{margin:1.5rem 0!important;overflow-x:auto;padding:1.5rem!important}code[class*=language-],pre[class*=language-]{color:#e1e4e8!important;font-family:SF Mono,Fira Code,Fira Mono,Menlo,Monaco,Courier New,monospace!important;font-size:.9rem!important;line-height:1.6!important}pre[class*=language-] code{color:#e1e4e8!important}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6a737d!important}.token.punctuation{color:var(--text-secondary)!important}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#f97583!important}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#9ecbff!important}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#79b8ff!important}.token.atrule,.token.attr-value,.token.keyword{color:#b392f0!important}.token.class-name,.token.function{color:#79b8ff!important}.token.important,.token.regex,.token.variable{color:#ffab70!important}body.light-theme :not(pre)>code[class*=language-],body.light-theme pre[class*=language-]{background:#f6f8fa!important;color:#24292e!important}body.light-theme pre[class*=language-] code{color:#24292e!important}body.light-theme .token.cdata,body.light-theme .token.comment,body.light-theme .token.doctype,body.light-theme .token.prolog{color:#6a737d!important}body.light-theme .token.punctuation{color:var(--text-secondary)!important}body.light-theme .token.boolean,body.light-theme .token.constant,body.light-theme .token.deleted,body.light-theme .token.number,body.light-theme .token.property,body.light-theme .token.symbol,body.light-theme .token.tag{color:#d73a49!important}body.light-theme .token.attr-name,body.light-theme .token.builtin,body.light-theme .token.char,body.light-theme .token.inserted,body.light-theme .token.selector,body.light-theme .token.string{color:#22863a!important}body.light-theme .language-css .token.string,body.light-theme .style .token.string,body.light-theme .token.entity,body.light-theme .token.operator,body.light-theme .token.url{color:#005cc5!important}body.light-theme .token.atrule,body.light-theme .token.attr-value,body.light-theme .token.keyword{color:#6f42c1!important}body.light-theme .token.class-name,body.light-theme .token.function{color:#005cc5!important}body.light-theme .token.important,body.light-theme .token.regex,body.light-theme .token.variable{color:#e36209!important}.gatsby-highlight{border-radius:var(--border-radius);margin:1.5rem 0;overflow:hidden}.gatsby-highlight pre[class*=language-]{border-radius:var(--border-radius);margin:0!important}.gatsby-highlight pre code{color:#e1e4e8!important;display:block}body.light-theme .gatsby-highlight pre code{color:#24292e!important}.token,.token.plain-text{color:inherit}.twitter-tweet{margin:2rem auto!important}blockquote.twitter-tweet{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);font-style:normal;margin:2rem 0;padding:1.5rem}blockquote.twitter-tweet p{margin-bottom:.5rem}blockquote.twitter-tweet a{color:var(--accent-primary)}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}
1:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.Header-module--header--923a3{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:var(--bg-primary);border-bottom:1px solid var(--border-color);box-shadow:0 2px 20px rgba(0,0,0,.1);display:flex;height:70px;justify-content:center;left:0;padding:0 2rem;position:fixed;top:0;transition:all .3s ease;width:100%;z-index:100}.Header-module--headerBottom--2a3a3{top:calc(100vh - 80px)}.Header-module--headerBottom--2a3a3,.Header-module--headerScrolled--695f3{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:16px;bottom:unset;box-shadow:0 8px 32px rgba(0,0,0,.2);height:60px;left:50%;max-width:1200px;transform:translateX(-50%);transition:all .4s cubic-bezier(.7,0,.3,1);width:calc(100% - 4rem)}.Header-module--headerScrolled--695f3{top:20px}.Header-module--headerContent--a5151{align-items:center;display:flex;justify-content:space-between;max-width:var(--max-width);width:100%}.Header-module--titleLink--d2ccd{color:var(--text-primary);font-family:"Inter",var(--font-sans);font-size:1.4rem;font-weight:700;letter-spacing:-.5px;text-decoration:none;transition:all .3s ease}.Header-module--titleLink--d2ccd:hover{color:var(--gradient-primary);text-decoration:none;transform:translateY(-1px)}.Header-module--navContainer--f5a09{align-items:center;display:flex;gap:2.5rem}.Header-module--nav--f677b{align-items:center;display:flex;gap:2rem}.Header-module--nav--f677b a{color:var(--text-secondary);font-family:"Inter",var(--font-sans);font-size:1rem;font-weight:500;letter-spacing:-.2px;padding:.5rem 0;position:relative;text-decoration:none;transition:all .3s ease}.Header-module--nav--f677b a:after{background:var(--gradient-bg);bottom:0;content:"";height:2px;left:0;position:absolute;transition:width .3s ease;width:0}.Header-module--nav--f677b a.Header-module--activeLink--905e9,.Header-module--nav--f677b a:hover{color:var(--gradient-primary);text-decoration:none;transform:translateY(-1px)}.Header-module--nav--f677b a.Header-module--activeLink--905e9:after,.Header-module--nav--f677b a:hover:after{width:100%}@media (max-width:768px){.Header-module--header--923a3{height:60px;padding:0 1rem}.Header-module--headerBottom--2a3a3{height:50px;top:calc(100vh - 60px);width:calc(100% - 2rem)}.Header-module--headerScrolled--695f3{height:50px;top:10px;width:calc(100% - 2rem)}.Header-module--navContainer--f5a09{display:none}.Header-module--titleLink--d2ccd{font-size:1.2rem}}@media (max-width:480px){.Header-module--titleLink--d2ccd{font-size:1.1rem}}.ThemeToggle-module--toggleButton--62689{align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.1);color:var(--text-secondary);cursor:pointer;display:flex;font-size:1.2rem;height:48px;justify-content:center;line-height:1;margin-left:0;overflow:hidden;padding:10px 12px;position:relative;transition:all .3s ease;width:48px}.ThemeToggle-module--toggleButton--62689:before{background:linear-gradient(135deg,rgba(0,122,204,.1),rgba(14,165,233,.1));content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--transition-normal);width:100%}.ThemeToggle-module--toggleButton--62689:hover{background:var(--bg-primary);border-color:var(--accent-primary);box-shadow:0 4px 15px rgba(0,0,0,.15);color:var(--accent-primary);transform:translateY(-2px)}.ThemeToggle-module--toggleButton--62689:hover:before{opacity:1}.ThemeToggle-module--toggleButton--62689:active{box-shadow:0 2px 10px rgba(0,0,0,.1);transform:translateY(0)}.ThemeToggle-module--icon--e1815{color:var(--text-secondary);transition:all .3s ease}.ThemeToggle-module--toggleButton--62689:hover .ThemeToggle-module--icon--e1815{color:var(--accent-primary);transform:rotate(15deg) scale(1.1)}.ThemeToggle-module--toggleButton--62689:active .ThemeToggle-module--icon--e1815{transform:rotate(0deg) scale(1)}.ThemeToggle-module--placeholder--dc4b5{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:12px;display:inline-block;height:48px;margin-left:0;opacity:.5;width:48px}.Footer-module--footer--afd90{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:var(--background-secondary);border-top:1px solid var(--gradient-primary,rgba(102,126,234,.2));box-shadow:0 -4px 20px rgba(0,0,0,.1);margin-top:auto;padding:2rem 0;position:relative}.Footer-module--footer--afd90:before{background:var(--gradient-bg,linear-gradient(90deg,#667eea,#764ba2));content:"";height:2px;left:0;opacity:.8;position:absolute;right:0;top:0}.Footer-module--footerContent--9696c{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 2rem}.Footer-module--footerText--b9ad7{color:var(--text-secondary);font-size:.95rem;font-weight:400;line-height:1.5}.Footer-module--footerText--b9ad7 a{text-decoration:none;transition:all .3s ease}.Footer-module--footerText--b9ad7 a:hover{opacity:.8;transform:translateY(-1px)}.Footer-module--socialLinks--b0fcb{align-items:center;display:flex;gap:2rem}.Footer-module--socialLink--a09aa{align-items:center;border-radius:8px;color:var(--text-primary);display:flex;font-size:.95rem;font-weight:500;gap:.5rem;padding:.5rem;text-decoration:none;transition:all .3s ease}.Footer-module--socialLink--a09aa:hover{background:var(--background-hover,hsla(0,0%,100%,.05));opacity:.8;transform:translateY(-2px)}.Footer-module--socialIcon--86785{font-size:1.2rem;transition:all .3s ease}.Footer-module--socialLink--a09aa:hover .Footer-module--socialIcon--86785{transform:scale(1.1)}@media (max-width:768px){.Footer-module--footerContent--9696c{flex-direction:column;gap:1rem;text-align:center}.Footer-module--socialLinks--b0fcb{gap:1.5rem}.Footer-module--socialLink--a09aa{font-size:.9rem;padding:.4rem}.Footer-module--socialIcon--86785{font-size:1.1rem}}@media (max-width:480px){.Footer-module--socialLinks--b0fcb{gap:1rem}.Footer-module--socialLink--a09aa{flex-direction:column;font-size:.85rem;gap:.25rem}.Footer-module--socialIcon--86785{font-size:1.3rem}}.ChatbotWidget-module--widgetContainer--507c4{bottom:20px;position:fixed;right:20px;z-index:1000}.ChatbotWidget-module--toggleButton--6eb4f{align-items:center;background-color:#007bff;border:none;border-radius:50%;box-shadow:0 4px 8px rgba(0,0,0,.2);color:#fff;cursor:pointer;display:flex;font-size:28px;height:60px;justify-content:center;transition:background-color .2s ease;width:60px}.ChatbotWidget-module--toggleButton--6eb4f:hover{background-color:#0056b3}.ChatbotWidget-module--chatWindow--5517a{animation:ChatbotWidget-module--fadeIn--32480 .3s ease-out;background-color:#fff;border-radius:8px;bottom:80px;box-shadow:0 5px 15px rgba(0,0,0,.2);display:flex;flex-direction:column;height:500px;overflow:hidden;position:absolute;right:0;width:350px}@keyframes ChatbotWidget-module--fadeIn--32480{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ChatbotWidget-module--chatHeader--a1096{align-items:center;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;
1display:flex;font-weight:700;justify-content:space-between;padding:10px 15px}.ChatbotWidget-module--closeButton--7f6be{background:none;border:none;color:#6c757d;cursor:pointer;font-size:20px}.ChatbotWidget-module--closeButton--7f6be:hover{color:#343a40}.ChatbotWidget-module--messagesContainer--419d6{background-color:#e9ecef;flex-grow:1;overflow-y:auto;padding:15px}.ChatbotWidget-module--message--d4654{word-wrap:break-word;border-radius:15px;margin-bottom:10px;max-width:80%;padding:8px 12px}.ChatbotWidget-module--message--d4654.ChatbotWidget-module--ai--21eeb{align-self:flex-start;background-color:#fff;border-bottom-left-radius:0;color:#333;margin-right:auto}.ChatbotWidget-module--message--d4654.ChatbotWidget-module--user--4ccd1{align-self:flex-end;background-color:#007bff;border-bottom-right-radius:0;color:#fff;margin-left:auto}.ChatbotWidget-module--inputArea--99421{background-color:#fff;border-top:1px solid #dee2e6;display:flex;padding:10px}.ChatbotWidget-module--inputArea--99421 input{border:1px solid #ced4da;border-radius:20px;flex-grow:1;font-size:14px;margin-right:10px;padding:8px 15px}.ChatbotWidget-module--inputArea--99421 input:focus{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25);outline:none}.ChatbotWidget-module--inputArea--99421 button{align-items:center;background-color:#007bff;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:18px;height:40px;justify-content:center;width:40px}.ChatbotWidget-module--inputArea--99421 button:disabled{background-color:#6c757d;cursor:not-allowed}.ChatbotWidget-module--inputArea--99421 button:hover:not(:disabled){background-color:#0056b3}.ChatbotWidget-module--loading--d0160 span{animation-duration:1.4s;animation-fill-mode:both;animation-iteration-count:infinite;animation-name:ChatbotWidget-module--blink--b7053;font-size:1.5em;line-height:1}.ChatbotWidget-module--loading--d0160 span:nth-child(2){animation-delay:.2s}.ChatbotWidget-module--loading--d0160 span:nth-child(3){animation-delay:.4s}@keyframes ChatbotWidget-module--blink--b7053{0%{opacity:.2}20%{opacity:1}to{opacity:.2}}.AIVisitorBanner-module--banner--0b1ea{align-items:center;animation:AIVisitorBanner-module--slideDown--afb03 .4s ease-out;background:linear-gradient(135deg,var(--ai-color,var(--accent-primary)) 0,color-mix(in srgb,var(--ai-color,var(--accent-primary)) 80%,#000) 100%);box-shadow:0 2px 10px rgba(0,0,0,.2);color:#fff;display:flex;font-size:.9rem;justify-content:space-between;left:0;padding:.6rem 1rem;position:fixed;right:0;top:0;z-index:10000}@keyframes AIVisitorBanner-module--slideDown--afb03{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.AIVisitorBanner-module--content--fc66e{align-items:center;display:flex;flex:1 1;gap:.75rem;justify-content:center}.AIVisitorBanner-module--icon--993ab{animation:AIVisitorBanner-module--wave--22372 1.5s ease-in-out infinite;font-size:1.2rem}@keyframes AIVisitorBanner-module--wave--22372{0%,to{transform:rotate(0deg)}25%{transform:rotate(15deg)}75%{transform:rotate(-15deg)}}.AIVisitorBanner-module--message--e39a7{text-align:center}.AIVisitorBanner-module--message--e39a7 strong{font-weight:600}.AIVisitorBanner-module--dismissButton--16470{background:transparent;border:none;color:#fff;cursor:pointer;font-size:1rem;margin-left:1rem;opacity:.8;padding:.25rem .5rem;transition:opacity .2s ease}.AIVisitorBanner-module--dismissButton--16470:hover{opacity:1}@media (max-width:768px){.AIVisitorBanner-module--banner--0b1ea{font-size:.8rem;padding:.5rem .75rem}.AIVisitorBanner-module--content--fc66e{gap:.5rem}.AIVisitorBanner-module--icon--993ab{font-size:1rem}.AIVisitorBanner-module--message--e39a7{text-align:left}}.Layout-module--layoutContainer--f8088{display:flex;flex-direction:column;min-height:100vh}.Layout-module--mainContent--2072e{flex:1 1;padding-top:70px}.Layout-module--floatingHeaderContent--a8922{padding-bottom:100px;padding-top:0;transition:all .4s cubic-bezier(.4,0,.2,1)}.Layout-module--scrolledContent--e48be{padding-bottom:0;padding-top:70px;transition:all .4s cubic-bezier(.4,0,.2,1)}@media (max-width:768px){.Layout-module--scrolledContent--e48be{padding-top:60px}}.content-page-module--contentCard--858d6{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 8px rgba(0,0,0,.1);margin-bottom:2.5rem;margin-top:0;padding:1.5rem 2rem}.content-page-module--contentCard--858d6 h2,.content-page-module--contentCard--858d6 h3{border-bottom:1px solid var(--border-color);color:var(--accent-primary);font-size:1.6rem;margin-bottom:1.5rem;padding-bottom:.75rem}.content-page-module--contentCard--858d6 p{color:var(--text-secondary)}.content-page-module--contentCard--858d6 ol,.content-page-module--contentCard--858d6 ul{padding-left:20px}.content-page-module--contentCard--858d6 li{margin-bottom:.5rem}
1.content-page-module--pageIntro--c6124{background-color:var(--background-secondary);border:1px solid var(--border-color-light);border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm);margin:0 auto 2.5rem;max-width:80ch;padding:2rem 1.5rem;text-align:center}.content-page-module--pageIntro--c6124 h3{color:var(--accent-primary);font-size:1.8rem;font-weight:600;margin-bottom:1rem;margin-top:0}.content-page-module--pageIntro--c6124 p{color:var(--text-secondary);font-size:1.05rem;line-height:1.7;margin-bottom:0;margin-left:auto;margin-right:auto;max-width:70ch}.content-page-module--jobHeaderContainer--8584f{border-bottom:1px solid var(--border-color);margin-bottom:1.5rem;padding-bottom:1rem}.content-page-module--jobCompany--cea5e{color:var(--accent-primary);font-size:1.4rem;font-weight:700;margin:0 0 .25rem}.content-page-module--jobTitle--cd41b{color:var(--text-primary);font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.content-page-module--jobMeta--d62fa{color:var(--text-secondary);display:flex;flex-wrap:wrap;font-size:.9rem;gap:.5rem;justify-content:space-between;margin-top:.5rem}.content-page-module--jobDate--3ef5d{font-style:italic}.content-page-module--jobResponsibilities--9405f{margin-bottom:1rem}.content-page-module--jobResponsibilities--9405f ul{list-style-type:disc;margin:0;padding-left:20px}.content-page-module--jobResponsibilities--9405f li{color:var(--text-secondary);line-height:1.5;margin-bottom:.6rem}.content-page-module--jobResponsibilities--9405f li a{color:var(--accent-primary)}.content-page-module--jobResponsibilities--9405f li a:hover{text-decoration:underline}.content-page-module--jobResponsibilities--9405f ul li:before{color:var(--primary-color);content:"•";display:inline-block;font-weight:700;margin-left:-1em;width:1em}.content-page-module--jobTechnologies--28949{border-top:1px dashed var(--border-color);margin-top:1rem;padding-top:1rem}.content-page-module--jobTechnologies--28949 h4{color:var(--text-muted);font-size:1rem;font-weight:600;margin-bottom:.5rem}.content-page-module--projectHeader--8d0e7{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.content-page-module--projectTitle--42ce3{font-size:1.8rem;margin-bottom:.5rem}.content-page-module--projectDates--81a48{color:var(--text-muted);font-size:.9rem;font-style:italic}.content-page-module--projectDetails--4011d{margin-bottom:1rem}.content-page-module--projectDetails--4011d>p:last-child{margin-bottom:0}.content-page-module--projectTechnologiesContainer--5c820{border-top:1px solid var(--border-color-light);margin-top:1rem;padding-top:1rem}.content-page-module--projectTechnologiesContainer--5c820 h4{color:var(--text-muted);font-size:1rem;font-weight:600;margin-bottom:.5rem}.content-page-module--techBadgeContainer--dd634{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.25rem}.content-page-module--techBadge--2d934{align-items:center;background-color:rgba(var(--accent-primary-rgb,100,255,218),.1);border:1px solid transparent;border-radius:20px;box-shadow:0 1px 3px rgba(0,0,0,.05);color:var(--accent-primary);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;gap:.5rem;padding:.6rem 1.1rem;text-decoration:none;transition:all .2s ease-in-out}.content-page-module--techBadge--2d934:hover{background-color:var(--accent-primary);border-color:var(--accent-primary);box-shadow:0 3px 6px rgba(0,0,0,.1);color:var(--text-primary);transform:translateY(-2px)}.content-page-module--contactList--0bb06{list-style:none;margin:0;padding:0}.content-page-module--contactItem--3e0c7{align-items:center;color:var(--text-secondary);display:flex;font-size:1rem;margin-bottom:1rem}.content-page-module--contactItem--3e0c7:last-child{margin-bottom:0}.content-page-module--contactIcon--bee99{color:var(--accent-primary);flex-shrink:0;font-size:1.2em;margin-right:.75rem;text-align:center;width:1.5em}.content-page-module--contactText--87232{line-height:1.5}.content-page-module--contactText--87232 a{color:var(--accent-primary);text-decoration:none}.content-page-module--contactText--87232 a:hover{text-decoration:underline}
1.blog-module--searchContainer--0f6af{margin-bottom:2rem}.blog-module--searchInput--635db{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);font-size:1rem;padding:.5rem 1rem;width:100%}.blog-module--blogLayout--a33b0{align-items:flex-start;display:flex;gap:2rem}.blog-module--sidebar--983b0{align-self:flex-start;border-right:1px solid var(--border-color);flex:0 0 200px;height:calc(100vh - var(--header-height) - 4rem);overflow-y:auto;padding-bottom:2rem;padding-right:1.5rem;position:sticky;top:calc(var(--header-height) + 2rem)}.blog-module--sidebar--983b0 h2{background-color:var(--bg-primary);color:var(--accent-primary);font-size:1.2rem;margin-bottom:1rem;padding-bottom:.5rem;position:sticky;top:0;z-index:1}.blog-module--tagList--5a67c{list-style:none;margin:0;padding:0}.blog-module--tagList--5a67c li{margin-bottom:.5rem}.blog-module--tagButton--de727{background-color:transparent;border:1px solid var(--text-secondary);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:.9rem;padding:.4rem .8rem;text-align:left;transition:all .2s ease-in-out;width:100%}.blog-module--tagButton--de727:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.blog-module--tagButton--de727.blog-module--activeTag--06825{background-color:var(--accent-primary);border-color:var(--accent-primary);color:var(--bg-primary);font-weight:700}.blog-module--clearButton--c5b4b{background:none;border:1px solid var(--text-secondary);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:.8rem;margin-top:1rem;padding:.3rem .6rem}.blog-module--clearButton--c5b4b:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.blog-module--postListContainer--cc175{flex:1 1}.blog-module--postGrid--ff8e8{display:grid;gap:1.5rem;grid-template-columns:repeat(3,1fr)}.blog-module--postCard--b9c2c{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:5px;box-shadow:0 2px 4px rgba(0,0,0,.1);display:flex;flex-direction:column;padding:1.5rem;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out}.blog-module--postCard--b9c2c:hover{box-shadow:0 6px 12px rgba(0,0,0,.25);transform:translateY(-5px)}.blog-module--postCard--b9c2c article{display:flex;flex-direction:column;flex-grow:1}.blog-module--postCard--b9c2c header{margin-bottom:.5rem}.blog-module--postCard--b9c2c section{flex-grow:1}.blog-module--postCard--b9c2c h2{font-size:1.25rem;margin-bottom:.25rem}.blog-module--postCard--b9c2c h2 a{color:var(--text-primary);text-decoration:none}.blog-module--postCard--b9c2c h2 a:hover{color:var(--accent-primary);text-decoration:none}.blog-module--postCard--b9c2c .blog-module--postDate--94364{color:var(--text-secondary);display:block;font-size:.85em;margin-top:0}.blog-module--postCard--b9c2c .blog-module--postDescription--d1b28{color:var(--text-secondary);font-size:.95rem;line-height:1.5;margin-top:.5rem}@media (max-width:768px){.blog-module--blogLayout--a33b0{flex-direction:column}.blog-module--sidebar--983b0{border-bottom:1px solid var(--border-color);border-right:none;flex-basis:auto;height:auto;margin-bottom:2rem;overflow-y:visible;padding-bottom:1rem;padding-right:0;position:static;width:100%}.blog-module--sidebar--983b0 h2{position:static}.blog-module--tagList--5a67c{display:flex;flex-wrap:wrap;gap:.5rem}.blog-module--tagList--5a67c li{margin-bottom:0}.blog-module--tagButton--de727{width:auto}.blog-module--postGrid--ff8e8{gap:1rem;grid-template-columns:repeat(1,1fr)}}.skills-module--skillsContainer--0232a{margin-top:2rem}.skills-module--categorySection--d28b2{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 8px rgba(0,0,0,.1);margin:0 auto 2.5rem;max-width:1400px;padding:1.5rem 2rem}.skills-module--categorySection--d28b2 h2{border-bottom:1px solid var(--border-color);color:var(--accent-primary);font-size:1.6rem;margin-bottom:1.5rem;padding-bottom:.75rem}.skills-module--categoryExplanation--bbea5{color:var(--text-secondary);font-size:.95rem;font-style:italic;margin-bottom:1.5rem;margin-top:-.25rem;max-width:80ch}.skills-module--skillsGrid--d42b9{display:flex;flex-wrap:wrap;gap:.75rem}.skills-module--skillBadge--6b5b9{align-items:center;background-color:rgba(var(--accent-primary-rgb,100,255,218),.1);border:1px solid transparent;border-radius:20px;box-shadow:0 1px 3px rgba(0,0,0,.05);color:var(--accent-primary);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;gap:.5rem;padding:.6rem 1.1rem;text-align:left;transition:all .2s ease-in-out}
1.skills-module--skillBadge--6b5b9 span{display:inline-block;line-height:1.2}.skills-module--skillBadge--6b5b9:hover{background-color:var(--accent-primary);border-color:var(--accent-primary);box-shadow:0 3px 6px rgba(0,0,0,.1);color:var(--text-primary);transform:translateY(-2px)}.skills-module--skillBadge--6b5b9 svg{flex-shrink:0;font-size:1.1em;vertical-align:middle}.skills-module--modalOverlay--b8a90{align-items:center;background-color:rgba(0,0,0,.7);bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1000}.skills-module--modalContent--32648{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:5px;max-height:85vh;max-width:600px;overflow-y:auto;padding:2rem;position:relative;width:100%}.skills-module--modalContent--32648 h2{color:var(--accent-primary);font-size:1.4rem;margin-bottom:1.5rem;margin-top:0}.skills-module--modalCloseButton--a110d{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.8rem;font-weight:700;line-height:1;padding:.25rem;position:absolute;right:.75rem;top:.75rem}.skills-module--modalCloseButton--a110d:hover{color:var(--text-primary)}.skills-module--modalSection--e54e7{margin-bottom:1.5rem}.skills-module--modalSection--e54e7:last-child{margin-bottom:0}.skills-module--modalSection--e54e7 h3{border-bottom:1px solid var(--border-color);color:var(--text-primary);font-size:1.1rem;margin-bottom:.75rem;padding-bottom:.3rem}.skills-module--modalSection--e54e7 ul{list-style:disc;margin:0;padding-left:20px}.skills-module--modalSection--e54e7 li{color:var(--text-secondary);margin-bottom:.5rem}.skills-module--modalSection--e54e7 li a{color:var(--accent-primary)}.skills-module--modalSection--e54e7 li a:hover{text-decoration:underline}.post-module--postContainer--f27dd{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1100px;padding:2rem}.post-module--backLink--845ee{align-items:center;color:var(--text-secondary);display:inline-flex;font-size:.95rem;font-weight:500;gap:.5rem;margin-bottom:2rem;padding:.5rem 0;text-decoration:none;transition:all .3s ease}.post-module--backLink--845ee:hover{color:var(--accent-primary);transform:translateX(-4px)}.post-module--backLink--845ee svg{transition:transform .3s ease}.post-module--backLink--845ee:hover svg{transform:translateX(-4px)}.post-module--postHeader--0a87b{margin-bottom:2rem;text-align:center}.post-module--postTitle--c001d{font-size:clamp(2rem,5vw,3.5rem);font-weight:900;letter-spacing:-.03em;line-height:1.2;margin-bottom:1.5rem}.post-module--postMeta--7f8f8{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center;margin-bottom:1.5rem}.post-module--lastUpdated--54806,.post-module--postDate--6b995,.post-module--readTime--b21c7{align-items:center;color:var(--text-tertiary);display:inline-flex;font-size:.95rem;font-weight:500;gap:.5rem}.post-module--lastUpdated--54806 svg,.post-module--postDate--6b995 svg,.post-module--readTime--b21c7 svg{opacity:.7}.post-module--lastUpdated--54806{color:var(--accent-primary);opacity:.8}.post-module--postTags--f8069{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:1rem}.post-module--tag--fd465{border-radius:20px;font-size:.85rem;font-weight:500;padding:.4rem 1rem;transition:all .3s ease}.post-module--tag--fd465:hover{transform:translateY(-1px)}.post-module--divider--0615f{border-radius:1px;height:2px;margin:2.5rem auto;max-width:200px;width:100%}.post-module--postContent--bedcc{color:var(--text-secondary);font-size:1.125rem;line-height:1.8}.post-module--postContent--bedcc h1,.post-module--postContent--bedcc h2,.post-module--postContent--bedcc h3,.post-module--postContent--bedcc h4,.post-module--postContent--bedcc h5,.post-module--postContent--bedcc h6{color:var(--text-primary);font-weight:700;line-height:1.3;margin-bottom:1rem;margin-top:2.5rem}.post-module--postContent--bedcc h2{border-bottom:1px solid var(--border-color);font-size:1.75rem;padding-bottom:.5rem}.post-module--postContent--bedcc h3{font-size:1.5rem}.post-module--postContent--bedcc h4{font-size:1.25rem}.post-module--postContent--bedcc p{margin-bottom:1.5rem;max-width:none}.post-module--postContent--bedcc a{color:var(--accent-primary);text-decoration:underline;text-underline-offset:3px;transition:all .3s ease}.post-module--postContent--bedcc a:hover{text-decoration-thickness:2px}.post-module--postContent--bedcc ol,.post-module--postContent--bedcc ul{margin-bottom:1.5rem;padding-left:1.5rem}.post-module--postContent--bedcc li{line-height:1.7;margin-bottom:.75rem}.post-module--postContent--bedcc li::marker{color:var(--accent-primary)}.post-module--postContent--bedcc blockquote{background:var(--bg-secondary);border-left:4px solid var(--accent-primary);border-radius:0 12px 12px 0;color:var(--text-secondary);font-style:italic;margin:2rem 0;padding:1.5rem 2rem}.post-module--postContent--bedcc blockquote p{margin-bottom:0}.post-module--postContent--bedcc pre{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;font-size:.9rem;line-height:1.6;margin:2rem 0;overflow-x:auto;padding:1.5rem}.post-module--postContent--bedcc code:not(pre code){background:var(--bg-tertiary);border-radius:6px;font-family:SF Mono,Fira Code,monospace;font-size:.9em;padding:.2rem .5rem}.post-module--postContent--bedcc img{border-radius:12px;box-shadow:var(--shadow-md);display:block;height:auto;margin:2rem 0;max-width:100%;object-fit:contain;width:100%}.post-module--postContent--bedcc p>img{margin:1rem 0}.post-module--postContent--bedcc hr{background:var(--border-color);border:none;height:1px;margin:3rem 0}.post-module--postContent--bedcc table{border-collapse:collapse;font-size:.95rem;margin:2rem 0;width:100%}.post-module--postContent--bedcc td,.post-module--postContent--bedcc th{border:1px solid var(--border-color);padding:.75rem 1rem;text-align:left}.post-module--postContent--bedcc th{background:var(--bg-secondary);color:var(--text-primary);font-weight:600}.post-module--postContent--bedcc tr:nth-child(2n){background:var(--bg-secondary)}.post-module--mermaidDiagram--d26eb{align-items:center;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;display:flex;justify-content:center;margin:2rem 0;overflow-x:auto;padding:2rem}.post-module--mermaidDiagram--d26eb svg{height:auto;max-width:100%}body.light-theme .post-module--mermaidDiagram--d26eb{background:var(--bg-tertiary)}.post-module--postFooter--1f768{border-top:1px solid var(--border-color);display:flex;justify-content:center;margin-top:4rem;padding-top:2rem}.post-module--footerLink--71b10{align-items:center;background:transparent;border:2px solid;border-radius:12px;color:var(--text-primary);display:inline-flex;font-size:1rem;font-weight:600;gap:.5rem;padding:.875rem 1.75rem;text-decoration:none;transition:all .3s ease}.post-module--footerLink--71b10:hover{background:var(--bg-secondary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.post-module--footerLink--71b10 svg{transition:transform .3s ease}.post-module--footerLink--71b10:hover svg{transform:translateX(-4px)}@media (max-width:768px){.post-module--postContainer--f27dd{padding:1.5rem}.post-module--postTitle--c001d{font-size:clamp(1.75rem,6vw,2.5rem)}.post-module--postMeta--7f8f8{gap:1rem}.post-module--postContent--bedcc{font-size:1.05rem}.post-module--postContent--bedcc h2{font-size:1.5rem}.post-module--postContent--bedcc h3{font-size:1.25rem}.post-module--postContent--bedcc pre{font-size:.85rem;padding:1rem}.post-module--postContent--bedcc blockquote{padding:1rem 1.5rem}}@media (max-width:480px){.post-module--postContainer--f27dd{padding:1rem}.post-module--backLink--845ee{font-size:.9rem}.post-module--postMeta--7f8f8{flex-direction:column;gap:.5rem}.post-module--postTags--f8069{gap:.4rem}.post-module--tag--fd465{font-size:.8rem;padding:.3rem .75rem}}</style>
1<script>
2      
3      
4      if(true) {
5        
vendor: 152 bytes, lines 5-9
5window.dataLayer = window.dataLayer || [];
6        function gtag(){dataLayer.push(arguments);}
7        gtag('js', new Date());
8
9        gtag('config', '
9G-77NBT1CZ0N
vendor: 213 bytes, lines 9-10
9', {"anonymize_ip":false,"cookie_expires":63072000,"send_page_view":false,"allow_google_signals":true,"allow_ad_personalization_signals":true,"link_attribution":true,"cookie_flags":"SameSite=None;Secure"});
10      
10}
11      </script>
11<style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript>
11<script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script>
11<style type="text/css">
12    .anchor.before {
13      position: absolute;
14      top: 0;
15      left: 0;
16      transform: translateX(-100%);
17      padding-right: 4px;
18    }
19    .anchor.after {
20      display: inline-block;
21      padding-left: 4px;
22    }
23    h1 .anchor svg,
24    h2 .anchor svg,
25    h3 .anchor svg,
26    h4 .anchor svg,
27    h5 .anchor svg,
28    h6 .anchor svg {
29      visibility: hidden;
30    }
31    h1:hover .anchor svg,
32    h2:hover .anchor svg,
33    h3:hover .anchor svg,
34    h4:hover .anchor svg,
35    h5:hover .anchor svg,
36    h6:hover .anchor svg,
37    h1 .anchor:focus svg,
38    h2 .anchor:focus svg,
39    h3 .anchor:focus svg,
40    h4 .anchor:focus svg,
41    h5 .anchor:focus svg,
42    h6 .anchor:focus svg {
43      visibility: visible;
44    }
45  </style>
45<script>
46    document.addEventListener("DOMContentLoaded", function(event) {
47      var hash = window.decodeURI(location.hash.replace('#', ''))
48      if (hash !== '') {
49        var element = document.getElementById(hash)
50        if (element) {
51          var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
52          var clientTop = document.documentElement.clientTop || document.body.clientTop || 0
53          var offset = element.getBoundingClientRect().top + scrollTop - clientTop
54          // Wait for the browser to finish rendering before scrolling.
55          setTimeout((function() {
56            window.scrollTo(0, offset - 0)
57          }), 0)
58        }
59      }
60    })
61  </script>
61<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&amp;display=swap"/><style>
62      :root {
63        --gradient-primary: #dd83ad !important;
64        --gradient-secondary: #c3e1fc !important;
65        --gradient-bg: linear-gradient(90deg, hsla(332, 57%, 69%, 1) 0%, hsla(208, 90%, 88%, 1) 100%) !important;
66        --gradient-text: linear-gradient(45deg, #dd83ad, #c3e1fc) !important;
67      }
68  </style>
68<script type="application/ld+json" data-gatsby-head="true">{"@context":"https://schema.org","@type":"WebSite","name":"Sumit Agrawal {.dev}","description":"Technical articles on software engineering, cloud architecture, React, AWS, DevOps, and AI. Tutorials, insights, and deep dives.","url":"https://sumitagrawal.dev","author":{"@type":"Person","name":"Sumit Agrawal","url":"https://sumitagrawal.dev","sameAs":["https://www.linkedin.com/in/agrawal-sumit/","https://github.com/tech-sumit"]},"potentialAction":{"@type":"SearchAction","target":"https://sumitagrawal.dev/blog?search={search_term_string}","query-input":"required name=search_term_string"}}</script>
68<script type="application/ld+json" data-gatsby-head="true">{"@context":"https://schema.org","@type":"Person","name":"Sumit Agrawal","url":"https://sumitagrawal.dev","jobTitle":"Software Engineer","description":"Software Engineer & Technical Writer specializing in full-stack development, cloud architecture, and AI integration.","knowsAbout":["Software Engineering","Full-Stack Development","Cloud Architecture","AI/ML Integration","AI Agent Development","React","Node.js","AWS","DevOps","Technical Writing"],"sameAs":["https://www.linkedin.com/in/agrawal-sumit/","https://github.com/tech-sumit","https://twitter.com/tech_sumit"]}</script>
68<script type="application/ld+json" data-gatsby-head="true">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://sumitagrawal.dev"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://sumitagrawal.dev/blog"}]}</script>
68</head><body>
68<script>
69    (function() {
70      function getInitialTheme() {
71        const persistedTheme = window.localStorage.getItem('theme');
72        const hasPersistedTheme = typeof persistedTheme === 'string';
73
74        if (hasPersistedTheme) {
75          return persistedTheme;
76        }
77
78        const mql = window.matchMedia('(prefers-color-scheme: light)');
79        const hasMediaQueryPreference = typeof mql.matches === 'boolean';
80
81        if (hasMediaQueryPreference) {
82          return mql.matches ? 'light' : 'dark';
83        }
84
85        return 'dark';
86      }
87
88      const theme = getInitialTheme();
89      const root = document.body;
90
91      // Add preload class to prevent transitions during theme setup
92      root.classList.add('preload');
93
94      root.classList.remove('light-theme', 'dark-theme');
95      if (theme === 'light') {
96        root.classList.add('light-theme');
97      }
98
99      // Remove preload class after a brief delay to allow transitions
100      setTimeout(() => {
101        root.classList.remove('preload');
102      }, 100);
103    })();
104  </script>
104<div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><div class="Layout-module--layoutContainer--f8088"><header class="Header-module--header--923a3 Header-module--headerBottom--2a3a3"><div class="Header-module--headerContent--a5151"><a class="Header-module--titleLink--d2ccd" href="/"><div style="display:flex;align-items:center;gap:0.75rem"><img src="data:image/webp;base64,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" alt="Logo" style="border-radius:50%;width:40px;height:40px;object-fit:cover"/>
104<span class="gradient-text">Sumit Agrawal {.dev}</span></div></a><div class="Header-module--navContainer--f5a09"><nav class="Header-module--nav--f677b"><a href="/projects/">Projects</a><a href="/skills/">Skills</a><a href="/experience/">Experience</a><a href="/achievements/">Achievements</a><a aria-current="page" class="Header-module--activeLink--905e9" href="/blog/">Blog</a></nav><div style="display:flex;align-items:center;gap:1rem"><a style="background:linear-gradient(135deg, #667eea 0%, #764ba2 100%);border:none;color:white;text-decoration:none;font-weight:600;font-size:0.9rem;padding:10px 20px;border-radius:8px;box-shadow:0 2px 10px rgba(0, 0, 0, 0.15);transition:all 0.3s ease;display:inline-block" href="/about/">About Me</a><div class="ThemeToggle-module--placeholder--dc4b5"></div></div></div></div></header><main class="Layout-module--mainContent--2072e Layout-module--floatingHeaderContent--a8922"><div>Loading...</div></main><footer class="Footer-module--footer--afd90"><div class="Footer-module--footerContent--9696c"><div class="Footer-module--footerText--b9ad7">© <!-- -->2026<!-- --> <span style="color:#667eea">Sumit Agrawal</span>. Built with<!-- --> <a href="https://www.gatsbyjs.com" style="color:#667eea">Gatsby</a></div><div class="Footer-module--socialLinks--b0fcb"><a href="https://www.linkedin.com/in/agrawal-sumit/" target="_blank" rel="noopener noreferrer" class="Footer-module--socialLink--a09aa"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="Footer-module--socialIcon--86785" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>LinkedIn</a><a href="https://github.com/tech-sumit" target="_blank" rel="noopener noreferrer" class="Footer-module--socialLink--a09aa"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="Footer-module--socialIcon--86785" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>GitHub</a><a href="https://www.instagram.com/mr.sumitagrawal/" target="_blank" rel="noopener noreferrer" class="Footer-module--socialLink--a09aa"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="Footer-module--socialIcon--86785" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg>Instagram</a></div></div></footer></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;
104border:0" aria-live="assertive" aria-atomic="true"></div></div>
104<script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/blog/";/*]]>*/</script>
104<!-- slice-start id="_gatsby-scripts-1" -->
105          
105<script
106            id="gatsby-chunk-mapping"
107          >
108            window.___chunkMapping="{\"app\":[\"/app-6b8753be900a57136fe9.js\"],\"component---src-pages-404-js\":[\"/component---src-pages-404-js-0f08472e044fa5bc3615.js\"],\"component---src-pages-about-js\":[\"/component---src-pages-about-js-be9cbbce01fcd9374102.js\"],\"component---src-pages-blog-js\":[\"/component---src-pages-blog-js-71e0ad7bf70f1d348bcb.js\"],\"component---src-pages-experience-js\":[\"/component---src-pages-experience-js-1547ff6031205cf2a879.js\"],\"component---src-pages-index-js\":[\"/component---src-pages-index-js-44719e4e034224cd8649.js\"],\"component---src-pages-projects-js\":[\"/component---src-pages-projects-js-3d052c92ad1a184ba575.js\"],\"component---src-pages-skills-js\":[\"/component---src-pages-skills-js-d433d64076314f823804.js\"],\"component---src-templates-page-js\":[\"/component---src-templates-page-js-6e4a9186d53076ef4f2b.js\"],\"component---src-templates-post-js\":[\"/component---src-templates-post-js-e9d7e3af50793ebb9ab1.js\"]}";
109          </script>
109
110        
110<script>window.___webpackCompilationHash="485c6246b932a5988493";</script>
110<script src="/webpack-runtime-7f6c4e188f8016eecc67.js" async></script>
110<script src="/framework-3c61cbdf9424358d3a11.js" async></script>
110<script src="/app-6b8753be900a57136fe9.js" async></script>
110<!-- slice-end id="_gatsby-scripts-1" --></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.