<?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: Urooj Fatima</title>
    <description>The latest articles on DEV Community by Urooj Fatima (@codewithurooj).</description>
    <link>https://dev.to/codewithurooj</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%2F3824216%2Fe8663f0a-937d-4b98-8c40-918afc62c0c1.png</url>
      <title>DEV Community: Urooj Fatima</title>
      <link>https://dev.to/codewithurooj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codewithurooj"/>
    <language>en</language>
    <item>
      <title>AI Isn't Smart Without Data: Why Every AI Engineer Should Understand IoT</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Sat, 25 Jul 2026 08:57:18 +0000</pubDate>
      <link>https://dev.to/codewithurooj/ai-isnt-smart-without-data-why-every-ai-engineer-should-understand-iot-230j</link>
      <guid>https://dev.to/codewithurooj/ai-isnt-smart-without-data-why-every-ai-engineer-should-understand-iot-230j</guid>
      <description>&lt;p&gt;Artificial Intelligence is everywhere.&lt;/p&gt;

&lt;p&gt;We use AI to generate images, write code, recommend movies, detect diseases, and even drive cars.&lt;/p&gt;

&lt;p&gt;But have you ever stopped to ask a simple question?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Where does AI get its data?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question led me to explore the &lt;strong&gt;Internet of Things (IoT)&lt;/strong&gt;, and it completely changed how I think about building intelligent systems.&lt;/p&gt;

&lt;p&gt;Recently, I completed &lt;strong&gt;"IoT for Everyone"&lt;/strong&gt; through Coursera under the Higher Education Commission (HEC), Pakistan. More than the certificate, the course helped me understand the relationship between IoT and AI.&lt;/p&gt;

&lt;p&gt;Let's break it down.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is IoT?
&lt;/h1&gt;

&lt;p&gt;The &lt;strong&gt;Internet of Things (IoT)&lt;/strong&gt; is a network of physical devices that collect and exchange data over the internet.&lt;/p&gt;

&lt;p&gt;These devices include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⌚ Smartwatches&lt;/li&gt;
&lt;li&gt;🌡️ Environmental sensors&lt;/li&gt;
&lt;li&gt;🏠 Smart home devices&lt;/li&gt;
&lt;li&gt;🚜 Agricultural sensors&lt;/li&gt;
&lt;li&gt;🏭 Industrial machines&lt;/li&gt;
&lt;li&gt;🚦 Traffic monitoring systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their primary job isn't to "think."&lt;/p&gt;

&lt;p&gt;Their job is to &lt;strong&gt;observe the real world&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  The AI Pipeline Starts Earlier Than Most People Think
&lt;/h1&gt;

&lt;p&gt;Many beginners imagine AI 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;Dataset
    ↓
Train Model
    ↓
Predictions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But in the real world, there's an important step before the dataset even exists.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sensors
    ↓
IoT Devices
    ↓
Data Collection
    ↓
Cloud Storage
    ↓
Data Cleaning
    ↓
Machine Learning
    ↓
Predictions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without data collection, there is no dataset.&lt;/p&gt;

&lt;p&gt;Without a dataset, there is no AI.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Real Example
&lt;/h1&gt;

&lt;p&gt;Imagine a smartwatch monitoring your heart rate.&lt;/p&gt;

&lt;h3&gt;
  
  
  IoT
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Collects heart rate&lt;/li&gt;
&lt;li&gt;Measures oxygen levels&lt;/li&gt;
&lt;li&gt;Tracks activity&lt;/li&gt;
&lt;li&gt;Sends data to the cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Detects unusual patterns&lt;/li&gt;
&lt;li&gt;Predicts health risks&lt;/li&gt;
&lt;li&gt;Generates alerts&lt;/li&gt;
&lt;li&gt;Supports medical decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither technology replaces the other.&lt;/p&gt;

&lt;p&gt;They complement each other.&lt;/p&gt;




&lt;h1&gt;
  
  
  IoT + AI Across Industries
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Industry&lt;/th&gt;
&lt;th&gt;IoT Collects&lt;/th&gt;
&lt;th&gt;AI Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Healthcare&lt;/td&gt;
&lt;td&gt;Patient vitals&lt;/td&gt;
&lt;td&gt;Detects anomalies and predicts risks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agriculture&lt;/td&gt;
&lt;td&gt;Soil moisture, weather&lt;/td&gt;
&lt;td&gt;Optimizes irrigation and crop management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manufacturing&lt;/td&gt;
&lt;td&gt;Machine sensor data&lt;/td&gt;
&lt;td&gt;Predicts equipment failures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Cities&lt;/td&gt;
&lt;td&gt;Traffic and infrastructure data&lt;/td&gt;
&lt;td&gt;Optimizes traffic flow and energy usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Homes&lt;/td&gt;
&lt;td&gt;Temperature and occupancy&lt;/td&gt;
&lt;td&gt;Automates comfort and improves efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  My Biggest Takeaway
&lt;/h1&gt;

&lt;p&gt;One sentence stayed with me throughout the course:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IoT gives AI its eyes and ears.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI gives IoT its brain.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The more I learn, the more I realize that building AI isn't only about choosing the right algorithm.&lt;/p&gt;

&lt;p&gt;It's also about understanding where the data comes from, how it's collected, and how reliable it is.&lt;/p&gt;

&lt;p&gt;That's a perspective I didn't fully appreciate before exploring IoT.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;If you're learning Machine Learning or Artificial Intelligence, don't overlook IoT.&lt;/p&gt;

&lt;p&gt;Understanding how data is generated helps you understand AI at a much deeper level.&lt;/p&gt;

&lt;p&gt;Learning AI isn't just about training better models.&lt;/p&gt;

