<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sumit Mishra</title>
    <description>The latest articles on DEV Community by Sumit Mishra (@sumit_mishra_cb22d5be5f02).</description>
    <link>https://dev.to/sumit_mishra_cb22d5be5f02</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4034905%2Fa233fb4c-8e89-45e1-a6a2-4634b86d5366.jpg</url>
      <title>DEV Community: Sumit Mishra</title>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumit_mishra_cb22d5be5f02"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Sun, 09 Aug 2026 17:54:13 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/-2hjf</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/-2hjf</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g" class="crayons-story__hidden-navigation-link"&gt;समोसा — Pure CSS Comfort Food in an Indian Kitchen&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Frontend Challenge CSS Art Submission 🍲🥧&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/sumit_mishra_cb22d5be5f02" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4034905%2Fa233fb4c-8e89-45e1-a6a2-4634b86d5366.jpg" alt="sumit_mishra_cb22d5be5f02 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/sumit_mishra_cb22d5be5f02" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Sumit Mishra
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Sumit Mishra
                
              
              &lt;div id="story-author-preview-content-4287966" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/sumit_mishra_cb22d5be5f02" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4034905%2Fa233fb4c-8e89-45e1-a6a2-4634b86d5366.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Sumit Mishra&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g" id="article-link-4287966"&gt;
          समोसा — Pure CSS Comfort Food in an Indian Kitchen
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/frontendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;frontendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/css"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;css&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;8&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>From Infinite Slop to the Digital Casino: How AI Turned Social Media Into a Game of Chance</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Sun, 09 Aug 2026 17:48:05 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/from-infinite-slop-to-the-digital-casino-how-ai-turned-social-media-into-a-game-of-chance-1pbl</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/from-infinite-slop-to-the-digital-casino-how-ai-turned-social-media-into-a-game-of-chance-1pbl</guid>
      <description>&lt;p&gt;We have all seen them. Bizarre, hyper-glossy images of "Shrimp Jesus," uncanny hyper-realistic videos of historical figures doing things that never happened, and a never-ending river of low-effort text and video.&lt;/p&gt;

&lt;p&gt;Generative AI has successfully democratized creation, but in doing so, it has opened the floodgates to mass-produced digital pollution. Social media is no longer a town square or a network for human connection; it has morphed into a high-stakes slot machine.&lt;/p&gt;

&lt;p&gt;This post explores how AI-generated content created a hyper-saturated content flood, why a lack of differentiation fuels the rise of automated media, and why scrolling today feels less like reading and more like pulling a casino lever that threatens to paralyze our minds.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Standardization Trap: Why AI Rides the Wave So Easily
&lt;/h2&gt;

&lt;p&gt;The rapid rise of AI-generated content is not just a technological triumph; it is a symptom of a systemic flaw in how we have built the internet. For years, content creation was heavily optimized for search engine optimization (SEO) and platform engagement algorithms.&lt;/p&gt;

&lt;p&gt;Creators, marketers, and writers trained themselves to write with the exact same hooks, the same predictable pacing, and the same homogenized structures.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Commoditization of Output:&lt;/strong&gt; Because human output had already drifted toward a uniform, formulaic average, it was remarkably easy for AI models to learn, mimic, and ultimately replace it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Missing Differentiator:&lt;/strong&gt; Most content lacked any real &lt;strong&gt;differentiation factor&lt;/strong&gt;—no unique worldview, no specific friction, and no genuine lived experience. When content becomes entirely interchangeable, it is completely commoditized. In a digital economy, if something can be easily commoditized, an algorithm will eventually automate it to zero cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When 99% of feeds consist of identical commentary, recycled listicles, and visually generic synthetic media, volume becomes the only metric that matters. AI wins that race every single time.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Death of Scarcity: The AI "Slop" Flood
&lt;/h2&gt;

&lt;p&gt;For the entire history of the internet, content production had a natural bottleneck: &lt;strong&gt;human time&lt;/strong&gt;. Writing an article, editing a video, or rendering an animation required hours of labor, thought, and skill.&lt;/p&gt;

&lt;p&gt;Generative AI shattered that bottleneck overnight.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Cost Scaling:&lt;/strong&gt; Anyone with an internet connection can now prompt an AI to generate hundreds of articles, dozens of short-form videos, or thousands of images in minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Economics of Volume:&lt;/strong&gt; Content farms and individual creators realized that even if a piece of AI-generated content has a low engagement rate, mass-producing it at zero marginal cost yields a net profit through ad-revenue-sharing programs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a digital ecosystem drowning in what many call "AI slop". Feeds are saturated with redundant, hollow media designed not to communicate an idea, but to farm metrics.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Content Creation Treadmill
&lt;/h2&gt;

&lt;p&gt;For human creators, this flood of AI content has turned everyday publishing into an exhausting treadmill. Because algorithms favor frequency and consistency, creators are forced to compete with machines that never sleep.&lt;/p&gt;

&lt;p&gt;When a human-made video has to fight for attention against thousands of AI-generated variations posted every second, the rules of visibility break down. To survive, creators feel pressured to adopt AI tools themselves, speeding up the treadmill even further. It is a classic race to the bottom: more content is produced, yet the average quality and meaningful signal drop drastically.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Social Media as a Slot Machine
&lt;/h2&gt;

&lt;p&gt;This brings us to the psychological core of modern feeds: &lt;strong&gt;Variable Ratio Reinforcement&lt;/strong&gt;. This is the exact mechanism that keeps people playing slot machines in casinos.&lt;/p&gt;

&lt;p&gt;In a traditional system, input equals output (e.g., work a shift, get paid a wage). But social media algorithms run on pure unpredictability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You post a piece of content (pull the lever).&lt;/li&gt;
&lt;li&gt;Most of the time, it gets zero traction (the machine takes your stake).&lt;/li&gt;
&lt;li&gt;Every once in a while, the algorithm blesses it, and you experience a massive spike of algorithmic dopamine—millions of views, thousands of followers (the jackpot).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI has accelerated this casino dynamic for both sides of the screen. For creators, the odds of hitting the viral lottery are increasingly governed by opaque algorithmic whims, turning content creation into a digital gamble.&lt;/p&gt;

&lt;p&gt;For consumers, the infinite, unpredictable scroll acts as a psychological trap. You pull down to refresh (pull the lever), never knowing if the next post will be boring text or a deeply engaging piece of media. This intermittent reward schedule wires the human brain to keep scrolling, searching for that next hit of novelty amidst the sea of slop.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The Real Threat: Algorithms That Paralyze Our Minds
&lt;/h2&gt;

&lt;p&gt;We spent decades watching science fiction warn us about physical, Terminator-style robots overtaking humanity, completely missing the silent invasion happening right inside our screens.&lt;/p&gt;

&lt;p&gt;Algorithms do not need to conquer us with physical force because they have learned how to bypass our cognitive defenses entirely. They operate like a neurological software patch, exploiting the deepest vulnerabilities of human psychology:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hijacking Dopamine Pathways:&lt;/strong&gt; By feeding our brains an unpredictable stream of outrage, novelty, and validation, algorithms rewire our attention spans. They turn us into passive consumers who struggle to sit with silence, deep thought, or long-form focus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Paralysis of Choice and Noise:&lt;/strong&gt; When you flood the mind with an endless sea of low-differentiating, synthetic content, cognitive overload sets in. You are constantly processing information, but because most of it is empty noise, your critical thinking capabilities become paralyzed. You are mentally exhausted without having actually learned or experienced anything of substance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outsourcing Agency:&lt;/strong&gt; The scariest part of algorithmic paralysis is how seamlessly it replaces our own internal decision-making. What to watch, what to buy, what to feel outraged about, and what to think—these are increasingly queued up for us by a recommendation engine designed to maximize engagement rather than human well-being.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Conclusion: Rewiring Our Minds and Platforms
&lt;/h2&gt;

&lt;p&gt;Moving past the era of automated digital pollution requires more than just venting frustration or blindly hating AI-generated tools. The solution demands a fundamental shift in our collective psychology. Instead of passively consuming endless feeds out of habit, we need to treat online media with intentionality—reserving our attention strictly for dynamic facts, real-world developments, and genuine human insights rather than hollow volume.&lt;/p&gt;

&lt;p&gt;At the same time, the burden cannot fall solely on the consumer. Platforms must step up by implementing strict structural benchmarks and basic quality checks to filter out uncurated, mass-produced noise. Until platforms are forced to establish quality floors that reward substance over sheer output, the digital casino will keep spinning.&lt;/p&gt;

&lt;p&gt;Protecting ourselves from this cognitive paralysis means building intentional mental firewalls, treating our attention as a finite, non-renewable resource, and fiercely guarding the quiet spaces where real, independent thought actually happens.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built a Noodle Shop Landing Page That Throws Food at Your Screen 🍜</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:26:08 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/i-built-a-noodle-shop-landing-page-that-throws-food-at-your-screen-2kik</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/i-built-a-noodle-shop-landing-page-that-throws-food-at-your-screen-2kik</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, Perfect Landing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://tastynoodles.vercel.app" rel="noopener noreferrer"&gt;SLURP! — Tastiest Noodles on the Planet&lt;/a&gt;&lt;/strong&gt;, a single-page landing page for an imaginary noodle shop. The comfort food theme is &lt;strong&gt;ramen and noodle bowls&lt;/strong&gt; — warm, slurpy, a little chaotic — and I leaned into that with copy, color, and interactions that feel cozy &lt;em&gt;and&lt;/em&gt; playful.&lt;/p&gt;

&lt;p&gt;The hook: Chef Marco is so confident in his noodles that he literally throws a bowl at your screen. The hero CTA is &lt;strong&gt;"TRY AND CATCH THIS! 🍜"&lt;/strong&gt; — miss the catch, get roasted, then explore the rest of the shop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9n91ux3ku2nuy6ygatwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9n91ux3ku2nuy6ygatwg.png" alt="Hero splash overlay — SVG/CSS noodle splatter" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's on the page:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Noodle Splash Hero&lt;/strong&gt; — full-screen SVG + CSS animation (sauce smears, flying noodle clusters, garnishes, a frosted-glass "SPLAAAT!" modal). Each replay seeds random extra strands in JavaScript so the splatter feels slightly different every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Noodle Vault&lt;/strong&gt; — six signature bowls in a CollectUI-inspired card grid (Dragon Breath Chili Oil, Midnight Tonkotsu, Garlic Butter Dan Dan, Bombay Street Manchow, Golden Curry Udon, Peanut Crunch Yakisoba) with category filter chips and wavy noodle-strand SVG borders generated at runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Your Bowl&lt;/strong&gt; — live CSS plate preview (broth color, thick/thin/broth-only noodles, six toppings). No image swaps — just custom properties, positioned elements, and steam keyframes. Hit &lt;strong&gt;"Lock In My Plate"&lt;/strong&gt;, then &lt;strong&gt;"Buy This Bowl"&lt;/strong&gt; — it drops into the cart with a generated name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Galactic Slurp&lt;/strong&gt; — story section with a Three.js spinning globe, alien rider, and twinkling stars (static fallback for &lt;code&gt;prefers-reduced-motion&lt;/code&gt; and WebGL failures).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pan India Store Finder&lt;/strong&gt; — 15 kitchens across 12 cities, searchable by city, area, or pincode, with Google Maps directions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slurp Squad&lt;/strong&gt; — eight fake testimonials from regulars who also failed to catch the noodles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social Feed Preview&lt;/strong&gt; — Reels/Stories/TikTok-style cards using the same self-hosted bowl photos (platform buttons are visual-only demos).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gift a Bowl&lt;/strong&gt; — send-a-bowl flow with searchable delivery-location and preset-message pickers, live gift card preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slurp Support&lt;/strong&gt; — contact channel cards (phone, WhatsApp, email, order help), seven-item FAQ accordion with peacock show-more, quick links to stores/gift/checkout, wired into desktop nav.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop section nav&lt;/strong&gt; — frosted-glass bar, pill-shaped link track with grouped dividers, orange-gradient active states, and a scroll-progress indicator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CollectUI Checkout Flow&lt;/strong&gt; — Alpine.js cart with sticky bar, mobile bottom sheet, and a full client-side order flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; one &lt;code&gt;index.html&lt;/code&gt; file — HTML, Tailwind CSS (CDN), Alpine.js 3.14, Three.js 0.172, vanilla JS, Lucide icons, Chewy font. No build step. All images self-hosted in &lt;code&gt;/assets&lt;/code&gt;. MIT licensed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/Sumit884-byte/tasty_noodles" rel="noopener noreferrer"&gt;github.com/Sumit884-byte/tasty_noodles&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live site:&lt;/strong&gt; &lt;a href="https://tastynoodles.vercel.app" rel="noopener noreferrer"&gt;tastynoodles.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;TRY AND CATCH THIS!&lt;/strong&gt; on the hero — that's the centerpiece interaction. Append &lt;code&gt;?splash&lt;/code&gt; to the URL if you want to land directly in the splatter overlay.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftc10kp7e6l4x7fc3skeq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftc10kp7e6l4x7fc3skeq.png" alt="Desktop nav — frosted pill track with scroll-spy" width="796" height="42"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scroll demo&lt;/strong&gt; — full page top to bottom, every section (~57s):&lt;/p&gt;


  &lt;a href="https://raw.githubusercontent.com/Sumit884-byte/tasty_noodles/main/assets/blog-scroll-demo.mp4" rel="noopener noreferrer"&gt;Watch scroll demo (MP4)&lt;/a&gt;


