<?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: Manya Jain</title>
    <description>The latest articles on DEV Community by Manya Jain (@manyajainrkm).</description>
    <link>https://dev.to/manyajainrkm</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%2F4196920%2F684eb7ce-e87c-49a8-ac75-b588bdc4d64c.png</url>
      <title>DEV Community: Manya Jain</title>
      <link>https://dev.to/manyajainrkm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manyajainrkm"/>
    <language>en</language>
    <item>
      <title>FirstHour, 2 wins at LA Hacks: texting the family when someone falls</title>
      <dc:creator>Manya Jain</dc:creator>
      <pubDate>Tue, 20 Oct 2026 22:57:20 +0000</pubDate>
      <link>https://dev.to/manyajainrkm/2-wins-at-la-hacks-texting-the-family-when-someone-falls-3hbn</link>
      <guid>https://dev.to/manyajainrkm/2-wins-at-la-hacks-texting-the-family-when-someone-falls-3hbn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/mlh-hackathon"&gt;MLH x DEV Writing Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At LA Hacks 2026, our team of three built &lt;strong&gt;FirstHour&lt;/strong&gt; in 24 hours and won &lt;strong&gt;2nd place in two sponsor challenges: StepFun's "Get It Done with Step 5 Preview" and Espressif's "Best Use of Espressif."&lt;/strong&gt; This is the story of the part I owned: what happens between "the box heard a fall" and "someone is at the door."&lt;/p&gt;

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

&lt;p&gt;When an older adult falls alone in the bathroom, the hardest part is often what comes next: lying on the floor, unable to reach a phone, while nobody knows. FirstHour is built for that first hour. It's a camera-free box for the bathroom, built by Anmol Hurkat, Sakshi Kuldeep Dhariwal and me.&lt;/p&gt;

&lt;p&gt;Here's what it does, end to end:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detect.&lt;/strong&gt; An Espressif ESP32-S3-BOX-3 listens for the thud and feels the vibration. A Raspberry Pi 5 running QNX confirms the fall and starts an alarm on the device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check in.&lt;/strong&gt; A voice asks the person if they're okay, and listens. "I'm fine, but my hip hurts" is not a cancel, and silence always escalates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triage.&lt;/strong&gt; The answers become a short triage record (conscious, pain, head strike, blood thinners), refined by StepFun's step-5-preview, with a rule-based fallback so nothing waits on the model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tell the family.&lt;/strong&gt; A family member gets a text with that record and can ask questions, say they're coming, or let help in through a guarded door unlock.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sakshi's post covers &lt;a href="https://dev.to/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p"&gt;the whole project and how the demo runs&lt;/a&gt;. This one goes deep on step 4.&lt;/p&gt;

&lt;p&gt;I was the comms lead. My job was the family's side of the incident: getting the right message to the right person, getting their answer back, and making sure none of it could be used to open the door when it shouldn't. I also ran our live messaging and calling tests, spent a lot of the night testing the voice check-in, and worked on the pitch, demo and video.&lt;/p&gt;

&lt;p&gt;It sounds simple: send a text when someone falls. It isn't, for three reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The family's reply has to come back&lt;/strong&gt; to the box, reliably, even if a process restarts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More than one person might get the alert.&lt;/strong&gt; If everyone drives over, or everyone assumes someone else will, both are bad outcomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The text can open a door,&lt;/strong&gt; so the messaging layer is part of the security model.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Here's the flow from the caregiver's phone. I ran it live on real iMessage, playing the caregiver:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The alert.&lt;/strong&gt; About 0.3 s after the incident escalates, Photon accepts a message like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FALL ALERT: Margaret (Bathroom). Down 00:32. Conscious. Right hip pain, cannot move. No head strike. NOTE: on a blood thinner. How soon can you be here?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It deliberately has &lt;strong&gt;no door code&lt;/strong&gt; in it. The blood-thinner line comes from her profile, never from the AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The claim.&lt;/strong&gt; The first caregiver to reply "on my way, 10 min" claims the incident:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The box reads it aloud to the person on the floor: &lt;em&gt;"Sarah is about 10 minutes away."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Every other caregiver gets: &lt;em&gt;"Sarah is on her way. Please stand by."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Only Sarah gets the one-time door code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hedges like "I might come" never count as a claim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Questions.&lt;/strong&gt; A caregiver can text "is she still talking?" and get an answer built only from the incident's facts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Nobody answers?&lt;/strong&gt; After 20 s with no claim (or right away if there was a head strike), the backend &lt;strong&gt;phones&lt;/strong&gt; the first caregiver. It's an ElevenLabs voice agent on a Photon phone number. When the call ends, the ETA they gave is posted back into the text thread: &lt;em&gt;"You said 5 minutes on the call. Reply UNLOCK with the code at the door."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The door.&lt;/strong&gt; &lt;code&gt;UNLOCK &amp;lt;code&amp;gt;&lt;/code&gt; from the claiming caregiver opens the latch (simulated for the demo), but only after the Pi verifies the signed command and the latch confirms. A stranger's number, even with the right code, is refused.&lt;/p&gt;

