<?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: Tahira Muhammad</title>
    <description>The latest articles on DEV Community by Tahira Muhammad (@tahiram32).</description>
    <link>https://dev.to/tahiram32</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%2F4022018%2F32ce8041-4a99-4757-a486-4630e34d2326.jpg</url>
      <title>DEV Community: Tahira Muhammad</title>
      <link>https://dev.to/tahiram32</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tahiram32"/>
    <language>en</language>
    <item>
      <title>Squashing an Accidental Node.js Fork Bomb with Sentry</title>
      <dc:creator>Tahira Muhammad</dc:creator>
      <pubDate>Wed, 15 Jul 2026 16:18:28 +0000</pubDate>
      <link>https://dev.to/tahiram32/squashing-an-accidental-nodejs-fork-bomb-with-sentry-1g9b</link>
      <guid>https://dev.to/tahiram32/squashing-an-accidental-nodejs-fork-bomb-with-sentry-1g9b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/bugsmash"&gt;DEV's Summer Bug Smash: Clear the Lineup&lt;/a&gt; powered by &lt;a href="https://sentry.io/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;I'm currently building this project for another hackathon. Basically it's a weather app that checks meteorological APIs for different cities and then fires off background tasks to update usersdashboards whenever there is extreme weather happening in their area.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug Fix or Performance Improvement
&lt;/h2&gt;

&lt;p&gt;I have a GitHub Action that runs an hourly script (weather-sync-orchestrator.ts) to sync all this weather data. But as I added more test users the CI runner started randomly timing out and crashing.&lt;/p&gt;

&lt;p&gt;Turns out I accidentally built a fork bomb in Node.js. My script was using a recursive setTimeout setup to try and throttle the API requests. Every time it processed a user it fired off overlapping timers which ended up starving the Node.js event loop and eating all the memory until the runner died.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Here is the exact fix and where I set up Sentry&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%2Fzaymeooiew2o135ifne3.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%2Fzaymeooiew2o135ifne3.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;• Fix: Resolve event loop starvation and fork bomb in the orchestrator &lt;a href="https://github.com/Tahiram32/living-website-meteorological-engine/commit/800c244" rel="noopener noreferrer"&gt;https://github.com/Tahiram32/living-website-meteorological-engine/commit/800c244&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%2Fybse00jb7gg94d5qzr5u.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%2Fybse00jb7gg94d5qzr5u.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;• Feat: Add Sentry monitoring to orchestrator and frontend &lt;a href="https://github.com/Tahiram32/living-website-meteorological-engine/commit/485e344" rel="noopener noreferrer"&gt;https://github.com/Tahiram32/living-website-meteorological-engine/commit/485e344&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Improvements
&lt;/h2&gt;

&lt;p&gt;I completely removed the weird setTimeout mess. I replaced it with a much cleaner loop that just uses await new Promise*&lt;em&gt;(r =&amp;gt; setTimeout(r, ms))&lt;/em&gt;* to pause execution.&lt;/p&gt;

&lt;p&gt;Now instead of flooding the queue with timers it properly pauses and respects my concurrency limits and API rate limits synchronously. The script runs super smooth now and the GitHub actions haven't crashed since.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus: Sentry Seer AI Autofix in Action!&lt;/strong&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%2Fv89fyiw9jhbzr3srgowz.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%2Fv89fyiw9jhbzr3srgowz.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After setting up the React SDK I added a manual "Break the world" error button to test the frontend tracing. Sentry not only instantly caught the error and diagnosed it correctly, but the Sentry Bot (Seer AI) autonomously opened a Pull Request ( #1 ) on my GitHub repository to safely strip the test component out of Storefront.tsx  before it could hit production. It literally cleaned up my testing code for me!&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Use of Sentry
&lt;/h2&gt;

&lt;p&gt;To figure out why the CI was crashing in the first place I hooked up the &lt;strong&gt;@sentry/node&lt;/strong&gt; and &lt;strong&gt;@sentry/profiling-node&lt;/strong&gt; SDKs right into my backend script.&lt;/p&gt;

&lt;p&gt;The tools were a lifesaver here. By setting the profilesSampleRate  to 1.0, I was able to actually visualize the CPU spiking and see the event loop getting starved right in the Sentry dashboard before the runner died. Once I saw that the bug was obvious. I also threw the React SDK into my frontend (main.tsx) so I can keep an eye on things moving forward.&lt;/p&gt;

</description>
      <category>bugsmash</category>
      <category>devchallenge</category>
      <category>productivity</category>
      <category>devbugsmash</category>
    </item>
    <item>
      <title>Squashing an Accidental Node.js Fork Bomb with Sentry</title>
      <dc:creator>Tahira Muhammad</dc:creator>
      <pubDate>Wed, 15 Jul 2026 04:30:47 +0000</pubDate>
      <link>https://dev.to/tahiram32/squashing-an-accidental-nodejs-fork-bomb-with-sentry-23jp</link>
      <guid>https://dev.to/tahiram32/squashing-an-accidental-nodejs-fork-bomb-with-sentry-23jp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/bugsmash"&gt;DEV's Summer Bug Smash: Clear the Lineup&lt;/a&gt; powered by &lt;a href="https://sentry.io/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;I'm currently building this project for another hackathon. Basically it's a weather app that checks meteorological APIs for different cities and then fires off background tasks to update usersdashboards whenever there is extreme weather happening in their area.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug Fix or Performance Improvement
&lt;/h2&gt;

&lt;p&gt;I have a GitHub Action that runs an hourly script (weather-sync-orchestrator.ts) to sync all this weather data. But as I added more test users the CI runner started randomly timing out and crashing.&lt;/p&gt;