&lt;h3&gt;
  
  
  Interaction tour (with voiceover)
&lt;/h3&gt;

&lt;p&gt;I recorded a &lt;strong&gt;~111s desktop walkthrough&lt;/strong&gt; (111.1s) — narrated clicks through the main Alpine.js interactions: hero splash, nav scroll-spy, peacock show-more, bowl builder, gift pickers, FAQ accordion, and checkout.&lt;/p&gt;


  &lt;a href="https://raw.githubusercontent.com/Sumit884-byte/tasty_noodles/main/assets/blog/interaction-tour.mp4" rel="noopener noreferrer"&gt;Watch interaction tour (MP4)&lt;/a&gt;


&lt;p&gt;&lt;strong&gt;Interactions demonstrated:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hero splash&lt;/strong&gt; — &lt;code&gt;TRY AND CATCH THIS!&lt;/code&gt; triggers the SVG/CSS splatter overlay; dismiss with &lt;em&gt;Wipe Screen &amp;amp; Place Order&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop nav pills&lt;/strong&gt; — frosted pill track with scroll-spy active states&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peacock show-more&lt;/strong&gt; — menu vault expands from 3 → 6 bowls in place&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Your Bowl&lt;/strong&gt; — broth/noodle/topping chips → Lock In My Plate → Buy This Bowl (cart bump)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gift pickers&lt;/strong&gt; — searchable delivery-location and preset-message dropdowns with live card preview&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support FAQ&lt;/strong&gt; — accordion expand + peacock show-more for hidden questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkout&lt;/strong&gt; — cart summary after items are added&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; (hero through checkout — current layout):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7o5q35x5wz2aq21pj552.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7o5q35x5wz2aq21pj552.jpg" alt="Hero — noodle splash landing" width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fok0rvrlgd6ex285le3fw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fok0rvrlgd6ex285le3fw.jpg" alt="The Noodle Vault — menu cards" width="800" height="829"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzunduj981vdogq42k8ut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzunduj981vdogq42k8ut.png" alt="Build Your Bowl — live CSS plate preview" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyr9n4v68ddo7605j9cy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyr9n4v68ddo7605j9cy2.png" alt="Galactic Slurp — Three.js globe story" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpa1b0yduewygw5alolbx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpa1b0yduewygw5alolbx.png" alt="Pan India Store Finder" width="800" height="841"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqryc6fit95fj23byf2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqryc6fit95fj23byf2z.png" alt="Slurp Squad — testimonials" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F87ajwuus9bd2s1q6nrps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F87ajwuus9bd2s1q6nrps.png" alt="Social Feed Preview" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faeyg4z0f49gw67yp4jy7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faeyg4z0f49gw67yp4jy7.png" alt="Gift a Bowl" width="800" height="733"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhbh4sp4l2elqqejxmxkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhbh4sp4l2elqqejxmxkg.png" alt="Slurp Support — contact and FAQ" width="800" height="686"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4pe8j5xhf8n6jwg6gny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4pe8j5xhf8n6jwg6gny.png" alt="CollectUI Checkout Flow" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🍜 Live demo: &lt;a href="https://tastynoodles.vercel.app" rel="noopener noreferrer"&gt;tastynoodles.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 Source: &lt;a href="https://github.com/Sumit884-byte/tasty_noodles" rel="noopener noreferrer"&gt;github.com/Sumit884-byte/tasty_noodles&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why noodles?
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;DEV Frontend Challenge&lt;/a&gt; prompt was comfort food — not "a nice restaurant site," but something that makes you hungry just thinking about it. Noodles felt right: warm broth, slurping sounds, late-night cravings. I wanted the page to feel like a &lt;strong&gt;brand&lt;/strong&gt;, not a template — chunky typography, an amber/orange/stone palette, and interactions that reward curiosity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Process
&lt;/h3&gt;

&lt;p&gt;I started with the splash hero because it set the tone. Pure SVG + CSS — no canvas, no video, no Lottie. &lt;code&gt;stroke-dashoffset&lt;/code&gt; for smears and strands, staggered keyframes for clusters and garnishes, JavaScript to seed random extra strands on each replay.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9rrw35nviwys23uzrxfm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9rrw35nviwys23uzrxfm.png" alt="Build Your Bowl — broth, noodles, toppings, and live plate preview" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there I built outward: menu cards with runtime-generated wavy SVG borders, the CSS-only bowl builder (my favorite section technically — a well-structured DOM + custom properties replaced a lot of image-swap logic), then the Three.js globe with performance guardrails (IntersectionObserver to pause off-screen, &lt;code&gt;visibilitychange&lt;/code&gt; for hidden tabs, adaptive geometry, &lt;code&gt;pixelRatio&lt;/code&gt; cap, static fallback for reduced motion).&lt;/p&gt;

&lt;p&gt;Alpine.js became the app's brain — one &lt;code&gt;slurpApp()&lt;/code&gt; component handles cart, custom plate builder, store locator, menu filtering, splash overlay, mobile nav, gift flow, support FAQ, and checkout. I baked accessibility in from the start: skip link, splash dialog with focus management, &lt;code&gt;aria-pressed&lt;/code&gt; on builder chips, &lt;code&gt;prefers-reduced-motion&lt;/code&gt; disabling splash/globe/steam animations, semantic landmarks, lazy-loaded images with explicit dimensions.&lt;/p&gt;

&lt;p&gt;Later passes added &lt;strong&gt;Slurp Support&lt;/strong&gt; — contact cards, accordion FAQ, peacock show-more, quick links — and tightened the &lt;strong&gt;Gift a Bowl&lt;/strong&gt; pickers. Nested &lt;code&gt;@click.outside&lt;/code&gt; handlers were closing delivery-location and preset-message dropdowns before you could pick an option; scoping each picker (and &lt;code&gt;@click.stop&lt;/code&gt; on the search inputs) fixed it, and a clearer &lt;code&gt;giftPresetItem&lt;/code&gt; getter made the preset dropdown label behave.&lt;/p&gt;

&lt;p&gt;The desktop upper nav got a full polish pass: frosted-glass bar, pill-shaped link track with grouped dividers, orange-gradient active states, and a scroll-progress bar. That redesign surfaced an Alpine gotcha — &lt;code&gt;x-for&lt;/code&gt; with multiple root nodes (divider span + link) only rendered the dividers. Wrapping each iteration in a single &lt;code&gt;.site-nav__item&lt;/code&gt; fixed it, along with contrast, hover, and overflow tweaks at the 1024px breakpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  How responsivity is designed
&lt;/h3&gt;

&lt;p&gt;Responsivity on SLURP! is not a bolted-on &lt;code&gt;@media&lt;/code&gt; pass at the end — I designed it into navigation, layout grids, scroll behavior, and motion from the start. The page uses Tailwind's default breakpoints (&lt;code&gt;sm&lt;/code&gt; 640px, &lt;code&gt;md&lt;/code&gt; 768px, &lt;code&gt;lg&lt;/code&gt; 1024px, &lt;code&gt;xl&lt;/code&gt; 1280px), but the &lt;strong&gt;primary split is &lt;code&gt;lg&lt;/code&gt; (1024px)&lt;/strong&gt;: below that you're in touch-first mode; above it you're in desktop mode.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9x38x2pbnd3ogrgqjuun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9x38x2pbnd3ogrgqjuun.png" alt="Mobile layout — bottom tab bar and frosted header (390×844)" width="780" height="1688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Navigation: bottom tabs vs pill track
&lt;/h4&gt;