&lt;p&gt;It's about understanding the entire pipeline—from real-world sensors to intelligent decisions.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;I'd love to hear your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What technology do you think every AI engineer should learn alongside AI?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>iot</category>
      <category>machinelearning</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>A CORS Mismatch That Broke DocMind AI on a Fresh Netlify Deploy</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Thu, 23 Jul 2026 10:35:52 +0000</pubDate>
      <link>https://dev.to/codewithurooj/a-cors-mismatch-that-broke-docmind-ai-on-a-fresh-netlify-deploy-published-79c</link>
      <guid>https://dev.to/codewithurooj/a-cors-mismatch-that-broke-docmind-ai-on-a-fresh-netlify-deploy-published-79c</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;&lt;a href="https://docmindaichatbot.netlify.app" rel="noopener noreferrer"&gt;DocMind AI&lt;/a&gt; is a RAG-based document chatbot — you upload documents and ask questions about them, and it retrieves relevant context and generates grounded answers. The stack: FastAPI backend, Groq LLaMA 3.3 for generation, Pinecone for vector storage, HuggingFace embeddings, and a Netlify-hosted frontend, with voice input/output built on top.&lt;/p&gt;

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

&lt;p&gt;The backend already had CORS configured correctly in principle — &lt;code&gt;CORSMiddleware&lt;/code&gt; was in place, scoped to a specific origin rather than a wildcard, with &lt;code&gt;allow_credentials=False&lt;/code&gt; and an explicit method/header allowlist. That part was never the problem.&lt;/p&gt;

&lt;p&gt;The actual bug was a domain mismatch. The frontend had been redeployed to a new Netlify site, &lt;code&gt;docmindai-chatbot.netlify.app&lt;/code&gt; — note the hyphen — while the backend's &lt;code&gt;allow_origins&lt;/code&gt; list still only contained the old domain, &lt;code&gt;docmindaichatbot.netlify.app&lt;/code&gt;, without the hyphen. Two names that look almost identical at a glance, but the browser treats them as completely different origins. Every request from the new deployment was blocked before it reached the API, while the old domain kept working fine — which made it easy to miss at first, since "the app works" and "the app works from the URL I'm actually testing" turned out to be different claims.&lt;/p&gt;

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

&lt;p&gt;Commit: &lt;a href="https://github.com/uroojbuilds/Docmind-Ai/commit/291e6d85541181e9ae388b8d2285a766089e93c5" rel="noopener noreferrer"&gt;291e6d8 — Update CORS to allow new Netlify domain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before:&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;allow_origins&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docmindaichatbot.netlify.app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After:&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;allow_origins&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docmindai-chatbot.netlify.app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docmindaichatbot.netlify.app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full block, unchanged parts included for context:&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;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_middleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;CORSMiddleware&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;allow_origins&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docmindai-chatbot.netlify.app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docmindaichatbot.netlify.app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;allow_credentials&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;allow_methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OPTIONS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;allow_headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accept&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/uroojbuilds/Docmind-Ai" rel="noopener noreferrer"&gt;uroojbuilds/Docmind-Ai&lt;/a&gt;&lt;br&gt;
Live demo: &lt;a href="https://docmindai-chatbot.netlify.app/" rel="noopener noreferrer"&gt;docmindai-chatbot.netlify.app&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The fix itself is a one-line addition, but the useful part was figuring out it was a CORS problem specifically, and not a broken deploy. The browser's network tab showed requests failing with no &lt;code&gt;Access-Control-Allow-Origin&lt;/code&gt; header, while the backend logs showed nothing at all for those requests — which is the classic CORS signature: the browser blocks the request before your server code ever runs, so there's nothing to catch in a &lt;code&gt;try/except&lt;/code&gt; or print statement. If the API were actually down, curling it directly would have failed too; instead, curl worked fine and only the browser call from the new Netlify URL failed, which pointed straight at an origin allowlist problem.&lt;/p&gt;

&lt;p&gt;Rather than loosen the config to &lt;code&gt;allow_origins=["*"]&lt;/code&gt; — which would have made the symptom disappear immediately — I kept the existing narrow, explicit list and just added the missing domain. The backend already had &lt;code&gt;allow_credentials=False&lt;/code&gt; and a tight &lt;code&gt;allow_methods&lt;/code&gt;/&lt;code&gt;allow_headers&lt;/code&gt; list, which is good practice for a public API even without cookies in play, and a one-off deploy mismatch isn't a reason to give that up for convenience.&lt;/p&gt;

&lt;p&gt;The lesson that's stuck with me: Netlify doesn't guarantee it'll reuse the exact site name you expect on every deploy, and a CORS allowlist has to track the &lt;em&gt;actual&lt;/em&gt; deployed origin, not the one you assumed you'd get. Now when I redeploy the frontend, checking the live URL against &lt;code&gt;allow_origins&lt;/code&gt; is one of the first things I verify before calling it done.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
    </item>
    <item>
      <title>PassionDNA AI: Beyond Skills. Beyond Resumes.</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Sun, 12 Jul 2026 06:46:53 +0000</pubDate>
      <link>https://dev.to/codewithurooj/passiondna-ai-beyond-skills-beyond-resumes-7ei</link>
      <guid>https://dev.to/codewithurooj/passiondna-ai-beyond-skills-beyond-resumes-7ei</guid>
      <description>&lt;p&gt;This is a submission for Weekend Challenge: Passion Edition&lt;/p&gt;

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

&lt;p&gt;Most career platforms evaluate what you've done.&lt;/p&gt;

&lt;p&gt;I wanted to build something that explores why you do it.&lt;/p&gt;

&lt;p&gt;PassionDNA AI is an AI-powered self-discovery platform that combines:&lt;/p&gt;

&lt;p&gt;GitHub portfolio analysis&lt;br&gt;
Personalized AI interview&lt;br&gt;
LLM reasoning&lt;br&gt;
Evidence-backed passion analysis&lt;/p&gt;

&lt;p&gt;Instead of asking users to complete another personality quiz, PassionDNA compares what they say they're passionate about with what they've actually built.&lt;/p&gt;

&lt;p&gt;The final result is an explainable PassionDNA Report containing:&lt;/p&gt;

&lt;p&gt;Passion Confidence Score&lt;br&gt;
Passion Categories&lt;br&gt;
Hidden Strengths&lt;br&gt;
Growth Opportunities&lt;br&gt;
GitHub Evidence&lt;br&gt;
AI Summary&lt;br&gt;
Personalized Challenge Question&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Help developers discover whether their daily work truly reflects what they love building.&lt;/p&gt;