&lt;p&gt;Turns out I accidentally built a fork bomb in Node.js. My script was using a recursive setTimeout setup to try and throttle the API requests. Every time it processed a user it fired off overlapping timers which ended up starving the Node.js event loop and eating all the memory until the runner died.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Here is the exact fix and where I set up Sentry&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%2Fzaymeooiew2o135ifne3.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%2Fzaymeooiew2o135ifne3.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;• Fix: Resolve event loop starvation and fork bomb in the orchestrator &lt;a href="https://github.com/Tahiram32/living-website-meteorological-engine/commit/800c244" rel="noopener noreferrer"&gt;https://github.com/Tahiram32/living-website-meteorological-engine/commit/800c244&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%2Fybse00jb7gg94d5qzr5u.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%2Fybse00jb7gg94d5qzr5u.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;• Feat: Add Sentry monitoring to orchestrator and frontend &lt;a href="https://github.com/Tahiram32/living-website-meteorological-engine/commit/485e344" rel="noopener noreferrer"&gt;https://github.com/Tahiram32/living-website-meteorological-engine/commit/485e344&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Improvements
&lt;/h2&gt;

&lt;p&gt;I completely removed the weird setTimeout mess. I replaced it with a much cleaner loop that just uses await new Promise*&lt;em&gt;(r =&amp;gt; setTimeout(r, ms))&lt;/em&gt;* to pause execution.&lt;/p&gt;

&lt;p&gt;Now instead of flooding the queue with timers it properly pauses and respects my concurrency limits and API rate limits synchronously. The script runs super smooth now and the GitHub actions haven't crashed since.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus: Sentry Seer AI Autofix in Action!&lt;/strong&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%2Fv89fyiw9jhbzr3srgowz.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%2Fv89fyiw9jhbzr3srgowz.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After setting up the React SDK I added a manual "Break the world" error button to test the frontend tracing. Sentry not only instantly caught the error and diagnosed it correctly, but the Sentry Bot (Seer AI) autonomously opened a Pull Request ( #1 ) on my GitHub repository to safely strip the test component out of Storefront.tsx  before it could hit production. It literally cleaned up my testing code for me!&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Use of Sentry
&lt;/h2&gt;

&lt;p&gt;To figure out why the CI was crashing in the first place I hooked up the &lt;strong&gt;@sentry/node&lt;/strong&gt; and &lt;strong&gt;@sentry/profiling-node&lt;/strong&gt; SDKs right into my backend script.&lt;/p&gt;

&lt;p&gt;The tools were a lifesaver here. By setting the profilesSampleRate  to 1.0, I was able to actually visualize the CPU spiking and see the event loop getting starved right in the Sentry dashboard before the runner died. Once I saw that the bug was obvious. I also threw the React SDK into my frontend (main.tsx) so I can keep an eye on things moving forward.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
      <category>productivity</category>
      <category>devbugsmash</category>
    </item>
    <item>
      <title>How Im building an Autonomous "Invisible SaaS" that Replaces a $40k Receptionist</title>
      <dc:creator>Tahira Muhammad</dc:creator>
      <pubDate>Tue, 14 Jul 2026 00:33:34 +0000</pubDate>
      <link>https://dev.to/tahiram32/how-im-building-an-autonomous-invisible-saas-that-replaces-a-40k-receptionist-57cn</link>
      <guid>https://dev.to/tahiram32/how-im-building-an-autonomous-invisible-saas-that-replaces-a-40k-receptionist-57cn</guid>
      <description>&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%2Fdwvosr1iklvl8t4g0nhc.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%2Fdwvosr1iklvl8t4g0nhc.png" alt=" " width="799" height="463"&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%2F8smds6qdtth9xb9hy4k8.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%2F8smds6qdtth9xb9hy4k8.png" alt=" " width="799" height="463"&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%2Fws2si2g9asgqu42olrsc.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%2Fws2si2g9asgqu42olrsc.png" alt=" " width="799" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every local business owner knows the pain whether you're under a sink, in the middle of a client shift, or handling a cafe rush and the phone rings. &lt;/p&gt;

&lt;p&gt;You miss the call and you just lost a $500 job. &lt;/p&gt;

&lt;p&gt;I’m building the solution. For the next 34 days, Im competing live in public for the $2M hackathon BuildWithGeminiXPRIZE and FutureVisionXPRIZE&lt;/p&gt;

&lt;p&gt;Here is exactly how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It Answers the Phone. Customers tap a mic on the website and just talk. The AI agent negotiates, checks the owner's real Google Calendar, and books the slot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It Watches the Weather. A backend cron job constantly pulls the local forecast. If a massive storm rolls in, the backend instantly rewrites the live website to push emergency services to the top of the page. The owner doesn't lift a finger.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It Trades Leads. If a business's calendar is fully booked the AI uses Geohashing in Firestore to autonomously find a trusted partner within 10 miles. It pre authorizes a finder's fee, texts the partner the job details, and tells the customer help is on the way.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are only 34 days left in this 90 day Google Studio AI competition to show real revenue and compete for the $2M. As a cybersecurity student building this from scratch I’m not here to post polished marketing updates.&lt;/p&gt;

&lt;p&gt;I’ll be posting the weirdest bugs that break my code and the actual revenue numbers as they hit the dashboard.&lt;/p&gt;

&lt;p&gt;Follow the build on Instagram:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/p/DawAwkhj9EN/?utm_source=ig_web_copy_link&amp;amp;igsh=NTc4MTIwNjQ2YQ==" rel="noopener noreferrer"&gt;The Living Website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>nextjs</category>
      <category>googlecloud</category>
    </item>
  </channel>
</rss>