&lt;p&gt;On &lt;strong&gt;mobile and tablet&lt;/strong&gt; (&lt;code&gt;max-width: 1023px&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The frosted top bar keeps logo, locale picker, and a hamburger drawer (full section list + locale chips).&lt;/li&gt;
&lt;li&gt;Section navigation moves to a &lt;strong&gt;fixed bottom tab bar&lt;/strong&gt; — five icons: Dare, Menu, Build, Gift, Cart — with a wavy noodle SVG divider and &lt;code&gt;env(safe-area-inset-bottom)&lt;/code&gt; padding for notched phones.&lt;/li&gt;
&lt;li&gt;The floating checkout bar sits &lt;strong&gt;above&lt;/strong&gt; the tab bar (&lt;code&gt;bottom: calc(4.875rem + safe-area)&lt;/code&gt;), never behind it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;body&lt;/code&gt; gets bottom padding so content isn't hidden under the chrome; when the cart bar is visible, padding doubles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On &lt;strong&gt;desktop&lt;/strong&gt; (&lt;code&gt;lg:&lt;/code&gt; / &lt;code&gt;min-width: 1024px&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hamburger and bottom tab bar hide (&lt;code&gt;lg:hidden&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;pill-shaped nav track&lt;/strong&gt; appears in the header (&lt;code&gt;hidden lg:block&lt;/code&gt;) — frosted inner track, grouped dividers between section clusters, orange-gradient active link states, and a scroll-progress bar.&lt;/li&gt;
&lt;li&gt;The track &lt;strong&gt;scrolls horizontally&lt;/strong&gt; when the viewport is tight (1024–1279px): link font-size and padding compress, checkout button becomes icon-only, and locale picker label hides until &lt;code&gt;xl&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Checkout moves into the header; the "Checkout" label appears at &lt;code&gt;xl&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scroll offsets are wired through CSS variables on &lt;code&gt;:root&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;--site-header-offset&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="c"&gt;/* mobile */&lt;/span&gt;
&lt;span class="nt"&gt;--site-bottom-offset&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;875&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* mobile tab bar */&lt;/span&gt;
&lt;span class="c"&gt;/* at 1024px+: header 5rem, bottom 0 */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;scroll-padding-top&lt;/code&gt; and &lt;code&gt;.section-scroll-target { scroll-margin-top }&lt;/code&gt; keep anchor jumps from landing under fixed chrome.&lt;/p&gt;

&lt;h4&gt;
  
  
  Layout grids and section patterns
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;Mobile&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;md&lt;/code&gt; (768px)&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;lg&lt;/code&gt; (1024px)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Menu cards&lt;/td&gt;
&lt;td&gt;1 col&lt;/td&gt;
&lt;td&gt;2 col&lt;/td&gt;
&lt;td&gt;3 col&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gift a Bowl&lt;/td&gt;
&lt;td&gt;stacked&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;2-col grid + sticky preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Store results&lt;/td&gt;
&lt;td&gt;1 col&lt;/td&gt;
&lt;td&gt;2 col&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social share cards&lt;/td&gt;
&lt;td&gt;1 col&lt;/td&gt;
&lt;td&gt;2 col (&lt;code&gt;sm&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;4 col&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build Your Bowl&lt;/td&gt;
&lt;td&gt;stacked&lt;/td&gt;
&lt;td&gt;2 col&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learn section&lt;/td&gt;
&lt;td&gt;horizontal step strip&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;sticky step list&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Gift layout:&lt;/strong&gt; &lt;code&gt;.gift-layout&lt;/code&gt; is a single-column grid on mobile; at &lt;code&gt;lg&lt;/code&gt; it becomes &lt;code&gt;grid-template-columns: 1.05fr 0.95fr&lt;/code&gt; with &lt;code&gt;.gift-preview-wrap { position: sticky; top: 6rem }&lt;/code&gt;. Form fields use &lt;code&gt;sm:grid-cols-2&lt;/code&gt; for To/From name pairs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Store finder:&lt;/strong&gt; search row stacks vertically until &lt;code&gt;sm&lt;/code&gt;, then row-aligns; decorative elephant SVGs are &lt;code&gt;display: none&lt;/code&gt; until &lt;code&gt;md&lt;/code&gt;. Store decor animations scale down or hide on small screens to reduce visual noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Menu cards:&lt;/strong&gt; CollectUI-style grid with horizontal-scrolling category filter pills (&lt;code&gt;menu-cat-scroll&lt;/code&gt;, scrollbar hidden). Cards use runtime wavy SVG borders via &lt;code&gt;attachNoodleFrame()&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Overflow and progressive disclosure
&lt;/h4&gt;

&lt;p&gt;Instead of infinite scroll, long lists use &lt;strong&gt;peacock show-more buttons&lt;/strong&gt; (&lt;code&gt;section-show-more-btn&lt;/code&gt;) with Alpine &lt;code&gt;visibleSlice()&lt;/code&gt; — initial limits of 3–4 items per section (menu, stores, reviews, spread, slurp-code, checkout, support FAQ). Tap expands in place; no route change, no pagination component.&lt;/p&gt;

&lt;p&gt;Other intentional overflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop nav track: &lt;code&gt;overflow-x: auto&lt;/code&gt; with edge fade masks.&lt;/li&gt;
&lt;li&gt;Learn step strip on tablet: horizontal scroll + &lt;code&gt;scroll-snap-type: x mandatory&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Category pills: &lt;code&gt;overflow-x-auto&lt;/code&gt; with hidden scrollbars.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Motion, cursors, and locale
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;prefers-reduced-motion: reduce&lt;/code&gt;&lt;/strong&gt; disables splash animations, globe spin, steam keyframes, store decoration animations, nav hover transforms, and chopstick card ornaments. JavaScript checks &lt;code&gt;matchMedia('(prefers-reduced-motion: reduce)')&lt;/code&gt; before confetti, splash replay, and Three.js init — static fallback for the globe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chopstick theme&lt;/strong&gt; (&lt;code&gt;body.chopstick-theme&lt;/code&gt;): custom noodle cursors apply only under &lt;code&gt;@media (pointer: fine)&lt;/code&gt; — touch users keep the system cursor. Section-scoped accent colors via &lt;code&gt;body[data-section="…"] { --chopstick-accent }&lt;/code&gt;. Active nav states show crossed-chopstick icons (inline on drawer links, overlay on desktop pills, above icon on mobile bottom nav).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Locale picker:&lt;/strong&gt; compact toggle in the header; full locale chip row in the mobile drawer. A floating locale-suggestion banner uses &lt;code&gt;max-width: calc(100vw - 1.5rem)&lt;/code&gt; and repositions at &lt;code&gt;md&lt;/code&gt;. Between 1024–1279px the picker label hides to save header space.&lt;/p&gt;

&lt;h4&gt;
  
  
  Checkout UX across breakpoints
&lt;/h4&gt;

&lt;p&gt;The CollectUI-style flow uses a &lt;strong&gt;floating checkout bar&lt;/strong&gt; when items are in cart — centered, max-width 24rem, with optional inline qty stepper for single-item carts. On mobile it floats above the bottom nav; on desktop it sits at &lt;code&gt;bottom: 1rem&lt;/code&gt; with no body padding conflict. The checkout section itself is a centered &lt;code&gt;max-w-2xl&lt;/code&gt; card with peacock show-more for long cart lists.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'm proud of
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The splash animation — elaborate, replayable, and still pure SVG/CSS&lt;/li&gt;
&lt;li&gt;The CSS bowl preview — instant, lightweight, infinitely recombinable&lt;/li&gt;
&lt;li&gt;Wavy SVG card borders via &lt;code&gt;attachNoodleFrame()&lt;/code&gt; — micro-detail that makes the UI feel designed&lt;/li&gt;
&lt;li&gt;Progressive enhancement for motion and WebGL — fun features that don't punish users who prefer reduced motion or lack WebGL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slurp Support&lt;/strong&gt; — contact cards and FAQ that feel on-brand, not a generic help-desk widget pasted onto a landing page&lt;/li&gt;
&lt;li&gt;The desktop nav — frosted glass, pill track, scroll progress, and a real Alpine &lt;code&gt;x-for&lt;/code&gt; debugging story&lt;/li&gt;
&lt;li&gt;Shipping everything in one file you can open locally without explaining npm&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Commit to the joke, but ship real craft.&lt;/strong&gt; The copy is silly; underneath there's form validation, accessible modals, performance-conscious 3D, and responsive layouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS can do more than I thought.&lt;/strong&gt; The bowl preview taught me that custom properties + keyframes can replace a lot of asset-heavy UI logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraints spark creativity.&lt;/strong&gt; "Comfort food" pushed me toward warmth and interactivity instead of a generic SaaS layout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single-file projects are underrated.&lt;/strong&gt; For a challenge submission or portfolio piece, one &lt;code&gt;index.html&lt;/code&gt; felt like a superpower.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next?
&lt;/h3&gt;

&lt;p&gt;This was a challenge submission, not a production restaurant platform — but there's room to grow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extract the splash animation into a reusable Web Component&lt;/li&gt;
&lt;li&gt;Add sound effects (with mute toggle)&lt;/li&gt;
&lt;li&gt;Wire up real social links if SLURP! ever becomes a real brand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;India wireframe map with store pins&lt;/strong&gt; — a sketch-style outline of the country with clickable markers for each kitchen, tied into the existing store finder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peacock feather expansion on show-more&lt;/strong&gt; — peacock buttons already reveal extra menu cards, testimonials, and support FAQs; next up is a feather-fan unfold animation on click, so expanding a section feels like the bird opening its tail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For now, I'm happy with what I shipped: a page that makes people smile, teaches a few frontend tricks, and proves that comfort food deserves better than a stock photo and an "Order Now" button.&lt;/p&gt;

&lt;p&gt;If you're participating in the challenge — or you've built something fun for it already — drop a link in the comments. I want to see your comfort food takes.&lt;/p&gt;

&lt;p&gt;And if you try to catch the noodles... good luck. Chef Marco doesn't believe in you. 🍜&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with too much chili oil and not enough sleep. MIT licensed — see &lt;a href="https://github.com/Sumit884-byte/tasty_noodles/blob/main/LICENSE" rel="noopener noreferrer"&gt;LICENSE&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>समोसा — Pure CSS Comfort Food in an Indian Kitchen</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Sat, 01 Aug 2026 14:20:12 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/smosaa-pure-css-comfort-food-in-an-indian-kitchen-2j5g</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, CSS Art&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For me, comfort food means samosas — crispy, golden, still warm from the fryer, with mint and tamarind chutney on the side. Rainy evenings, chai breaks, street stalls, family gatherings: a samosa shows up in all of them.&lt;/p&gt;

&lt;p&gt;This project recreates that feeling with &lt;strong&gt;no images, no SVG, and no JavaScript&lt;/strong&gt; — only HTML and CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Try it live on CodePen — kitchen scene, cooking steps, and the full animation loop:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/sumit_mishra_cb22d5be5f02/embed/jEyXMLo?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodePen:&lt;/strong&gt; &lt;a href="https://codepen.io/sumit_mishra_cb22d5be5f02/pen/jEyXMLo" rel="noopener noreferrer"&gt;https://codepen.io/sumit_mishra_cb22d5be5f02/pen/jEyXMLo&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://css-samosa-kitchen.vercel.app" rel="noopener noreferrer"&gt;https://css-samosa-kitchen.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;index.html&lt;/code&gt; locally, or deploy the folder to any static host.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you're looking at
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Panel 1 — Kitchen scene
&lt;/h3&gt;

&lt;p&gt;A flat illustration of a home kitchen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wall &amp;amp; backsplash&lt;/strong&gt; — cream plaster, subway tiles, red/green border bands, warm window light&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Props&lt;/strong&gt; — matkas on the wall, spice jars, masala dabba, hanging ladle, chakla-belan, chai glass, folded napkin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The plate&lt;/strong&gt; — oval rim, inner ring, shadow, lemon wedge, coriander, pickle slice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three samosas&lt;/strong&gt; — &lt;code&gt;clip-path&lt;/code&gt; triangles with fold lines, crimped bases, oil blisters, side shading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chutney&lt;/strong&gt; — semicircle sauce in katori bowls on tiny saucer plates (mint green + tamarind red)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Details&lt;/strong&gt; — rising steam, crumbs, oil spots, diagram-style labels, &lt;strong&gt;rain on the kitchen window&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitten samosa&lt;/strong&gt; — one samosa with a potato filling cross-section, as if someone already took a bite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A 7-second CSS loop brings samosas and chutney onto the plate with staggered entrance keyframes, a &lt;strong&gt;dip-into-chutney-and-bite&lt;/strong&gt; beat on the left samosa, screen-shatter effects, and steam on a shared timeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Panel 2 — Cooking steps
&lt;/h3&gt;

&lt;p&gt;Scroll down for a &lt;strong&gt;5-step cooking illustration&lt;/strong&gt; (knead → fill → fold → fry → serve) — also built entirely in CSS with a 25-second step cycle. The final &lt;strong&gt;serve&lt;/strong&gt; frame mirrors Panel 1: same oval plate, katori chutney bowls, and golden samosa tones.&lt;/p&gt;

&lt;p&gt;The title uses &lt;strong&gt;Yatra One&lt;/strong&gt; for Devanagari (&lt;code&gt;समोसा&lt;/code&gt;) with an English subtitle — the only external assets are Google Fonts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;I grew up treating samosas as the default answer to "what should we eat?" They are street food and home food at once. I wanted the page to feel like a cross-section of an Indian kitchen — not a dark 3D render, but the kind of warm, labeled illustration you'd see in a cookbook margin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical highlights
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Samosa shape
&lt;/h3&gt;

&lt;p&gt;Each samosa uses &lt;code&gt;clip-path: polygon()&lt;/code&gt; for the triangle, layered linear and radial gradients for the fried crust, a vertical fold line, and a repeating gradient crimp at the base.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chutney bowls
&lt;/h3&gt;

&lt;p&gt;Chutney is a &lt;strong&gt;semicircle fill&lt;/strong&gt; inside a CSS katori (open bowl curve), sitting on a small oval saucer — so it reads as sauce in a dish, not a flat green/red dot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kitchen background
&lt;/h3&gt;

&lt;p&gt;Every prop is divs and pseudo-elements: window panes on a grid, shelf boards, jar lids, a brass-toned ladle, wood-grain table stripes. No icon fonts, no PNGs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Animation
&lt;/h3&gt;

&lt;p&gt;Entrance keyframes, dip-and-bite motion, screen shake, crack lines, and glass-shatter shards are pure CSS. &lt;code&gt;prefers-reduced-motion&lt;/code&gt; is respected throughout.&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey / lessons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Placement matters.&lt;/strong&gt; Chutney looked wrong until the bowls moved inside the plate container and sat at the correct inset — percentages relative to the plate, not the full viewport.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer order tricks you.&lt;/strong&gt; A white "bowl rim" div on top of the sauce looked like a lid; swapping to a border on the sauce fixed it instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reference helps.&lt;/strong&gt; A flat illustration reference pushed the scene from moody 3D toward a clearer, warmer kitchen diagram — which fit the comfort-food brief better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I'd do next: &lt;del&gt;rain streaks on the kitchen window&lt;/del&gt; ✓ added — overcast sky, falling streaks, and glass-pane sheen for the rainy-evening mood in the intro.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML + CSS only&lt;/li&gt;
&lt;li&gt;Google Fonts: Yatra One, Hind&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; MIT — use and remix freely.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags for DEV:&lt;/strong&gt; &lt;code&gt;#frontendchallenge&lt;/code&gt; &lt;code&gt;#devchallenge&lt;/code&gt; &lt;code&gt;#css&lt;/code&gt; &lt;code&gt;#cssart&lt;/code&gt;&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Modern Developer Playbook: Building, Shipping, and Scaling in Public</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Fri, 31 Jul 2026 06:05:53 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/the-modern-developer-playbook-building-shipping-and-scaling-in-public-5258</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/the-modern-developer-playbook-building-shipping-and-scaling-in-public-5258</guid>
      <description>&lt;h1&gt;
  
  
  The Modern Developer Playbook: Building, Shipping, and Scaling in Public
&lt;/h1&gt;

&lt;p&gt;In software engineering, traditional credentials like degrees, resume buzzwords, and isolated side projects no longer guarantee a direct path into high-impact roles. The developer ecosystem has shifted heavily toward &lt;strong&gt;proof of execution&lt;/strong&gt;: tangible evidence that you can build, deploy, optimize, and communicate real software under production constraints.&lt;/p&gt;

&lt;p&gt;Becoming an exceptional developer in today's landscape requires balancing technical depth, public visibility, system design, and execution discipline.&lt;/p&gt;

&lt;p&gt;Here is the complete blueprint for executing this strategy.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Proof of Execution: Build in Public and Focus on Impact
&lt;/h2&gt;

&lt;p&gt;Building software in isolation limits your feedback loops and hides your problem-solving process. Shifting toward public execution turns your work into an organic career magnet.&lt;/p&gt;

&lt;h3&gt;
  
  
  A. The One Gigantic Project Strategy
&lt;/h3&gt;

&lt;p&gt;Instead of scattering your energy across five small tutorial-level projects, &lt;strong&gt;build one massive, production-grade flagship product&lt;/strong&gt;. A single high-complexity system demonstrates real-world architecture, depth, and persistence far better than multiple shallow repositories.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developer Tooling:&lt;/strong&gt; End-to-end CLI platforms, automated release engines, or custom language parsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Pipelines:&lt;/strong&gt; OCR and document indexing pipelines, real-time analytics platforms, or high-throughput stream processors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialized Utilities:&lt;/strong&gt; Hybrid volatility engines, semantic search protocols, or enterprise API gateways.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. Document the Engineering Process
&lt;/h3&gt;

&lt;p&gt;Documenting your journey publicizes your technical decision-making and consistency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public Development Logs:&lt;/strong&gt; Share short weekly logs covering architecture choices, performance trade-offs, and technical roadblocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show Your Work:&lt;/strong&gt; Share visual demos, system diagrams, benchmarking results, or performance graphs to highlight execution quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent Post-Mortems:&lt;/strong&gt; Write down what broke during production deployments, why it failed, and how you fixed it.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. High-Trust Technical Blogging: Screenshots, Videos, and Code
&lt;/h2&gt;

&lt;p&gt;Abstract code snippets and textual claims are easy to fabricate; &lt;strong&gt;visual proof generates immediate trust&lt;/strong&gt;. Writing technical deep-dives paired with unedited UI screenshots, architecture diagrams, and brief terminal recordings proves your software operates in real runtime environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  A. The High-Trust Technical Post Architecture
&lt;/h3&gt;

&lt;p&gt;Every deep-dive article on your blog or platform should follow a clear structure to build credibility:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
|                        HIGH-TRUST TECHNICAL BLOG FORMAT                           |
+-----------------------------------------------------------------------------------+
|  1. THE PROBLEM        --&amp;gt; State the performance bottleneck, error, or system goal. |
|  2. VISUAL EVIDENCE    --&amp;gt; Provide runtime terminal logs or screen recordings.    |
|  3. SYSTEM ARCHITECTURE--&amp;gt; Embed clean diagrams (e.g., Excalidraw, Mermaid).      |
|  4. CODE &amp;amp; EXPLANATION --&amp;gt; Show precise, syntax-highlighted production code.      |
|  5. BENCHMARKS         --&amp;gt; Share before/after metrics (profiler graphs, latency). |
+-----------------------------------------------------------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  B. Visual Proof Assets
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Annotated Screenshots:&lt;/strong&gt; Use clean, uncropped UI screenshots with highlighted regions to demonstrate edge cases, memory profiles, or browser DEV tools network tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal &amp;amp; Interface Screen Recordings:&lt;/strong&gt; Embed 10–30 second GIFs or video loops showing your application in motion, CLI flags executing, or real-time streaming data handling live payloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Code Snippets:&lt;/strong&gt; Accompany visuals with runnable code blocks rather than static text, allowing readers to verify logic locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. The Distribution Framework: Amplifying Your Proof of Work
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Your distribution efforts must scale in direct proportion to your execution effort.&lt;/strong&gt; Building a world-class project in silence yields zero leverage. If you spend weeks engineering a system, spend equal energy distributing it across software communities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
|                            THE DISTRIBUTION FLYWHEEL                              |
+-----------------------------------------------------------------------------------+
|                                                                                   |
|  [ CORE BUILD ]  ---&amp;gt;  [ DEMO &amp;amp; VISUALS ]  ---&amp;gt;  [ MULTI-PLATFORM DISTRIBUTION ]  |
|  (Flagship App)        (Video/Screenshots)       (X, LinkedIn, Reddit, Hashnode)  |
|         ^                                                                   |     |
|         |                                                                   v     |
|         +------------------ [ FEEDBACK &amp;amp; TRACTION ] &amp;lt;-----------------------+     |
|                                                                                   |
+-----------------------------------------------------------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  A. Tailoring Content Across Platforms
&lt;/h3&gt;

&lt;p&gt;Different platforms require distinct storytelling angles for the same underlying piece of engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;X (Twitter):&lt;/strong&gt; Post short, visual-first updates. Focus on code snippets, UI polish, speed benchmarks, and quick terminal video recordings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; Share high-level engineering decisions, architectural trade-offs, project milestones, embedded blog posts, and career takeaways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reddit &amp;amp; Tech Communities:&lt;/strong&gt; Share technical write-ups in subreddits (e.g., &lt;code&gt;r/programming&lt;/code&gt;, &lt;code&gt;r/webdev&lt;/code&gt;, &lt;code&gt;r/Python&lt;/code&gt;) and platforms like Hacker News, Hashnode, or Dev.to. Focus on problem-solving, performance gains, screenshots of benchmarks, and asking for code reviews rather than self-promotion.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. Leverage Distribution for Flagship Projects
&lt;/h3&gt;

&lt;p&gt;Focusing on &lt;strong&gt;one major project&lt;/strong&gt; makes distribution exponentially easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You create a unified narrative around a single product over months rather than resetting your audience's attention with a new toy project every week.&lt;/li&gt;
&lt;li&gt;You can write deep-dive blog posts into individual sub-systems (e.g., "How I reduced database query latency by 40% in [Project Name]" featuring profiler screenshots).&lt;/li&gt;
&lt;li&gt;You build genuine brand equity and domain authority around one core subject.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Choosing Your Sub-Career Focus
&lt;/h2&gt;

&lt;p&gt;Spreading yourself across too many domains dilutes your expertise. Select a primary domain to focus your deep-work hours and tailor your portfolio.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Focus Area&lt;/th&gt;
&lt;th&gt;Core Focus Areas&lt;/th&gt;
&lt;th&gt;Key Output &amp;amp; Proof of Work&lt;/th&gt;
&lt;th&gt;Primary Tech Stack&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backend &amp;amp; Systems&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;API design, concurrency, database query optimization, caching, microservices, and system reliability.&lt;/td&gt;
&lt;td&gt;Fast REST/gRPC services, custom ORM tools, search engines, and real-time data pipelines.&lt;/td&gt;
&lt;td&gt;Python, Go, Node.js, PostgreSQL, Redis, Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend &amp;amp; UI/UX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Client-side performance, state management, render optimizations, component architecture, and accessibility.&lt;/td&gt;
&lt;td&gt;Polished web applications, UI component design systems, and responsive dashboards.&lt;/td&gt;
&lt;td&gt;TypeScript, React, Next.js, Tailwind CSS, shadcn/ui&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full-Stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;End-to-end product delivery, fast prototyping, integrating complex frontends with scalable APIs.&lt;/td&gt;
&lt;td&gt;Production SaaS applications, automated web portals, and feature-complete tools.&lt;/td&gt;
&lt;td&gt;Next.js, FastAPI/Node, PostgreSQL, Prisma/Drizzle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI / Data Engineering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector indexing, retrieval-augmented generation (RAG), model fine-tuning, and data processing.&lt;/td&gt;
&lt;td&gt;Custom semantic search engines, sentiment/volatility analyzers, and automated data pipelines.&lt;/td&gt;
&lt;td&gt;Python, PyTorch, LangChain, Qdrant/Pinecone, Pandas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Choose the path that aligns with the problems you enjoy solving daily.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The Open Source Advantage: Bounties, Grants, and Contributions
&lt;/h2&gt;

&lt;p&gt;Open source acts as a global codebase where you can work alongside experienced engineers.&lt;/p&gt;

&lt;h3&gt;
  
  
  A. Targeted Codebase Contributions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start by inspecting open-source tools you rely on daily.&lt;/li&gt;
&lt;li&gt;Review open pull requests to learn repository conventions, code style guidelines, and testing requirements before submitting code.&lt;/li&gt;
&lt;li&gt;Address issues labeled &lt;code&gt;good first issue&lt;/code&gt;, &lt;code&gt;help wanted&lt;/code&gt;, or work on improving documentation and automated tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. Grants and Bounties
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monetized Open Source:&lt;/strong&gt; Platforms like Algora, Gitcoin, and Immunefi offer financial bounties for resolving issues, building feature requests, or finding security vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosystem Grants:&lt;/strong&gt; Many open foundations and companies award non-dilutive grants to independent builders contributing to core open-source infrastructure or developer tools.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Strategic Problem Solving (DSA Pattern Recognition)
&lt;/h2&gt;

&lt;p&gt;Data Structures &amp;amp; Algorithms (DSA) remain a primary technical filter during engineering interviews. Treat DSA as &lt;strong&gt;pattern recognition&lt;/strong&gt; rather than rote memorization.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  +-----------------------------------+
                  |      MASTERING DSA PATTERNS       |
                  +-----------------------------------+
                                    |
          +-------------------------+-------------------------+
          |                                                   |
+-------------------+                               +-------------------+
|   CORE PATTERNS   |                               | LANGUAGE SELECTION|
+-------------------+                               +-------------------+
| • Two Pointers    |                               | Python: Ideal for |
| • Sliding Window  |                               | speed, clean      |
| • Prefix Sums     |                               | syntax, and built-|
| • Binary Search   |                               | in structures.    |
| • BFS / DFS       |                               +-------------------+
| • Dynamic Prog.   |                                         |
+-------------------+                                         |
          |                                                   |
          +-------------------------+-------------------------+
                                    |
                  +-----------------------------------+
                  |       STRUCTURED PROBLEM SETS     |
                  +-----------------------------------+
                  | Focus on 100-150 targeted problems |
                  | (e.g., NeetCode 150, Blind 75)    |
                  +-----------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Time Complexity Reference Guide
&lt;/h3&gt;

&lt;p&gt;Ensure you analyze the asymptotic complexity for every problem solved:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern / Algorithm&lt;/th&gt;
&lt;th&gt;Average Time Complexity&lt;/th&gt;
&lt;th&gt;Space Complexity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hash Table Lookup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;td&gt;O(N)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Binary Search&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(log N)&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Two Pointers / Sliding Window&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(N)&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tree/Graph Traversal (BFS/DFS)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(V + E)&lt;/td&gt;
&lt;td&gt;O(V)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sorting (MergeSort, QuickSort)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(N log N)&lt;/td&gt;
&lt;td&gt;O(N) or O(log N)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Programming (Grid/Knapsack)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;O(N × M)&lt;/td&gt;
&lt;td&gt;O(N × M)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Execution Strategy and Time Allocation
&lt;/h2&gt;

&lt;p&gt;To prevent burnout while balancing product development, distribution, DSA, and career opportunities, maintain a structured schedule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
|                            DAILY EXECUTION PIPELINE                               |
+----------------------------------------+------------------------------------------+
|         BLOCK 1: DSA &amp;amp; WARMUP          |        BLOCK 2: DEEP WORK &amp;amp; BUILDING     |
|              (60–90 Mins)              |               (2–3 Hours)                |
+----------------------------------------+------------------------------------------+
| • Solve 1-2 targeted pattern problems  | • Focus on the single flagship project   |
| • Focus on time/space complexity       | • Optimize performance and write tests   |
| • Practice explaining solutions aloud  | • Draft visual technical blog posts      |
+----------------------------------------+------------------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Action Plan
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define Your Domain:&lt;/strong&gt; Choose your primary technical stack (e.g., Full-Stack, Backend, AI Engineering).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit to One Flagship System:&lt;/strong&gt; Ditch small tutorial apps and focus on shipping a single high-impact product over 8–12 weeks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write High-Trust Technical Content:&lt;/strong&gt; Document system architecture with real screenshots, video clips, and profiler metrics in technical blogs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute the Distribution Ratio:&lt;/strong&gt; Match your build effort with cross-platform distribution on X, LinkedIn, Reddit, and specialized tech hubs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintain DSA Discipline:&lt;/strong&gt; Solve pattern-based problem sets for 60 minutes daily to keep algorithmic fluency sharp.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Arka: An agent that thinks like an human</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Sun, 26 Jul 2026 16:56:39 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/arka-an-agent-that-thinks-like-an-human-45mf</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/arka-an-agent-that-thinks-like-an-human-45mf</guid>
      <description>&lt;h1&gt;
  
  
  See Inside Your Agents: Arka + SigNoz for Track 01
&lt;/h1&gt;

&lt;p&gt;When a model returns 429, a shell step fails, or failover kicks in, you need to see &lt;em&gt;which&lt;/em&gt; step broke — not just that something failed. We built &lt;strong&gt;Arka + SigNoz&lt;/strong&gt; for the &lt;a href="https://www.wemakedevs.org/hackathons/signoz" rel="noopener noreferrer"&gt;Agents of SigNoz&lt;/a&gt; hackathon (Track 01 — AI &amp;amp; Agent Observability) to instrument the full agent lifecycle with OpenTelemetry and make every step visible in one trace waterfall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="End-to-end agent trace waterfall in SigNoz" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo video (~3 min):&lt;/strong&gt; &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/arka-signoz-hackathon-demo.mp4" rel="noopener noreferrer"&gt;arka-signoz-hackathon-demo.mp4&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Images:&lt;/strong&gt; PNGs live on the &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/tag/signoz-hackathon-media" rel="noopener noreferrer"&gt;signoz-hackathon-media release&lt;/a&gt;. If your editor (e.g. AWS Builder Center) does not render markdown images, paste the HTML blocks below or upload the PNGs from that release page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="Traces Explorer — arka agent waterfall" width="800" height="500"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Arka?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Arka&lt;/strong&gt; is an open-source AI agent for your terminal. You say what you want in plain English; Arka routes the request to the right local skill, runs it on your machine, and falls back across 24 LLM providers when a model is actually needed.&lt;/p&gt;

&lt;p&gt;Under the hood it is a Python CLI with a Fish-shell router, a multi-step &lt;strong&gt;goal loop&lt;/strong&gt;, 70+ bundled skills, MCP for Cursor and Claude, and security gates on by default — prompt-injection checks, risky-action prompts, and hard blocks on destructive shell patterns.&lt;/p&gt;

&lt;p&gt;Install in one line: &lt;code&gt;uv tool install "arka-agent[chat,observability]"&lt;/code&gt; · Docs: &lt;a href="https://arka-agent.mintlify.site" rel="noopener noreferrer"&gt;arka-agent.mintlify.site&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why we love building it
&lt;/h2&gt;

&lt;p&gt;We did not set out to build “another chat wrapper.” We wanted a &lt;strong&gt;real agent&lt;/strong&gt; we could trust in our own terminals every day — one that routes fast, fails gracefully, and stays local when it should.&lt;/p&gt;

&lt;p&gt;What keeps us shipping:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The router is the product.&lt;/strong&gt; 120+ symbolic rules handle most requests with zero LLM tokens. Watching “summarize README” hit a skill in ~1 ms instead of a 3-second model round-trip never gets old.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents are messy — and that is the fun part.&lt;/strong&gt; Routing, planning, tool calls, memory, failover, self-heal — every layer is a design problem. Arka is our sandbox to try ideas in production on our own repos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dogfooding forces honesty.&lt;/strong&gt; When Gemini 429s mid-goal or a shell step fails, we feel it immediately. That pain is why we instrumented every span and wired SigNoz — we wanted the same visibility we wish every agent framework shipped with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-first, extensible by design.&lt;/strong&gt; Skills are plugins (&lt;code&gt;skill.json&lt;/code&gt;), secrets stay in &lt;code&gt;~/.config/arka/&lt;/code&gt;, telemetry is opt-in. You own the stack; we just make the defaults sane.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building in the open.&lt;/strong&gt; Issues, routing mismatches, and hackathon demos like this one all land in the same repo. Shipping observability for Track 01 is part of making Arka something we are proud to hand to other developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that resonates, star the repo — it helps others find it: &lt;a href="https://github.com/Sumit884-byte/arka" rel="noopener noreferrer"&gt;github.com/Sumit884-byte/arka&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;AI agents are a black box. They chain LLM calls, invoke tools, hit vector DBs, and make decisions autonomously. When latency spikes, token costs explode, or an agent hallucinates in production, fragmented logs do not tell the end-to-end story.&lt;/p&gt;

&lt;p&gt;Track 01 asks you to &lt;strong&gt;trace, monitor, and debug AI-native systems&lt;/strong&gt;. That means one place to follow a request from routing → planning → LLM attempt → tool execution → recovery — with metrics and logs tied to the same trace IDs.&lt;/p&gt;




&lt;h2&gt;
  
  
  How we use SigNoz
&lt;/h2&gt;

&lt;p&gt;We do not run a separate observability sidecar. &lt;strong&gt;Arka instruments itself with OpenTelemetry and sends traces, metrics, and logs to SigNoz over OTLP HTTP.&lt;/strong&gt; SigNoz is where we deploy the stack, ingest telemetry, and debug the agent lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Deploy with Foundry
&lt;/h3&gt;

&lt;p&gt;SigNoz runs locally from &lt;a href="//../casting.yaml"&gt;&lt;code&gt;casting.yaml&lt;/code&gt;&lt;/a&gt; + &lt;a href="//../casting.yaml.lock"&gt;&lt;code&gt;casting.yaml.lock&lt;/code&gt;&lt;/a&gt; at repo root. One command brings up the UI (&lt;code&gt;:8080&lt;/code&gt;), OTLP ingester (&lt;code&gt;:4318&lt;/code&gt;), and MCP server (&lt;code&gt;:8000&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;arka signoz setup &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Enable telemetry in Arka
&lt;/h3&gt;

&lt;p&gt;Add to &lt;code&gt;~/.config/arka/.env&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;OTEL_TRACES_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;OTEL_METRICS_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;OTEL_LOGS_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;SIGNOZ_ENDPOINT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:4318
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instrumentation lives in &lt;code&gt;src/arka/telemetry/&lt;/code&gt; — every agent step becomes exportable telemetry with no hand-rolled exporters.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Emit traces (synthetic or live)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;arka signoz demo-scenarios &lt;span class="nt"&gt;--synthetic&lt;/span&gt;   &lt;span class="c"&gt;# no live LLM required&lt;/span&gt;
arka goal &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 4 &lt;span class="s2"&gt;"count lines in README.md"&lt;/span&gt;   &lt;span class="c"&gt;# live agent waterfall&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Demo scenarios tag spans with &lt;code&gt;arka.demo.scenario&lt;/code&gt; so you can filter in SigNoz instantly (&lt;code&gt;vllm-vs-cloud-latency&lt;/code&gt;, &lt;code&gt;rag-supermemory-cascade&lt;/code&gt;, &lt;code&gt;semantic-router-split&lt;/code&gt;, &lt;code&gt;e2e-observability-pillars&lt;/code&gt;, &lt;code&gt;exception-stack-traces&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Debug in SigNoz UI
&lt;/h3&gt;

&lt;p&gt;For the hackathon demo we use &lt;strong&gt;stock SigNoz views&lt;/strong&gt; — no custom dashboard required:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;View&lt;/th&gt;
&lt;th&gt;Filter / use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traces Explorer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;service.name = 'arka'&lt;/code&gt; → full waterfall (&lt;code&gt;arka.route&lt;/code&gt;, &lt;code&gt;arka.llm.attempt&lt;/code&gt;, RAG spans)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Services&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;P99 latency, error rate, ops/sec for the &lt;code&gt;arka&lt;/code&gt; service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Logs Explorer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LLM failover, 429 recovery, shell events on the &lt;strong&gt;same trace IDs&lt;/strong&gt; as spans&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Click any &lt;code&gt;arka.llm.attempt&lt;/code&gt; span → &lt;strong&gt;Logs&lt;/strong&gt; tab to see correlated agent events without switching tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="Traces Explorer" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" alt="Services metrics" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Flogs-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Flogs-explorer.png" alt="Logs Explorer" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Verify the stack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;arka signoz status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirms Docker, foundryctl, OTLP pipelines, and built-in verify queries for routing spans, LLM attempts, and MCP tool calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Optional extras
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dashboards:&lt;/strong&gt; &lt;code&gt;arka signoz dashboard install&lt;/code&gt; — bundled panels in &lt;code&gt;signoz/dashboards/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alerts:&lt;/strong&gt; &lt;code&gt;arka signoz alert-create --all&lt;/code&gt; — error spike, LLM P99, token budget (needs &lt;code&gt;SIGNOZ_API_KEY&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; query traces from Cursor via SigNoz MCP on &lt;code&gt;:8000&lt;/code&gt; and the &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/CURSOR_AGENT_SKILLS.md" rel="noopener noreferrer"&gt;Cursor Agent Skills plugin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What we shipped
&lt;/h2&gt;

&lt;p&gt;For this hackathon we instrumented Arka’s full agent lifecycle with &lt;strong&gt;OpenTelemetry&lt;/strong&gt; and export everything to &lt;strong&gt;SigNoz&lt;/strong&gt; over OTLP HTTP on port &lt;code&gt;4318&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instrumentation lives in &lt;code&gt;src/arka/telemetry/&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What Arka exports&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traces&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;arka.request&lt;/code&gt; → &lt;code&gt;arka.route&lt;/code&gt; → &lt;code&gt;arka.agent.goal&lt;/code&gt; → &lt;code&gt;arka.llm.attempt&lt;/code&gt; → &lt;code&gt;arka.tool.shell&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Metrics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;arka.routing.decisions&lt;/code&gt;, &lt;code&gt;arka.skill.duration&lt;/code&gt;, &lt;code&gt;arka.llm.tokens&lt;/code&gt;, &lt;code&gt;arka.mcp.ops&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Logs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Structured agent events with &lt;code&gt;trace_id&lt;/code&gt; / &lt;code&gt;span_id&lt;/code&gt; correlation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every demo scenario tags spans with &lt;code&gt;arka.demo.scenario&lt;/code&gt; so you can filter in SigNoz without guessing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;vllm-vs-cloud-latency&lt;/code&gt; — compare &lt;code&gt;arka.llm.ttft_ms&lt;/code&gt; across providers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rag-supermemory-cascade&lt;/code&gt; — vector lookup → context → LLM complete&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;semantic-router-split&lt;/code&gt; — symbolic route (~1 ms) vs LLM fallback (~seconds)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;e2e-observability-pillars&lt;/code&gt; — route → memory → LLM → shell in one waterfall&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;exception-stack-traces&lt;/code&gt; — auto-recorded &lt;code&gt;exception.stacktrace&lt;/code&gt; on error spans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See How we use SigNoz for the full deploy → instrument → debug workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Track 01 without a custom dashboard
&lt;/h2&gt;

&lt;p&gt;Judges can verify the build with three SigNoz views:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Traces Explorer&lt;/strong&gt; — filter &lt;code&gt;service.name = 'arka'&lt;/code&gt;. You see real spans: &lt;code&gt;arka.llm.attempt&lt;/code&gt;, &lt;code&gt;arka.demo.inference_compare&lt;/code&gt;, &lt;code&gt;arka.route&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="Traces Explorer — arka spans" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="Traces Explorer" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Services&lt;/strong&gt; — P99 latency, error rate, ops/sec for the &lt;code&gt;arka&lt;/code&gt; service.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" alt="Services — P99 latency and error rate" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fservices-metrics.png" alt="Services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Logs Explorer&lt;/strong&gt; — LLM failover events, quota errors, and provider 429 recovery correlated by trace ID. Filter &lt;code&gt;service.name = 'arka'&lt;/code&gt; and open a trace to see log lines on the same IDs (e.g. &lt;code&gt;route symbolic → goal loop&lt;/code&gt;, Gemini 429 failover to Groq, &lt;code&gt;shell ok wc -l README.md&lt;/code&gt;, &lt;code&gt;agent.self_heal&lt;/code&gt; retries).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Flogs-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Flogs-explorer.png" alt="Logs Explorer — arka agent events" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dashboards and alerts are bundled (&lt;code&gt;signoz/dashboards/&lt;/code&gt;, &lt;code&gt;arka signoz alert-create&lt;/code&gt;) for teams that want them — but the hackathon demo video and judge script focus on traces + services + logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/arka-signoz-hackathon-demo.mp4" rel="noopener noreferrer"&gt;arka-signoz-hackathon-demo.mp4&lt;/a&gt; (~3 min) · &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/arka-demo-submission.mp4" rel="noopener noreferrer"&gt;general Arka demo&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to find docs (start here)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Observability guide&lt;/strong&gt; (setup, demo, dashboards, MCP)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://arka-agent.mintlify.site/guides/observability" rel="noopener noreferrer"&gt;arka-agent.mintlify.site/guides/observability&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Hackathon judge pack&lt;/strong&gt; (checklist, four pillars, demos)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/blob/main/signoz/README.md" rel="noopener noreferrer"&gt;signoz/README.md on fork&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Blog / submission narrative&lt;/strong&gt; (this page)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/BLOG.md" rel="noopener noreferrer"&gt;BLOG.md on release&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Four pillars walkthrough&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/FOUR_PILLARS.md" rel="noopener noreferrer"&gt;FOUR_PILLARS.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MCP + Cursor skills&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/MCP_INTEGRATION.md" rel="noopener noreferrer"&gt;MCP_INTEGRATION.md&lt;/a&gt; · &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/CURSOR_AGENT_SKILLS.md" rel="noopener noreferrer"&gt;CURSOR_AGENT_SKILLS.md&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Demo media (PNG/MP4)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/tag/signoz-hackathon-media" rel="noopener noreferrer"&gt;signoz-hackathon-media release&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Quickstart&lt;/strong&gt; (install &lt;code&gt;arka-agent&lt;/code&gt;, API keys)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://arka-agent.mintlify.site/quickstart" rel="noopener noreferrer"&gt;arka-agent.mintlify.site/quickstart&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SigNoz official docs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://signoz.io/docs/" rel="noopener noreferrer"&gt;signoz.io/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Reproduce in 10 minutes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; Docker Desktop (≥4 GB RAM), Python 3.11+.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Sumit884-byte/arka.git
&lt;span class="nb"&gt;cd &lt;/span&gt;arka
git checkout main
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[chat,observability]"&lt;/span&gt;

&lt;span class="c"&gt;# Deploy SigNoz via Foundry (Docker + foundryctl + cast)&lt;/span&gt;
arka signoz setup &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install without cloning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"arka-agent[chat,observability]"&lt;/span&gt;
arka signoz setup &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add to &lt;code&gt;~/.config/arka/.env&lt;/code&gt; (or repo &lt;code&gt;.env&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;OTEL_TRACES_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;OTEL_METRICS_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;OTEL_LOGS_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;SIGNOZ_ENDPOINT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:4318
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Emit synthetic agent traces (no live LLM required):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;arka signoz demo-scenarios &lt;span class="nt"&gt;--synthetic&lt;/span&gt;
arka signoz status   &lt;span class="c"&gt;# verify pipelines + judge filter queries&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;&lt;/strong&gt; → Traces Explorer → filter &lt;code&gt;service.name = 'arka'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fhome-dashboard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fhome-dashboard.png" alt="SigNoz home after setup" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a live agent waterfall:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;arka goal &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 4 &lt;span class="s2"&gt;"count lines in README.md"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Refresh SigNoz UI screenshots and rebuild the demo video:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 recordings/signoz-screenshots/capture_signoz_ui.py &lt;span class="nt"&gt;--no-dashboard&lt;/span&gt;
python3 recordings/build_signoz_demo_video.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Four observability pillars
&lt;/h2&gt;

&lt;p&gt;We mapped Arka directly to SigNoz's LLM observability story (&lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/FOUR_PILLARS.md" rel="noopener noreferrer"&gt;FOUR_PILLARS.md&lt;/a&gt;):&lt;/p&gt;

&lt;h3&gt;
  
  
  1. End-to-end request tracing
&lt;/h3&gt;

&lt;p&gt;Root span &lt;code&gt;arka.request&lt;/code&gt; through routing, goal steps, LLM attempts, and tools. Filter: &lt;code&gt;arka.demo.scenario = 'e2e-observability-pillars'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Ftraces-explorer.png" alt="E2E trace waterfall" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Correlate traces with logs
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;emit_log()&lt;/code&gt; attaches the active span's trace ID. Click an &lt;code&gt;arka.llm.attempt&lt;/code&gt; span → &lt;strong&gt;Logs&lt;/strong&gt; tab shows &lt;code&gt;llm tokens gemini/...&lt;/code&gt; on the same trace.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Token usage and cost analytics
&lt;/h3&gt;

&lt;p&gt;Span attributes: &lt;code&gt;gen_ai.usage.input_tokens&lt;/code&gt;, &lt;code&gt;gen_ai.usage.output_tokens&lt;/code&gt;, &lt;code&gt;arka.llm.estimated_cost_usd&lt;/code&gt;. Metric: &lt;code&gt;arka.llm.tokens&lt;/code&gt; by provider and model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fdashboard-observability-long.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsumitmishra884byte-cpu%2Farka%2Freleases%2Fdownload%2Fsignoz-hackathon-media%2Fdashboard-observability-long.png" alt="Observability dashboard — tokens and latency" width="800" height="770"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Alerts
&lt;/h3&gt;

&lt;p&gt;Bundled recipes: agent error spike, LLM P99 latency, token budget. Create with &lt;code&gt;arka signoz alert-create --all&lt;/code&gt; (requires &lt;code&gt;SIGNOZ_API_KEY&lt;/code&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agent&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Arka&lt;/strong&gt; — CLI, Fish router, goal loop, skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Agno&lt;/strong&gt; — model-agnostic routing and chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telemetry&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;OpenTelemetry&lt;/strong&gt; — OTLP HTTP → SigNoz &lt;code&gt;:4318&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;SigNoz&lt;/strong&gt; — traces, metrics, logs, Query Builder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;SigNoz Foundry&lt;/strong&gt; — &lt;code&gt;foundryctl cast -f casting.yaml&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP (optional)&lt;/td&gt;
&lt;td&gt;SigNoz MCP on &lt;code&gt;:8000&lt;/code&gt; — Cursor Agent Skills plugin&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Foundry and MCP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//../casting.yaml"&gt;&lt;code&gt;casting.yaml&lt;/code&gt;&lt;/a&gt; enables SigNoz MCP (&lt;code&gt;mcp.spec.enabled: true&lt;/code&gt;) so you can query traces and metrics from Cursor via the &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/CURSOR_AGENT_SKILLS.md" rel="noopener noreferrer"&gt;SigNoz Agent Skills plugin&lt;/a&gt;. Judges can re-run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;foundryctl cast &lt;span class="nt"&gt;-f&lt;/span&gt; casting.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and verify OTel traces land in SigNoz within minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI disclosure
&lt;/h2&gt;

&lt;p&gt;Per &lt;a href="https://www.wemakedevs.org/hackathons/signoz/rules" rel="noopener noreferrer"&gt;hackathon rules&lt;/a&gt;, we declare AI assistant use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; — OpenTelemetry instrumentation, SigNoz wiring, docs, demo video script, screenshot capture automation, and this blog draft&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM providers&lt;/strong&gt; — used during normal Arka development and demo scenario design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failure to disclose AI assistance disqualifies submissions; we list it here and in our Devpost form.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docs (observability):&lt;/strong&gt; &lt;a href="https://arka-agent.mintlify.site/guides/observability" rel="noopener noreferrer"&gt;arka-agent.mintlify.site/guides/observability&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upstream repo:&lt;/strong&gt; &lt;a href="https://github.com/Sumit884-byte/arka" rel="noopener noreferrer"&gt;github.com/Sumit884-byte/arka&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hackathon fork:&lt;/strong&gt; &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/tree/main" rel="noopener noreferrer"&gt;github.com/sumitmishra884byte-cpu/arka&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Judge pack:&lt;/strong&gt; &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/blob/main/signoz/README.md" rel="noopener noreferrer"&gt;signoz/README.md&lt;/a&gt; · &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/FOUR_PILLARS.md" rel="noopener noreferrer"&gt;FOUR_PILLARS.md&lt;/a&gt; · &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/tag/signoz-hackathon-media" rel="noopener noreferrer"&gt;release media + docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hackathon:&lt;/strong&gt; &lt;a href="https://www.wemakedevs.org/hackathons/signoz" rel="noopener noreferrer"&gt;wemakedevs.org/hackathons/signoz&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SigNoz docs:&lt;/strong&gt; &lt;a href="https://signoz.io/docs/" rel="noopener noreferrer"&gt;signoz.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/arka-signoz-hackathon-demo.mp4" rel="noopener noreferrer"&gt;arka-signoz-hackathon-demo.mp4&lt;/a&gt; (~3 min) · &lt;a href="https://github.com/sumitmishra884byte-cpu/arka/releases/download/signoz-hackathon-media/arka-demo-submission.mp4" rel="noopener noreferrer"&gt;general Arka demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;YouTube / Devpost blurb:&lt;/strong&gt; &lt;em&gt;See inside your AI agents — not just that something failed, but which step broke. Arka instruments routing, LLM attempts, RAG retrieval, tool calls, and failover with OpenTelemetry; SigNoz shows the full waterfall in Traces Explorer, Services metrics, and correlated Logs Explorer. Reproduce: &lt;code&gt;arka signoz setup -y&lt;/code&gt; → &lt;code&gt;arka signoz demo-scenarios --synthetic&lt;/code&gt; → filter &lt;code&gt;service.name = 'arka'&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Clone the repo, run &lt;code&gt;arka signoz setup -y&lt;/code&gt;, then &lt;code&gt;arka signoz demo-scenarios --synthetic&lt;/code&gt;. Open Traces Explorer, filter &lt;code&gt;service.name = 'arka'&lt;/code&gt;, and watch the full agent lifecycle in one waterfall.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My Headless LinkedIn Bot Fails Silently - Until I Point SigNoz at It</title>
      <dc:creator>Sumit Mishra</dc:creator>
      <pubDate>Sat, 18 Jul 2026 08:05:52 +0000</pubDate>
      <link>https://dev.to/sumit_mishra_cb22d5be5f02/my-headless-linkedin-bot-fails-silently-until-i-point-signoz-at-it-4ce6</link>
      <guid>https://dev.to/sumit_mishra_cb22d5be5f02/my-headless-linkedin-bot-fails-silently-until-i-point-signoz-at-it-4ce6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Subtitle:&lt;/strong&gt; From ChromeDriver 151 vs Brave 150 to correlated traces: what I learn instrumenting a Selenium cron job with OpenTelemetry&lt;/p&gt;




&lt;p&gt;Every morning I open yesterday's log file and scroll, guessing.&lt;/p&gt;

&lt;p&gt;Some days the bot sends zero connection requests. Other days it hits 27 of 30 and stops. The script runs headless on a schedule — no browser window, no Slack alert, just a text file that might not tell the whole story.&lt;/p&gt;

&lt;p&gt;I built this for a SigNoz hackathon. The goal isn't a polished observability tutorial. It's to stop flying blind on a real Python + Selenium bot running on my Mac. Here's what actually breaks, what I instrument, and what shows up in SigNoz when I finally look.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Run
&lt;/h2&gt;

&lt;p&gt;The bot sends LinkedIn connection requests up to a daily cap. I run headless Brave on macOS via &lt;code&gt;launchd&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./schedule/install_daily_schedule.sh &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;span class="c"&gt;# At login + hourly while the Mac is on; at most one successful run per day&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Relevant settings from &lt;code&gt;.env&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;BROWSER_HEADLESS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;USE_BROWSER_PROFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;USE_NETWORK_GROW&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;          &lt;span class="c"&gt;# fallback when people search is exhausted&lt;/span&gt;
&lt;span class="nv"&gt;AUTO_ACCEPT_INVITATIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;   &lt;span class="c"&gt;# accept pending invites on Grow first&lt;/span&gt;
&lt;span class="nv"&gt;LINKEDIN_CONNECTIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30
&lt;span class="nv"&gt;LINKEDIN_DRIVER_AUTO_FIX_ATTEMPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2

&lt;span class="nv"&gt;SIGNOZ_ENABLED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:4317
&lt;span class="nv"&gt;OTEL_SERVICE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;linkedin-connection-bot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When people search runs out, the bot switches to &lt;strong&gt;My Network → Grow&lt;/strong&gt;, accepts incoming invitations, then sends Connect requests. Resume state lets a crashed run pick up on Grow without redoing search. A wrapper script (&lt;code&gt;schedule/daily_run.sh&lt;/code&gt;) handles lock files, stale process cleanup, and one chromedriver auto-fix retry.&lt;/p&gt;

&lt;p&gt;Simple on paper. Messy in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Failures I Can't See From One Log Line
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ChromeDriver 151 vs Brave 150
&lt;/h3&gt;

&lt;p&gt;On July 17, most hourly &lt;code&gt;launchd&lt;/code&gt; checks looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Critical error: Failed to initialize brave: ...
This version of ChromeDriver only supports Chrome version 151
Current browser version is 150.0.7871.125
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Brave hadn't auto-updated. Selenium had cached ChromeDriver 151. The bot never got past browser launch — zero connections, 784 lines of stack trace.&lt;/p&gt;

&lt;p&gt;I add self-healing in &lt;code&gt;Scripts/browser_utils.py&lt;/code&gt;: detect the mismatch, kill stale chromedriver and Brave processes, re-download the matching driver:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;auto_fix_chromedriver_mismatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;browser_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;log_func&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;cleanup_stale_bot_processes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;browser_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;log_func&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;log_func&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;resolve_chromedriver_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;browser_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;force_refresh&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;log_func&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Auto-fix: resolved chromedriver at &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That fixed launches once Brave caught up. But I still want to &lt;em&gt;know&lt;/em&gt; when it happens without grepping logs at 7 a.m.&lt;/p&gt;

&lt;h3&gt;
  
  
  Almost Done: 27/30 and a Hangup
&lt;/h3&gt;

&lt;p&gt;Late on July 17, after auto-fix worked, the bot resumed Grow-only mode and sent connections steadily — until:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Progress: 27/30 connections sent &lt;span class="o"&gt;(&lt;/span&gt;grow&lt;span class="o"&gt;)&lt;/span&gt;
Progress: 28/30 connections sent &lt;span class="o"&gt;(&lt;/span&gt;grow&lt;span class="o"&gt;)&lt;/span&gt;
Cleaning up bot browser processes...
./schedule/daily_run.sh: line 19: 52556 Hangup: 1               &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$VENV_PYTHON&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; run_bot.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two short of the cap. Killed by SIGHUP. Without exported counters, the only signal is a progress line buried in a 700-line file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stale Locks
&lt;/h3&gt;

&lt;p&gt;While one process is still running, the next hourly check logs: &lt;code&gt;Another bot run is already in progress (pid 51947). Skipping.&lt;/code&gt; Earlier that evening I saw: &lt;code&gt;Removing stale lock file.&lt;/code&gt; The lock logic is correct. Interrupted runs still leave footguns. Metrics like &lt;code&gt;bot.driver_errors&lt;/code&gt; and &lt;code&gt;bot.session_crashes&lt;/code&gt; surface this on a dashboard instead of me tailing files.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Module, Three Signals
&lt;/h2&gt;

&lt;p&gt;Everything lives in &lt;code&gt;Scripts/telemetry.py&lt;/code&gt; — OTLP gRPC to port 4317, gated by &lt;code&gt;SIGNOZ_ENABLED&lt;/code&gt;. Each run gets a 12-character &lt;code&gt;bot.run_id&lt;/code&gt; on traces, metrics, and logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spans:&lt;/strong&gt; &lt;code&gt;bot.run&lt;/code&gt;, &lt;code&gt;bot.configure_browser&lt;/code&gt;, &lt;code&gt;bot.login&lt;/code&gt;, &lt;code&gt;bot.search_page&lt;/code&gt;, &lt;code&gt;bot.accept_invitations&lt;/code&gt;, &lt;code&gt;bot.connect_from_grow&lt;/code&gt;, &lt;code&gt;bot.recover_session&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metrics:&lt;/strong&gt; &lt;code&gt;bot.connections_sent&lt;/code&gt; (label &lt;code&gt;source=search|grow&lt;/code&gt;), &lt;code&gt;bot.invitations_accepted&lt;/code&gt;, &lt;code&gt;bot.driver_errors&lt;/code&gt; (&lt;code&gt;error_type=version_mismatch&lt;/code&gt;), &lt;code&gt;bot.session_crashes&lt;/code&gt;, &lt;code&gt;bot.run_success&lt;/code&gt; / &lt;code&gt;bot.run_failure&lt;/code&gt;, &lt;code&gt;bot.run_duration_seconds&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Main loop wiring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;tel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init_telemetry&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;tel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bot run started&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phase&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;tel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;span&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bot.run&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phase&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;run&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;configurations&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;webpage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;tel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;record_run_outcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;success&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;run_failed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connections_sent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;connections_sent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;tel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;record_run_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;run_started_at&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On driver mismatch: &lt;code&gt;tel.record_driver_error(error_type="version_mismatch")&lt;/code&gt; before auto-fix runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; append &lt;code&gt;run_id&lt;/code&gt; and &lt;code&gt;phase&lt;/code&gt; for trace correlation in SigNoz Logs Explorer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Verify telemetry smoke test | run_id=87626c6dc93a phase=verify
trace_id=7b69827901b867b9f0658ed774ff684d  span_id=0e08651f63956788
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One lesson I keep relearning: logs need explicit OTLP export. &lt;code&gt;telemetry.py&lt;/code&gt; wires a &lt;code&gt;LoggingHandler&lt;/code&gt; plus &lt;code&gt;OTLPLogExporter&lt;/code&gt; — stdout files alone aren't enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three-Pillar Correlation — The Part I Care About Most
&lt;/h2&gt;

&lt;p&gt;SigNoz's real payoff for me isn't three separate tabs. It's jumping between logs, traces, and metrics without rebuilding queries. &lt;a href="https://signoz.io/docs/what-is-signoz/" rel="noopener noreferrer"&gt;Unified observability&lt;/a&gt; means one &lt;code&gt;run_id&lt;/code&gt; on every signal, and SigNoz UI links that carry filters and time range when I drill down (&lt;a href="https://signoz.io/docs/dashboards/interactivity/" rel="noopener noreferrer"&gt;dashboard interactivity&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  How my bot wires it
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;What I emit&lt;/th&gt;
&lt;th&gt;Correlation hook&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traces&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spans like &lt;code&gt;bot.run&lt;/code&gt;, &lt;code&gt;bot.login&lt;/code&gt;, &lt;code&gt;bot.connect_from_grow&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;bot.run_id&lt;/code&gt; span attribute; root span wraps the whole cron run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Metrics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;bot.connections_sent&lt;/code&gt;, &lt;code&gt;bot.run_success&lt;/code&gt;, etc.&lt;/td&gt;
&lt;td&gt;Same &lt;code&gt;bot.run_id&lt;/code&gt; label on every counter/histogram sample&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Logs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;log_event()&lt;/code&gt; lines with &lt;code&gt;run_id=&lt;/code&gt; and &lt;code&gt;phase=&lt;/code&gt; in the body&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LoggingInstrumentor&lt;/code&gt; injects &lt;code&gt;trace_id&lt;/code&gt; / &lt;code&gt;span_id&lt;/code&gt; when the log fires inside an active span (&lt;a href="https://signoz.io/docs/traces-management/guides/correlate-traces-and-logs/" rel="noopener noreferrer"&gt;official guide&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Logs emitted &lt;strong&gt;inside&lt;/strong&gt; a span carry both domain context (&lt;code&gt;run_id=87626c6dc93a phase=verify&lt;/code&gt;) and OTel trace context (&lt;code&gt;trace_id=… span_id=…&lt;/code&gt;). That second pair is what powers SigNoz's &lt;strong&gt;View trace&lt;/strong&gt; button on a log line. Metrics don't get trace IDs on every sample — I correlate them through the shared &lt;code&gt;bot.run_id&lt;/code&gt; label instead. SigNoz also derives APM/RED metrics from span data automatically (&lt;a href="https://signoz.io/docs/traces-management/guides/apm-metrics/" rel="noopener noreferrer"&gt;APM metrics from traces&lt;/a&gt;), which gives me operation-level rates alongside my custom &lt;code&gt;bot.*&lt;/code&gt; counters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Walkthrough: one smoke test, three pillars
&lt;/h3&gt;

&lt;p&gt;After &lt;code&gt;./venv/bin/python Scripts/verify_telemetry.py&lt;/code&gt; prints &lt;code&gt;run_id=87626c6dc93a&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logs → trace.&lt;/strong&gt; I open &lt;strong&gt;Logs Explorer&lt;/strong&gt;, filter &lt;code&gt;service.name = linkedin-connection-bot&lt;/code&gt;, and find &lt;code&gt;Verify telemetry smoke test | run_id=87626c6dc93a phase=verify&lt;/code&gt;. The row shows &lt;code&gt;trace_id&lt;/code&gt; and &lt;code&gt;span_id&lt;/code&gt;. I click &lt;strong&gt;View trace&lt;/strong&gt; (or the trace ID link). SigNoz opens the &lt;code&gt;bot.verify_telemetry&lt;/code&gt; span — the same run I just emitted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trace → logs.&lt;/strong&gt; On that trace's span detail panel I open the &lt;strong&gt;Logs&lt;/strong&gt; tab (&lt;a href="https://signoz.io/docs/userguide/span-details/" rel="noopener noreferrer"&gt;span details&lt;/a&gt;). SigNoz shows the correlated log line from step 1 without me re-filtering by hand. I can also click &lt;strong&gt;Go to related logs&lt;/strong&gt; from the trace list view.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trace → metrics.&lt;/strong&gt; Back in &lt;strong&gt;Metrics Explorer&lt;/strong&gt; I query &lt;code&gt;bot.connections_sent&lt;/code&gt; with aggregation &lt;strong&gt;Sum&lt;/strong&gt;, group by &lt;code&gt;bot.run_id&lt;/code&gt;, and filter &lt;code&gt;bot.run_id = 87626c6dc93a&lt;/code&gt;. I see &lt;code&gt;source = verify&lt;/code&gt; with value 1 — the counter incremented inside the same span that produced the log. For a demo run with twelve simulated runs (&lt;code&gt;signoz_demo_data.py&lt;/code&gt;), I group by &lt;code&gt;source&lt;/code&gt; and spot the grow spike that matches a &lt;code&gt;bot.connect_from_grow&lt;/code&gt; span in Traces Explorer.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the July 17 hangup story in reverse: instead of grepping 700 lines for &lt;code&gt;Progress: 27/30&lt;/code&gt;, I click a log from the failed run, jump to &lt;code&gt;bot.run&lt;/code&gt;, and check whether &lt;code&gt;bot.connections_sent&lt;/code&gt; stopped climbing for that &lt;code&gt;run_id&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify correlation in the SigNoz UI (5 minutes)
&lt;/h3&gt;

&lt;p&gt;Run the smoke test, wait ~10 seconds for export, then check each pillar:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;What to confirm&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Logs Explorer&lt;/strong&gt; → filter &lt;code&gt;service.name = linkedin-connection-bot&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Body contains &lt;code&gt;run_id=&lt;/code&gt;; log attributes or body include &lt;code&gt;trace_id&lt;/code&gt; and &lt;code&gt;span_id&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Click a log row → &lt;strong&gt;View trace&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Trace opens with span &lt;code&gt;bot.verify_telemetry&lt;/code&gt; and &lt;code&gt;bot.run_id&lt;/code&gt; attribute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Trace detail → &lt;strong&gt;Logs&lt;/strong&gt; tab&lt;/td&gt;
&lt;td&gt;Same smoke-test log appears in the correlated panel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Metrics Explorer&lt;/strong&gt; → &lt;code&gt;bot.connections_sent&lt;/code&gt;, Sum, group by &lt;code&gt;bot.run_id&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Sample for your smoke-test &lt;code&gt;run_id&lt;/code&gt; with &lt;code&gt;source = verify&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Traces Explorer&lt;/strong&gt; → &lt;code&gt;service.name = linkedin-connection-bot&lt;/code&gt;, span name &lt;code&gt;bot.verify_telemetry&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Span attributes include &lt;code&gt;bot.run_id&lt;/code&gt; matching the log and metric label&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If logs show &lt;code&gt;run_id=&lt;/code&gt; but no &lt;code&gt;trace_id&lt;/code&gt;, the log probably fired outside an active span — I make sure &lt;code&gt;tel.log_event()&lt;/code&gt; calls sit inside &lt;code&gt;with tel.span(...)&lt;/code&gt;. If &lt;strong&gt;View trace&lt;/strong&gt; is missing, I confirm &lt;code&gt;LoggingInstrumentor&lt;/code&gt; ran (SDK OTLP export path per &lt;a href="https://signoz.io/docs/logs-management/send-logs/collection-methods/" rel="noopener noreferrer"&gt;log collection methods&lt;/a&gt;) and that I'm on current &lt;code&gt;telemetry.py&lt;/code&gt; with OTLP log export enabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standing Up SigNoz and Verifying
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; pours/deployment/compose.yaml up &lt;span class="nt"&gt;-d&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; http://localhost:8080/api/v1/health   &lt;span class="c"&gt;# {"status":"ok"}&lt;/span&gt;
nc &lt;span class="nt"&gt;-z&lt;/span&gt; localhost 4317 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"OTLP gRPC reachable"&lt;/span&gt;

./venv/bin/python Scripts/verify_telemetry.py
&lt;span class="c"&gt;# run_id=87626c6dc93a&lt;/span&gt;

&lt;span class="c"&gt;# Optional: realistic demo runs for dashboard screenshots (no LinkedIn traffic)&lt;/span&gt;
./venv/bin/python Scripts/signoz_demo_data.py &lt;span class="nt"&gt;--runs&lt;/span&gt; 12 &lt;span class="nt"&gt;--delay&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ClickHouse verification script confirmed logs, traces, and metric samples after smoke tests. For blog screenshots I also run &lt;code&gt;signoz_demo_data.py&lt;/code&gt;, which emits a dozen simulated runs with varied &lt;code&gt;run_id&lt;/code&gt;s, &lt;code&gt;source=search|grow|verify&lt;/code&gt; on &lt;code&gt;bot.connections_sent&lt;/code&gt;, histogram samples on &lt;code&gt;bot.run_duration_seconds&lt;/code&gt;, and a mix of &lt;code&gt;bot.run_success&lt;/code&gt; / &lt;code&gt;bot.run_failure&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; SigNoz Metrics Explorer defaults counters like &lt;code&gt;bot.run_success&lt;/code&gt; to &lt;strong&gt;Rate&lt;/strong&gt; over &lt;strong&gt;Last 30 minutes&lt;/strong&gt;. Sparse cron jobs look empty even when data exists. Switch to &lt;strong&gt;Sum&lt;/strong&gt; over &lt;strong&gt;Last 24 hours&lt;/strong&gt; (or run demo data recently) to see cumulative run counts. Spans like &lt;code&gt;bot.login&lt;/code&gt; and &lt;code&gt;bot.connect_from_grow&lt;/code&gt; still need a full &lt;code&gt;run_bot.py&lt;/code&gt; run — I skip that during verification to avoid live LinkedIn side effects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dashboards and Alerts (Designed, Not Yet Fired)
&lt;/h2&gt;

&lt;p&gt;From my dashboard notes, the panels I build first: run health (&lt;code&gt;bot.run_success&lt;/code&gt; vs &lt;code&gt;bot.run_failure&lt;/code&gt;), throughput by source, driver errors plus session crashes, run duration p95, and recent &lt;code&gt;bot.run&lt;/code&gt; traces.&lt;/p&gt;

&lt;p&gt;Alert targets for my setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;bot.run_success&lt;/code&gt; sum over 26h = 0&lt;/strong&gt; — no successful daily run (26h allows &lt;code&gt;launchd&lt;/code&gt; drift)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bot.driver_errors&lt;/code&gt; where &lt;code&gt;version_mismatch&lt;/code&gt;, sum over 1h &amp;gt; 0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bot.session_crashes&lt;/code&gt; sum over 15m &amp;gt; 0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No &lt;code&gt;bot.*&lt;/code&gt; metric data for 26h&lt;/strong&gt; — telemetry pipeline dead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I haven't fired these in production yet. They're the guardrails I wish I'd had before July 17.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Do Differently Now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Instrument before the first scheduled run.&lt;/strong&gt; A &lt;code&gt;verify_telemetry.py&lt;/code&gt; smoke test on day one beats log archaeology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partial runs need explicit failure signals.&lt;/strong&gt; Stopping at 27/30 should increment &lt;code&gt;bot.run_failure&lt;/code&gt; with &lt;code&gt;connections_sent=27&lt;/code&gt;, not look like quiet success.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Put &lt;code&gt;OTEL_*&lt;/code&gt; in &lt;code&gt;.env&lt;/code&gt;, not just your shell.&lt;/strong&gt; &lt;code&gt;run_bot.py&lt;/code&gt; loads &lt;code&gt;.env&lt;/code&gt; with override. My interactive shell had stale exports that confused early tests.&lt;/p&gt;

&lt;p&gt;Headless Selenium observability is about phase spans and batch counters, not HTTP latency. But the pattern — one &lt;code&gt;run_id&lt;/code&gt; on every signal — transfers to any cron-driven browser job.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bot Isn't Mysterious — It's Unobserved
&lt;/h2&gt;

&lt;p&gt;ChromeDriver mismatches, stale locks, and a SIGHUP at 28/30 all leave evidence in flat files. Nothing aggregates it. OpenTelemetry plus SigNoz gives me one place to ask: did today's run succeed? How many connections? Which phase failed? Was it the driver again?&lt;/p&gt;

&lt;p&gt;This works for my setup: local SigNoz via Docker, OTLP gRPC on 4317, macOS &lt;code&gt;launchd&lt;/code&gt;, headless Brave. Your mileage will vary.&lt;/p&gt;

&lt;p&gt;The full project — bot, telemetry module, SigNoz compose stack, verification scripts, and dashboard notes — is on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Sumit884-byte/linkedin_connection_bot" rel="noopener noreferrer"&gt;https://github.com/Sumit884-byte/linkedin_connection_bot&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're running a headless browser job on a schedule and only checking log files afterward, start with a smoke test and three signals. You'll thank yourself the first time ChromeDriver and Brave disagree.&lt;/p&gt;




&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhk8nlz8zmjirebm0i2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhk8nlz8zmjirebm0i2k.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
ui-logs-linkedin-bot.png &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk2p07ar3pvb7peb8oxih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk2p07ar3pvb7peb8oxih.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
ui-traces-bot-run.png&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7hcepe0qndxg41bv4b6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7hcepe0qndxg41bv4b6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
ui-metrics-connections-sent.png&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwx4krrcjl55tp4tkbyl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwx4krrcjl55tp4tkbyl4.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
ui-metrics-run-success.png&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3blq6tfjcqbduv62tenj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3blq6tfjcqbduv62tenj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
ui-services-overview.png&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Use in section&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ui-logs-linkedin-bot.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Instrumentation / SigNoz verification — Logs Explorer with &lt;code&gt;run_id&lt;/code&gt;, &lt;code&gt;phase&lt;/code&gt;, trace correlation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ui-traces-bot-run.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SigNoz verification — &lt;code&gt;bot.verify_telemetry&lt;/code&gt; spans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ui-metrics-connections-sent.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SigNoz verification — &lt;code&gt;bot.connections_sent&lt;/code&gt; by source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ui-metrics-run-success.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SigNoz verification — &lt;code&gt;bot.run_success&lt;/code&gt; over 24h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ui-services-overview.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SigNoz verification — Services page with &lt;code&gt;linkedin-connection-bot&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




</description>
      <category>signoz</category>
      <category>opentelemetry</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