&lt;p&gt;Demo&lt;br&gt;
🌐 Live App&lt;/p&gt;

&lt;p&gt;&lt;a href="https://passiondna-ai-havgehgxkzqrjyeqg4g2bs.streamlit.app/" rel="noopener noreferrer"&gt;https://passiondna-ai-havgehgxkzqrjyeqg4g2bs.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 GitHub Repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/uroojbuilds/passiondna-ai.git" rel="noopener noreferrer"&gt;https://github.com/uroojbuilds/passiondna-ai.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screenshots&lt;br&gt;
Landing Page&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%2Faluk3lh4c7t299m1odwc.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%2Faluk3lh4c7t299m1odwc.png" alt=" " width="800" height="385"&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%2F7w1pth32swnx44x4fbx8.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%2F7w1pth32swnx44x4fbx8.png" alt=" " width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application introduces the PassionDNA concept and explains how GitHub activity, AI interviews, and reasoning combine into one report.&lt;/p&gt;

&lt;p&gt;User Information&lt;/p&gt;

&lt;p&gt;Users provide:&lt;/p&gt;

&lt;p&gt;GitHub username&lt;br&gt;
About Me&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%2Fsa46xnzr38mpnlgfguk8.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%2Fsa46xnzr38mpnlgfguk8.png" alt=" " width="799" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This information personalizes the AI interview.&lt;/p&gt;

&lt;p&gt;AI Passion Interview&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%2F29bfek49fg0zbdbf2orx.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%2F29bfek49fg0zbdbf2orx.png" alt=" " width="799" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of generic personality questions, Gemini generates five thoughtful interview questions designed to reveal genuine motivation.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;Which project made you lose track of time?&lt;br&gt;
What problem would you solve even if nobody paid you?&lt;br&gt;
What impact do you want your work to have?&lt;br&gt;
Personalized Questions&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%2Ft4fasb7f8t4sngtcyrhp.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%2Ft4fasb7f8t4sngtcyrhp.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every interview focuses on real experiences rather than multiple-choice answers, making the final report much more authentic.&lt;/p&gt;

&lt;p&gt;PassionDNA Report&lt;/p&gt;

&lt;p&gt;The report includes:&lt;/p&gt;

&lt;p&gt;Passion Confidence&lt;br&gt;
Passion Categories&lt;br&gt;
Visual Analytics&lt;br&gt;
Evidence-Based Insights&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%2Fsm9h6i885qklnlpitoi7.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%2Fsm9h6i885qklnlpitoi7.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every recommendation is backed by GitHub evidence instead of vague personality descriptions.&lt;/p&gt;

&lt;p&gt;Users receive:&lt;/p&gt;

&lt;p&gt;Hidden Strengths&lt;br&gt;
Growth Opportunities&lt;br&gt;
Evidence Behind Every Insight&lt;br&gt;
AI Summary&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%2Fi22p3pbx9ak6m5gmjy41.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%2Fi22p3pbx9ak6m5gmjy41.png" alt=" " width="800" height="599"&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%2Ftklsynvbahvszxxqhzqo.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%2Ftklsynvbahvszxxqhzqo.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, Gemini creates an explainable summary of the user's engineering profile and ends with a personalized challenge designed to encourage future growth.&lt;/p&gt;

&lt;p&gt;How I Built It&lt;br&gt;
Tech Stack&lt;br&gt;
Python&lt;br&gt;
Streamlit&lt;br&gt;
Google Gemini API&lt;br&gt;
GitHub REST API&lt;br&gt;
HTML/CSS&lt;br&gt;
Custom Components&lt;br&gt;
Workflow&lt;br&gt;
GitHub Username&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
GitHub API Analysis&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
About Me Analysis&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Gemini Generates&lt;br&gt;
5 Personalized Questions&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Interview Answers&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Gemini Reasoning&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
PassionDNA Report&lt;br&gt;
Key Features&lt;br&gt;
🧠 AI Interview&lt;/p&gt;

&lt;p&gt;Google Gemini dynamically generates thoughtful interview questions based on the user's GitHub profile and personal description.&lt;/p&gt;

&lt;p&gt;💻 GitHub Portfolio Analysis&lt;/p&gt;

&lt;p&gt;The app analyzes public repositories to identify:&lt;/p&gt;

&lt;p&gt;Languages&lt;br&gt;
Repository Topics&lt;br&gt;
Technologies&lt;br&gt;
Project Patterns&lt;br&gt;
🔍 Explainable AI&lt;/p&gt;

&lt;p&gt;Rather than producing a random score, every conclusion is supported by GitHub evidence and interview responses.&lt;/p&gt;

&lt;p&gt;📊 PassionDNA Dashboard&lt;/p&gt;

&lt;p&gt;The final report includes:&lt;/p&gt;

&lt;p&gt;Passion Confidence&lt;br&gt;
Passion Categories&lt;br&gt;
Verification Summary&lt;br&gt;
Hidden Strengths&lt;br&gt;
Growth Opportunities&lt;br&gt;
AI Summary&lt;br&gt;
🛡 Graceful Fallbacks&lt;/p&gt;

&lt;p&gt;If Gemini is unavailable, the application automatically switches to predefined interview questions and rule-based report generation, ensuring the demo continues to work.&lt;/p&gt;

&lt;p&gt;Biggest Challenge&lt;/p&gt;

&lt;p&gt;One of the hardest parts was ensuring the application never failed during the user journey.&lt;/p&gt;

&lt;p&gt;Because AI APIs can occasionally fail due to limits or network issues, I implemented fallback logic so the interview and report generation still work even without a successful Gemini response.&lt;/p&gt;

&lt;p&gt;This made the application much more reliable for demonstrations.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;This project taught me that explainability matters just as much as intelligence.&lt;/p&gt;

&lt;p&gt;Users trust AI more when it can clearly show why it reached a conclusion instead of simply providing a score.&lt;/p&gt;

&lt;p&gt;Combining structured GitHub evidence with conversational AI created a much more transparent experience than a traditional personality quiz.&lt;/p&gt;

&lt;p&gt;Future Improvements&lt;/p&gt;