&lt;p&gt;Live numbers from the event:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A real reply reached the backend &lt;strong&gt;3.5 s&lt;/strong&gt; after the phone sent it.&lt;/li&gt;
&lt;li&gt;The door-code text went out &lt;strong&gt;0.3 s&lt;/strong&gt; after the claim.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code: &lt;a href="https://github.com/saksh12/firsthour" rel="noopener noreferrer"&gt;github.com/saksh12/firsthour&lt;/a&gt; · Devpost: &lt;a href="https://devpost.com/software/firsthour" rel="noopener noreferrer"&gt;devpost.com/software/firsthour&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Platforms we used:&lt;/strong&gt; Photon 2.0 beta (iMessage + phone calls), StepFun step-5-preview, ElevenLabs (voice and the call agent), Espressif ESP32-S3-BOX-3, QNX on a Raspberry Pi 5, FastAPI, and Sentry.&lt;/p&gt;

&lt;p&gt;The messaging layer has two pieces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A TypeScript gateway&lt;/strong&gt; (&lt;code&gt;comms-gateway/&lt;/code&gt;) on Photon's 2.0 beta SDK:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It sends alerts and polls for replies.&lt;/li&gt;
&lt;li&gt;Every reply it forwards to the backend is HMAC-signed and carries Photon's message id, so a replayed message is ignored. The backend trusts a sender's phone number only if it came from the gateway.&lt;/li&gt;
&lt;li&gt;It saves its inbound cursor and each caregiver's conversation to disk. The cursor only moves forward once the backend has accepted the message, so restarting the gateway mid-incident loses no replies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A caregiver coordinator&lt;/strong&gt; in the Python backend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It reads each reply and decides whether it's a claim, an ETA, an arrival, a question, or a message for the person.&lt;/li&gt;
&lt;li&gt;It tracks who is coming.&lt;/li&gt;
&lt;li&gt;It reports delivery honestly. "Sent" means Photon accepted the message, never "delivered", because we can't actually know that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote the gateway. For the coordinator, I proposed caregiver Q&amp;amp;A in the thread and several of the demo moments, drove Devin as a coding agent to build the first version (claims, Q&amp;amp;A, honest delivery, voice escalation, a restart-safe gateway), and got it merged against a teammate's parallel changes and a 370+ test suite. Anmol wired the Photon number to the ElevenLabs voice agent, then reworked the flow into what you see above: ask for an ETA first, and text the door code only to whoever is coming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the AI is, and isn't
&lt;/h3&gt;

&lt;p&gt;We used &lt;strong&gt;StepFun's step-5-preview&lt;/strong&gt; for three jobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refining the triage record&lt;/li&gt;
&lt;li&gt;rewriting a caregiver's text into one calm sentence to read aloud&lt;/li&gt;
&lt;li&gt;answering caregiver questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each call has a hard deadline and a fallback, because we measured triage at 8–22 s on the day. Nothing waits on the model.&lt;/p&gt;