&lt;p&gt;If I continue developing PassionDNA AI, I would like to add:&lt;/p&gt;

&lt;p&gt;LinkedIn integration&lt;br&gt;
Resume analysis&lt;br&gt;
AI voice interview&lt;br&gt;
Personality evolution over time&lt;br&gt;
Team PassionDNA comparison&lt;br&gt;
Career roadmap generation&lt;br&gt;
Multi-agent reasoning&lt;br&gt;
Deployment recommendations&lt;br&gt;
Prize Categories&lt;/p&gt;

&lt;p&gt;✅ Best Use of Google AI&lt;/p&gt;

&lt;p&gt;Google Gemini powers:&lt;/p&gt;

&lt;p&gt;Personalized interview generation&lt;br&gt;
AI reasoning&lt;br&gt;
Passion report generation&lt;br&gt;
Final summaries&lt;br&gt;
Personalized challenge questions&lt;/p&gt;

&lt;p&gt;Building PassionDNA AI was an exciting opportunity to explore how AI can move beyond answering questions and instead help people better understand themselves. I hope this project demonstrates how LLMs can be used not just for productivity, but for meaningful self-discovery.&lt;/p&gt;

&lt;p&gt;Thank you for reading! 🚀&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building a Real-Time Weapon Detection System with YOLOv8</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Mon, 06 Jul 2026 10:33:08 +0000</pubDate>
      <link>https://dev.to/codewithurooj/building-a-real-time-weapon-detection-system-with-yolov8-3323</link>
      <guid>https://dev.to/codewithurooj/building-a-real-time-weapon-detection-system-with-yolov8-3323</guid>
      <description>&lt;p&gt;Over the past few weeks I've been working on a computer vision side project: a real-time weapon detection system that watches a live webcam feed and raises an alarm the moment it spots something dangerous. Here's how it works, what I learned, and where it still falls short.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Most weapon detection demos I found online either worked on static images only, or used a generic pretrained model that wasn't great at spotting weapons specifically (understandably — COCO, the dataset most YOLO models are pretrained on, only has one weapon-adjacent class: knife).&lt;/p&gt;

&lt;p&gt;I wanted something that could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect a wider range of weapons, not just knives&lt;/li&gt;
&lt;li&gt;Run on a live webcam feed, not just static images&lt;/li&gt;
&lt;li&gt;Actually &lt;em&gt;alert&lt;/em&gt; someone, not just silently label a frame&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The approach
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Custom-trained model.&lt;/strong&gt; I trained a YOLOv8 model from scratch on a 9-class weapon dataset:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Automatic Rifle&lt;/code&gt;, &lt;code&gt;Bazooka&lt;/code&gt;, &lt;code&gt;Grenade Launcher&lt;/code&gt;, &lt;code&gt;Handgun&lt;/code&gt;, &lt;code&gt;Knife&lt;/code&gt;, &lt;code&gt;Shotgun&lt;/code&gt;, &lt;code&gt;SMG&lt;/code&gt;, &lt;code&gt;Sniper&lt;/code&gt;, &lt;code&gt;Sword&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dual-model detection.&lt;/strong&gt; Interestingly, the pretrained YOLOv8 COCO model turned out to be &lt;em&gt;better&lt;/em&gt; at detecting knives specifically than my custom model in some lighting conditions (probably because it was trained on a much larger and more varied dataset). So the final pipeline runs both models per frame:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The custom model for the 9 weapon classes&lt;/li&gt;
&lt;li&gt;The pretrained COCO model, filtered to just class 43 (knife)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and merges the detections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-time webcam loop.&lt;/strong&gt; Using OpenCV to capture frames from the webcam, run both models, draw bounding boxes with the class name and confidence score, and display a red "🚨 WEAPON DETECTED!" banner when something's found (or a green "✅ Safe" banner when the frame is clear).&lt;/p&gt;

&lt;h2&gt;
  
  
  The annoying part: the alarm sound
&lt;/h2&gt;

&lt;p&gt;This is the bit that actually took the longest to get right. My first version played a beep sound synchronously every time a weapon was detected:&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;if&lt;/span&gt; &lt;span class="n"&gt;weapon_detected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;winsound&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Beep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;em&gt;works&lt;/em&gt;, but it freezes the entire video feed for the duration of the beep — because &lt;code&gt;winsound.Beep&lt;/code&gt; is blocking. With a weapon in frame for several seconds, the feed would stutter constantly as it kept re-triggering the beep on every processed frame.&lt;/p&gt;

&lt;p&gt;The fix was to run the alarm on a background thread, and add simple state tracking so it only triggers once per "detection event" rather than once per frame:&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;threading&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;play_alarm&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;winsound&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Beep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;weapon_detected&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;currently_alarming&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;threading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;play_alarm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daemon&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;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;currently_alarming&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;weapon_detected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;currently_alarming&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Small fix, but it was the difference between a genuinely usable live demo and a laggy mess.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Here's the live detection in action — a knife detected with 50% confidence, bounding box drawn in real time:&lt;/p&gt;

&lt;p&gt;![Live weapon detection]&lt;br&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%2Fwppk6ju00dylgn9bs3of.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%2Fwppk6ju00dylgn9bs3of.png" alt=" " width="790" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the terminal-side alerting, showing detections across a session with confidence scores and the "weapon cleared" state:&lt;/p&gt;

&lt;p&gt;![Terminal alerts]&lt;br&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%2Fn28qa6e1q761h1lx3n6z.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%2Fn28qa6e1q761h1lx3n6z.png" alt=" " width="800" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Confidence scores on some classes (knife especially) are on the lower side — 30-50% in imperfect lighting. It works, but it's not something I'd trust for an actual security deployment without a lot more training data and validation.&lt;/li&gt;
&lt;li&gt;It's webcam-only right now — no multi-camera support, no persistence/logging of detection events beyond the console.&lt;/li&gt;
&lt;li&gt;The dataset is relatively small for a 9-class problem; some classes likely need more examples to generalize well.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'd like to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand the training dataset, especially for the weaker classes&lt;/li&gt;
&lt;li&gt;Add proper event logging (timestamped detections saved to a file/database instead of just console output)&lt;/li&gt;
&lt;li&gt;Experiment with a lighter-weight model for better real-time FPS&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The full code is on GitHub if you want to look through it or try it yourself:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/uroojbuilds/Computer-Vision/tree/main/weapon-detection" rel="noopener noreferrer"&gt;github.com/uroojbuilds/Computer-Vision/tree/main/weapon-detection&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built with Python, &lt;a href="https://github.com/ultralytics/ultralytics" rel="noopener noreferrer"&gt;Ultralytics YOLOv8&lt;/a&gt;, and OpenCV.&lt;/p&gt;

&lt;p&gt;If you've worked on anything similar — especially around improving low-confidence detections or handling audio/video threading issues — I'd love to hear how you approached it.&lt;/p&gt;

</description>
      <category>computervision</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>opencv</category>
    </item>
    <item>
      <title>Code not working." -&gt; Changes a random line -&gt; It works. 🤡 (The Dev Life)</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Sat, 16 May 2026 17:06:02 +0000</pubDate>
      <link>https://dev.to/codewithurooj/code-not-working-changes-a-random-line-it-works-the-dev-life-8p6</link>
      <guid>https://dev.to/codewithurooj/code-not-working-changes-a-random-line-it-works-the-dev-life-8p6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Code not working.”&lt;/p&gt;

&lt;p&gt;Me: &lt;em&gt;changes one random line, shifts an indentation, or restarts VS Code&lt;/em&gt; 🤡&lt;/p&gt;

&lt;p&gt;Suddenly everything works. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the developer life. 💻😭&lt;/p&gt;

&lt;p&gt;Jokes aside, one thing I’m slowly realizing as I dive deeper into building tech is that programming is less about being perfect and more about being &lt;strong&gt;persistent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Behind every working project, clean UI, or trained model are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Countless cryptic errors&lt;/li&gt;
&lt;li&gt;📝 Confusing documentation (or worse, no documentation)&lt;/li&gt;
&lt;li&gt;⏰ Debugging at random hours of the night&lt;/li&gt;
&lt;li&gt;🤯 Moments where you feel completely stuck and question your career choices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But that feeling when your code finally runs successfully and the terminal shows &lt;code&gt;Process finished with exit code 0&lt;/code&gt;? &lt;strong&gt;Absolutely worth it.&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;p&gt;Recently, I’ve been heavily exploring Python, AI, and Machine Learning—building real-world projects and learning step-by-step. There’s still a massive mountain to climb, but every resolved bug makes the journey more interesting. &lt;/p&gt;

&lt;p&gt;The best part about tech is that no matter where you start or what your background is, consistency eventually shows results. 🌱&lt;/p&gt;

&lt;p&gt;So to everyone currently struggling with a weird bug, a broken pipeline, or a sudden wave of imposter syndrome: &lt;strong&gt;keep building.&lt;/strong&gt; Your progress is happening even when it doesn’t feel like it. ✨&lt;/p&gt;




&lt;h3&gt;
  
  
  Let's talk! 👇
&lt;/h3&gt;

&lt;p&gt;Developers — what’s the funniest, most painful, or most ridiculous bug you’ve ever faced? Was it a missing comma, a typo, or something hidden deep in the dependency hell? Let's pain-share in the comments! &lt;/p&gt;

&lt;h1&gt;
  
  
  programming #devlife #python #machinelearning #beginners
&lt;/h1&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Meet Your New AI Study Companion!</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Wed, 06 May 2026 14:01:59 +0000</pubDate>
      <link>https://dev.to/codewithurooj/meet-your-new-ai-study-companion-4nej</link>
      <guid>https://dev.to/codewithurooj/meet-your-new-ai-study-companion-4nej</guid>
      <description>&lt;p&gt;Exciting Project Update: Meet Your New AI Study Companion!&lt;br&gt;
Have you ever felt overwhelmed by a massive syllabus with exams just around the corner? Figuring out where to start and how to manage your time is often a bigger challenge than the subjects themselves. ❌ The Problem:&lt;br&gt;
Most students struggle with "Planning Paralysis." Generic schedules don't account for individual weak areas, leading to burnout and inefficient study sessions where students waste time searching for practice materials instead of actually learning.&lt;br&gt;
My Approach (The Methodology):&lt;br&gt;
To bridge this gap, I developed StudyPlanner AI.&lt;br&gt;
Using Python and Streamlit, I built an intelligent agent that takes your specific constraints—subjects, exam dates, weak topics, and daily available hours—and processes them into a data-driven, optimized roadmap.&lt;br&gt;
✅ The Solution: How it Transforms Your Learning?This isn't just a static calendar; it’s a complete study ecosystem:Smart Scheduling: Generates a daily breakdown based on your specific exam deadline. Weak Topic Focus: Specifically identifies and prioritizes the concepts you find difficult, like "Newton's Laws," providing strategies to master them. Actionable Insights: Includes "Topic-Wise Tips &amp;amp; Tricks," core concepts, and memory techniques like mnemonics.&lt;br&gt;
Active Recall: Automatically provides practice questions for each topic to solidify your understanding. Persistent &amp;amp; Portable: You can save your history to access previous plans anytime and export your schedule as a professional PDF.&lt;br&gt;
Future Scope:&lt;br&gt;
I am planning to integrate a dedicated 'Focus Mode', deep progress analytics, and daily tracking to help students stay even more disciplined. I would love for you to try this tool and share your feedback in the comments. Your suggestions are vital as I continue to refine and improve this project!&lt;br&gt;
App &lt;a href="https://studyplannerai-dy56e6zrzlb8wsypdphb7t.streamlit.app/" rel="noopener noreferrer"&gt;https://studyplannerai-dy56e6zrzlb8wsypdphb7t.streamlit.app/&lt;/a&gt;&lt;br&gt;
Github &lt;a href="https://github.com/Urooj25/Study_Planner_Ai.git" rel="noopener noreferrer"&gt;https://github.com/Urooj25/Study_Planner_Ai.git&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Fake News Detection using Machine Learning &amp; NLP!</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Tue, 05 May 2026 14:16:00 +0000</pubDate>
      <link>https://dev.to/codewithurooj/fake-news-detection-using-machine-learning-nlp-35hf</link>
      <guid>https://dev.to/codewithurooj/fake-news-detection-using-machine-learning-nlp-35hf</guid>
      <description>&lt;p&gt;Excited to share my latest project: Fake News Detection using Machine Learning &amp;amp; NLP!&lt;br&gt;