&lt;p&gt;The rules we held to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The model never sees the door code&lt;/strong&gt; or anyone's phone number. The Q&amp;amp;A only gets a small "incident facts" object.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claims and unlocks are parsed by rules, not the model.&lt;/strong&gt; &lt;code&gt;UNLOCK &amp;lt;code&amp;gt;&lt;/code&gt; is a regex plus an unlock guard: enrolled number, one-time code, 3 tries, and a 10 s signed command.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nothing said on a phone call can unlock anything.&lt;/strong&gt; The voice agent will tell you to text the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a healthcare setting, holding the AI back like this was what made us comfortable demoing it at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went wrong (my favorite part)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. A shared line can't text first.&lt;/strong&gt; Reading Photon's beta docs before writing any code, I found that a &lt;em&gt;shared&lt;/em&gt; iMessage line can't start a conversation. That's awkward for a fall alert. The workaround:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;each caregiver texts the line once before the demo&lt;/li&gt;
&lt;li&gt;the gateway remembers that conversation&lt;/li&gt;
&lt;li&gt;if an alert is blocked anyway, it's held and sent on that caregiver's first message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Real replies silently disappeared.&lt;/strong&gt; My gateway originally only accepted replies sent to &lt;em&gt;the&lt;/em&gt; agent number in our config. On the morning of the demo, tracing showed every real reply landing on a &lt;em&gt;different&lt;/em&gt; number. Photon's shared plan assigns each caregiver their own line. The fix was small: accept replies on any of our project's lines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before: only replies to PHOTON_AGENT_HANDLE counted,&lt;/span&gt;
&lt;span class="c1"&gt;// so every real reply was dropped.&lt;/span&gt;
&lt;span class="c1"&gt;// After: any agent line in our project is ours.&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;receivedBy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;kind&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;agent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The lesson: a stub mode is great for building, but you only learn how a platform really behaves by running it live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Testing a voice check-in means being the person on the floor.&lt;/strong&gt; Much of my night was spent on a teammate's laptop playing the person who fell: answering the check-in with every kind of reply I could think of. Clear answers, hesitant ones, "I'm fine, but my hip hurts", and silence. That's how you feel why the rules matter: "I'm fine, but…" must never cancel an incident, and silence must always escalate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. A bug no test caught.&lt;/strong&gt; All our tests passed, but I suspected the AI calls were competing for one thread pool. I wrote a 15-line reproduction with fake latencies, and it confirmed two problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A burst of answers starved the caregiver-reply rewrite, so the message was read aloud unrewritten.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;last&lt;/em&gt; triage call, the only one whose result would be used, timed out waiting in the queue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We split the pools and limited triage to one call at a time per incident.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. A real &lt;code&gt;UNLOCK&lt;/code&gt; was correctly refused.&lt;/strong&gt; In a live test, a real &lt;code&gt;UNLOCK&lt;/code&gt; text came through Photon after the 600 s unlock window had closed, and the system refused it. Annoying in the moment, and exactly what it should do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon Experience
&lt;/h2&gt;

&lt;p&gt;This was my first hackathon with real hardware. Overnight, the whole system ran on my phone's hotspot, because the venue Wi-Fi wouldn't let our laptop and the Pi see each other.&lt;/p&gt;

&lt;p&gt;What I'll remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reading sponsor docs before writing code&lt;/strong&gt; saved us hours. The shared-line limit would have broken the demo if we'd found it the morning of judging.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The sponsor tables:&lt;/strong&gt; Photon's booth confirmed that phone calls run on an SMS number, which became our escalation call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitching is its own build.&lt;/strong&gt; I worked on our pitch, the demo run-through and the video. Turning a system with a dozen moving parts into two minutes a judge can follow took as much iteration as the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Being honest with judges paid off.&lt;/strong&gt; We said plainly that the latch is simulated, that detection was tuned on bottle drops rather than real falls, and that it's a prototype, not a medical device. The questions we got were about design decisions, not gotchas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Huge thanks to Anmol, who got a QNX Pi talking to an ESP32 over raw USB overnight and got our phone line talking to a voice agent, and to Sakshi, who made all of it make sense to judges. And thanks to StepFun and Espressif for the 2nd-place recognition.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;FirstHour is a hackathon prototype, not a medical device. "Margaret" and all phone numbers are fictional.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>typescript</category>
      <category>mlhacks</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>Great working with the team!</title>
      <dc:creator>Manya Jain</dc:creator>
      <pubDate>Tue, 20 Oct 2026 22:45:55 +0000</pubDate>
      <link>https://dev.to/manyajainrkm/great-working-with-you-4e7n</link>
      <guid>https://dev.to/manyajainrkm/great-working-with-you-4e7n</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p" class="crayons-story__hidden-navigation-link"&gt;FirstHour : 2nd Prize Winners for Espressif and StepFun&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&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="/sakshi_dhariwal_cd325984e" 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%2F4195245%2F63777a9f-c05f-4069-938f-0eca977d5dea.png" alt="sakshi_dhariwal_cd325984e profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/sakshi_dhariwal_cd325984e" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Sakshi Kuldeep Dhariwal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Sakshi Kuldeep Dhariwal
                
                
              
              &lt;div id="story-author-preview-content-4885387" 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="/sakshi_dhariwal_cd325984e" 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%2F4195245%2F63777a9f-c05f-4069-938f-0eca977d5dea.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Sakshi Kuldeep Dhariwal&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/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20&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/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p" id="article-link-4885387"&gt;
          FirstHour : 2nd Prize Winners for Espressif and StepFun
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mlhacks"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mlhacks&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/hackathon"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hackathon&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/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p" 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/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;14&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/sakshi_dhariwal_cd325984e/firsthour-2nd-prize-winners-for-espressif-and-stepfun-583p#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              6&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&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;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