In today's world of misinformation, I built an end-to-end system that automatically detects whether a news article is FAKE or REAL using Python, NLP, and Deep Learning.&lt;br&gt;
What I built: ✅ Complete NLP pipeline with text cleaning &amp;amp; lemmatization ✅ TF-IDF vectorization with bigrams (5000 features) ✅ 6 Machine Learning models compared side by side ✅ Deep Neural Network with Dropout regularization ✅ Real-time user input prediction system ✅ EDA with Word Clouds &amp;amp; visualizations&lt;br&gt;
Models Used: ▸ Logistic Regression ▸ Naive Bayes ▸ Random Forest ▸ Decision Tree ▸ Gradient Boosting ▸ Linear SVM ▸ Dense Neural Network (TensorFlow/Keras)&lt;br&gt;
Key Findings: ▸ Fake news uses emotional, sensational &amp;amp; uppercase language ▸ Real news is formal, structured &amp;amp; factual ▸ Logistic Regression achieved excellent accuracy on TF-IDF features ▸ Neural Network with Early Stopping &amp;amp; Dropout prevented overfitting&lt;br&gt;
️ Tech Stack: Python | Pandas | Scikit-learn | TensorFlow | Keras | NLTK | Matplotlib | Seaborn&lt;br&gt;
This project taught me how powerful simple NLP techniques like TF-IDF can be when combined with the right models. Sometimes you don't need GPT — a well-tuned Logistic Regression can be just as effective!&lt;br&gt;
Full code available on GitHub &lt;a href="https://github.com/Urooj25/News_Detection_Model.git" rel="noopener noreferrer"&gt;https://github.com/Urooj25/News_Detection_Model.git&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>tensorflow</category>
      <category>programming</category>
    </item>
    <item>
      <title>My Journey with AI &amp; Fashion MNIST</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Fri, 01 May 2026 16:08:55 +0000</pubDate>
      <link>https://dev.to/codewithurooj/my-journey-with-ai-fashion-mnist-2egj</link>
      <guid>https://dev.to/codewithurooj/my-journey-with-ai-fashion-mnist-2egj</guid>
      <description>&lt;p&gt;Can a computer "see" the difference between a Sneaker and a Bag? 👟 vs 👜 Well, it’s a lot harder than it looks!&lt;br&gt;
The Build:&lt;br&gt;
I recently built an Image Classification model using TensorFlow and Keras to categorize fashion items from the famous Fashion-MNIST dataset.&lt;/p&gt;

&lt;p&gt;The Brain: A Sequential Neural Network with Flatten, Dense, and Dropout layers.&lt;/p&gt;

&lt;p&gt;The Tech: Python, NumPy, and Matplotlib for data visualization.&lt;/p&gt;

&lt;p&gt;How the Fashion Industry uses this:&lt;br&gt;
AI is revolutionizing how we shop! From automated inventory management and trend forecasting to "Search by Image" features in apps like Pinterest and ASOS, these neural networks are the backbone of modern e-commerce.&lt;/p&gt;

&lt;p&gt;The Struggle (The "Bag" Incident): The real challenge started when I tested the model with my own photos. No matter what I uploaded, the model insisted my sneakers were a "Bag" or a "T-shirt"! 😅&lt;/p&gt;

&lt;p&gt;How I Tackled It:&lt;br&gt;
This "failure" was my biggest learning moment. I realized that a simple Dense (MLP) Model lacks "Spatial Intelligence." It doesn't see shapes; it only sees pixel intensity.&lt;br&gt;
To fix this, I had to:&lt;/p&gt;

&lt;p&gt;Refine Preprocessing: Use Gaussian blurs and contrast enhancement to highlight features.&lt;/p&gt;

&lt;p&gt;Normalize Input: Perfectly centering and resizing images to 28x28 to match the model's training "memory."&lt;/p&gt;

&lt;p&gt;Analyze Limitations: Understanding that without CNN (Convolutional Neural Networks), a model struggles with real-world shadows and angles.&lt;/p&gt;

&lt;p&gt;Final Result:&lt;br&gt;
After multiple iterations of code and preprocessing "jugaads," I finally got the model to recognize the patterns! It taught me that AI isn't magic—it’s about high-quality data and the right architecture.&lt;br&gt;
See full code in 👇 &lt;a href="https://lnkd.in/d_NDY5Wf" rel="noopener noreferrer"&gt;https://lnkd.in/d_NDY5Wf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s Connect!&lt;br&gt;
Have you ever faced a stubborn bug that just wouldn't quit? How did you solve it? I’d love to hear your "debugging horror stories" in the comments! 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>deeplearning</category>
      <category>coding</category>
      <category>tensorflow</category>
    </item>
    <item>
      <title>Building a Robust Sentiment Classifier with Neutral Detection using Linear SVC</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Sun, 19 Apr 2026 14:58:20 +0000</pubDate>
      <link>https://dev.to/codewithurooj/building-a-robust-sentiment-classifier-with-neutral-detection-using-linear-svc-3c3a</link>
      <guid>https://dev.to/codewithurooj/building-a-robust-sentiment-classifier-with-neutral-detection-using-linear-svc-3c3a</guid>
      <description>&lt;p&gt;Introduction&lt;br&gt;
Sentiment Analysis is more than just binary classification. While most tutorials focus on a simple Positive/Negative split, real-world data often sits in the "gray area." In this post, I’ll walk you through how I built a Sentiment Analysis pipeline using the IMDB 50K dataset and implemented a custom threshold logic to identify neutral sentiments.&lt;/p&gt;

&lt;p&gt;The Stack 🛠️&lt;br&gt;
Language: Python&lt;/p&gt;

&lt;p&gt;NLP: NLTK (Lemmatization, Stopwords)&lt;/p&gt;

&lt;p&gt;ML: Scikit-Learn (Linear SVC)&lt;/p&gt;

&lt;p&gt;Vectorization: TF-IDF&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Preprocessing Pipeline
Text cleaning is the most crucial part of NLP. I used a combination of Regex and NLTK to:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Strip HTML tags.&lt;/p&gt;

&lt;p&gt;Remove non-alphabetic characters.&lt;/p&gt;

&lt;p&gt;Lowercase and Lemmatize words to their root forms.&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
def clean_text(text):&lt;br&gt;
    text = re.sub(r'&amp;lt;.*?&amp;gt;', '', text)&lt;br&gt;
    text = re.sub(r'[^a-zA-Z]', ' ', text).lower()&lt;br&gt;
    words = text.split()&lt;br&gt;
    cleaned_words = [lemmatizer.lemmatize(w) for w in words if w not in stop_words]&lt;br&gt;
    return " ".join(cleaned_words)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Feature Engineering: Why TF-IDF?&lt;br&gt;
I used TF-IDF Vectorization with 5,000 features. This helps the model weigh words based on their importance across the entire dataset, effectively filtering out common but uninformative words.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Model: Linear SVC&lt;br&gt;
I chose Linear SVC (Support Vector Classification) because it is highly efficient for high-dimensional text data. It aims to find the optimal hyperplane that maximizes the margin between classes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Challenge: Handling "Neutral" Reviews ⚖️&lt;br&gt;
The IMDB dataset is binary (1 or -1). To make the model smarter, I used the decision_function method.&lt;br&gt;
Instead of a hard prediction, I calculated the distance from the decision boundary:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Score &amp;gt; 0.1: Positive&lt;/p&gt;

&lt;p&gt;Score &amp;lt; -0.1: Negative&lt;/p&gt;

&lt;p&gt;-0.1 to 0.1: Neutral ("Maybe Watch")&lt;/p&gt;

&lt;p&gt;This approach allows the model to handle "average" or "mixed" reviews gracefully without being force-trained on neutral data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Overfitting &amp;amp; Regularization
To prevent the model from memorizing noise, I utilized the built-in L2 Regularization in Linear SVC. By comparing training vs. test accuracy (which settled at a solid 88%), I ensured the model generalizes well to unseen data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Building this was a great deep-dive into the nuances of NLP. The addition of a threshold-based neutral detection makes the recommendation system much more practical for real-world applications.&lt;br&gt;
GitHub Repo:&lt;a href="https://github.com/Urooj25/Movie-review-sentiment-analysis.git" rel="noopener noreferrer"&gt;https://github.com/Urooj25/Movie-review-sentiment-analysis.git&lt;/a&gt;&lt;br&gt;
Let's connect on LinkedIn!&lt;a href="http://www.linkedin.com/in/urooj-fatima-b52495342" rel="noopener noreferrer"&gt;www.linkedin.com/in/urooj-fatima-b52495342&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nlp</category>
      <category>sentiment</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Building a Movie Recommender System: A Journey from Pre-Med to ML 🎬</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Sat, 18 Apr 2026 10:43:14 +0000</pubDate>
      <link>https://dev.to/codewithurooj/building-a-movie-recommender-system-a-journey-from-pre-med-to-ml-376e</link>
      <guid>https://dev.to/codewithurooj/building-a-movie-recommender-system-a-journey-from-pre-med-to-ml-376e</guid>
      <description>&lt;p&gt;Transitioning from a pre-medical background to Electrical Engineering at NUST taught me one thing: Math is the universal language of logic. Recently, I decided to dive deep into Machine Learning to build a Content-Based Movie Recommender System.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk you through how I used NLP and Cosine Similarity to suggest movies based on user preferences.&lt;/p&gt;

&lt;p&gt;The Tech Stack 🛠️&lt;br&gt;
Language: Python&lt;/p&gt;

&lt;p&gt;Libraries: Pandas, NumPy, Scikit-learn, NLTK&lt;/p&gt;

&lt;p&gt;Dataset: TMDB 5000 Movies Dataset&lt;/p&gt;

&lt;p&gt;The Workflow 🧠&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Data Cleaning &amp;amp; Feature Selection&lt;br&gt;
The first step was to merge datasets and extract relevant features like genres, keywords, cast, and crew. I created a "tags" column that combines all these textual descriptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Text Preprocessing (Stemming)&lt;br&gt;
To make sure "action" and "actions" are treated the same, I used NLTK's PorterStemmer.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Python&lt;br&gt;
from nltk.stem.porter import PorterStemmer&lt;br&gt;
ps = PorterStemmer()&lt;/p&gt;

&lt;h1&gt;
  
  
  Applied to the tags column
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Vectorization (Bag of Words)&lt;br&gt;
I converted the text tags into 5,000-dimensional vectors using CountVectorizer, removing common English stop words.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Mathematical Engine: Cosine Similarity&lt;br&gt;
Instead of Euclidean distance, I used Cosine Similarity to calculate the angular distance between movie vectors. The closer the vectors, the more similar the movies!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Key Challenges 🚧&lt;br&gt;
The biggest hurdle was managing the large similarity matrix in a cloud environment. Dealing with memory limits and "truncated files" taught me a lot about efficient data handling and the importance of proper serialization using pickle.&lt;/p&gt;

&lt;p&gt;Conclusion &amp;amp; Future Scope&lt;br&gt;
This project was a fantastic way to apply linear algebra and NLP concepts. My next step is to deploy this as a full web app and integrate movie posters via API.&lt;/p&gt;

&lt;p&gt;Check out the full source code on my GitHub: 👉 &lt;a href="https://github.com/Urooj25/Movie-Recommender-System.git" rel="noopener noreferrer"&gt;https://github.com/Urooj25/Movie-Recommender-System.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s Connect!&lt;br&gt;
I'm always open to feedback and collaboration. Drop a comment or connect with me on LinkedIn!&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>nlp</category>
      <category>futureofai</category>
    </item>
    <item>
      <title>Will AI take our jobs?</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Thu, 09 Apr 2026 13:13:40 +0000</pubDate>
      <link>https://dev.to/codewithurooj/will-ai-take-our-jobs-2p52</link>
      <guid>https://dev.to/codewithurooj/will-ai-take-our-jobs-2p52</guid>
      <description>&lt;p&gt;We all hear this everywhere:&lt;/p&gt;

&lt;p&gt;“AI will take our jobs.”&lt;/p&gt;

&lt;p&gt;But is that really true?&lt;/p&gt;

&lt;p&gt;Let’s talk about reality.&lt;/p&gt;

&lt;p&gt;AI is not your enemy.&lt;br&gt;
It’s a tool—the most powerful tool of this era.&lt;/p&gt;

&lt;p&gt;And like every major technology shift in history…&lt;br&gt;
it’s changing the way we work, not eliminating work itself.&lt;/p&gt;

&lt;p&gt;Today, AI can:&lt;br&gt;
• Automate repetitive tasks&lt;br&gt;
• Help write code faster&lt;br&gt;
• Analyze large amounts of data in seconds&lt;br&gt;
• Assist in decision-making&lt;/p&gt;

&lt;p&gt;But here’s what it can’t replace:&lt;/p&gt;

&lt;p&gt;Human creativity&lt;br&gt;
Critical thinking&lt;br&gt;
Emotional intelligence&lt;br&gt;
Real-world problem solving&lt;/p&gt;

&lt;p&gt;That’s where you come in.&lt;/p&gt;

&lt;p&gt;The truth is:&lt;/p&gt;

&lt;p&gt;AI won’t replace you.&lt;br&gt;
But someone using AI might.&lt;/p&gt;

&lt;p&gt;The real risk is not AI…&lt;br&gt;
It’s staying the same while the world is evolving.&lt;/p&gt;

&lt;p&gt;If we don’t learn it, we get left behind.&lt;br&gt;
If we do learn it, we move ahead&lt;/p&gt;

&lt;p&gt;Tools don’t take opportunities away—&lt;br&gt;
they create new ones for those who know how to use them.&lt;/p&gt;

&lt;p&gt;AI is not here to be your master.&lt;br&gt;
It’s here to be your advantage.&lt;/p&gt;

&lt;p&gt;The question is:&lt;/p&gt;

&lt;p&gt;Will you ignore it… or learn it?&lt;/p&gt;

&lt;p&gt;What do you think—threat or opportunity?&lt;/p&gt;

&lt;p&gt;Let’s talk&lt;/p&gt;

</description>
      <category>ai</category>
      <category>techtalks</category>
      <category>womenintech</category>
      <category>futurechallenge</category>
    </item>
    <item>
      <title>I stopped waiting to feel “ready”… and everything changed ✨</title>
      <dc:creator>Urooj Fatima</dc:creator>
      <pubDate>Mon, 30 Mar 2026 14:46:56 +0000</pubDate>
      <link>https://dev.to/codewithurooj/i-stopped-waiting-to-feel-ready-and-everything-changed-4elp</link>
      <guid>https://dev.to/codewithurooj/i-stopped-waiting-to-feel-ready-and-everything-changed-4elp</guid>
      <description>&lt;p&gt;I stopped waiting to feel “ready”… and everything changed ✨&lt;/p&gt;

&lt;p&gt;Stepping into the tech world felt scary 😨&lt;/p&gt;

&lt;p&gt;I used to wonder:&lt;br&gt;
What is coding actually?&lt;br&gt;
Can I really do this?&lt;br&gt;
Everyone is already ahead of me… am I too late? ⏳&lt;/p&gt;

&lt;p&gt;Coming from a non-technical background, I didn’t even understand something as simple as&lt;br&gt;
&lt;code&gt;print("Hello World")&lt;/code&gt; 💻&lt;/p&gt;

&lt;p&gt;These thoughts held me back for a long time.&lt;/p&gt;

&lt;p&gt;But one day, I made a decision:&lt;br&gt;
It’s okay to start late… but it’s not okay to never start 🚀&lt;/p&gt;

&lt;p&gt;So I stopped comparing myself to others.&lt;br&gt;
It became &lt;strong&gt;me vs me&lt;/strong&gt; 💯&lt;/p&gt;

&lt;p&gt;I started exploring—C++, Python… slowly, step by step 🧠&lt;/p&gt;

&lt;p&gt;And honestly? It wasn’t easy.&lt;/p&gt;

&lt;p&gt;There were days I spent hours trying to fix a tiny bug 🐛&lt;br&gt;
Days I felt stuck 😞&lt;br&gt;
Even days I cried 💔&lt;/p&gt;

&lt;p&gt;But I didn’t quit.&lt;/p&gt;

&lt;p&gt;I kept going 💪&lt;/p&gt;

&lt;p&gt;And that’s when everything started to change ✨&lt;/p&gt;

&lt;p&gt;Today, I’ve built projects 🛠️&lt;br&gt;
I’m still learning, still growing 📈&lt;br&gt;
Turning code into something meaningful—study tools, AI experiments, and more 🤖&lt;/p&gt;

&lt;p&gt;My GitHub might not be perfect or “green”…&lt;br&gt;
But it shows one thing: &lt;strong&gt;I showed up. I tried. I didn’t give up.&lt;/strong&gt; 🌱&lt;/p&gt;

&lt;p&gt;And now I know—this curiosity I had?&lt;br&gt;
It wasn’t random.&lt;br&gt;
It was leading me somewhere 🌍&lt;/p&gt;

&lt;p&gt;💬 I’d love to hear from you:&lt;/p&gt;

&lt;p&gt;What’s something that once scared you… but you started anyway?&lt;br&gt;
What keeps you going when things get hard?&lt;/p&gt;

&lt;p&gt;Let’s connect, grow, and learn together 🤝&lt;/p&gt;

&lt;h1&gt;
  
  
  CodingJourney #WomenInTech #Beginners #LearnToCode #Consistency #TechLife #GrowthMindset
&lt;/h1&gt;

</description>
      <category>womenintech</category>
      <category>coding</category>
      <category>ai</category>
      <category>techtalks</category>
    </item>
  </channel>
</rss>
