<?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: Temiloluwa Valentine</title>
    <description>The latest articles on DEV Community by Temiloluwa Valentine (@temiloluwavalentine).</description>
    <link>https://dev.to/temiloluwavalentine</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3089157%2F2d0b75dc-ef58-4753-a762-05689e4e7216.png</url>
      <title>DEV Community: Temiloluwa Valentine</title>
      <link>https://dev.to/temiloluwavalentine</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/temiloluwavalentine"/>
    <language>en</language>
    <item>
      <title>Every Time She Got Confused Online, She Called Me. I Got Tired of Answering. So I Built This.</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Sun, 24 May 2026 06:57:39 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/every-time-she-got-confused-online-she-called-me-i-got-tired-of-answering-so-i-built-this-18il</link>
      <guid>https://dev.to/temiloluwavalentine/every-time-she-got-confused-online-she-called-me-i-got-tired-of-answering-so-i-built-this-18il</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My cousin has a learning disability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the kind people notice immediately. She holds a conversation fine. She laughs at the right moments. She is sharp in ways that matter.&lt;/p&gt;

&lt;p&gt;But put her in front of a dense webpage, a medical article, a GitHub README, a LinkedIn thread and something shifts. The words blur. The structure overwhelms. She closes the tab and calls me.&lt;/p&gt;

&lt;p&gt;For two years, I was her human filter for the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;The internet assumes you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read fast&lt;/li&gt;
&lt;li&gt;Parse dense structure&lt;/li&gt;
&lt;li&gt;Context-switch without losing the thread&lt;/li&gt;
&lt;li&gt;Understand jargon on sight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of people cannot. And nobody is building for them.&lt;/p&gt;

&lt;p&gt;My cousin is not alone. People with &lt;strong&gt;dyslexia&lt;/strong&gt;, &lt;strong&gt;ADHD&lt;/strong&gt;, &lt;strong&gt;processing disorders&lt;/strong&gt;, &lt;strong&gt;low digital literacy&lt;/strong&gt;, and &lt;strong&gt;non-native English speakers&lt;/strong&gt; all hit the same wall every day. They just hit it quietly.&lt;/p&gt;

&lt;p&gt;I got tired of being the workaround. So I built Aura.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Aura Is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Aura is a Chrome extension that puts Gemma 4 directly on every webpage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No tab switching. No copy-pasting into ChatGPT. No context lost.&lt;/p&gt;

&lt;p&gt;You click the floating orb. A panel slides in. You pick what you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summarize Page&lt;/strong&gt; — get the key points in seconds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain Code&lt;/strong&gt; — understand what it does and &lt;em&gt;why&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draft Reply&lt;/strong&gt; — reply to LinkedIn messages that match the tone of the conversation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create Post&lt;/strong&gt; — turn any article into LinkedIn post ideas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Highlight &amp;amp; Ask&lt;/strong&gt; — select any text on the page and ask Aura anything about it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI lives on the page with you. You never leave.&lt;/p&gt;




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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/EXh2Mg0vuyI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Migrated from Llama to Gemma 4
&lt;/h2&gt;

&lt;p&gt;I originally built Aura with &lt;strong&gt;Llama 3.1 8B&lt;/strong&gt; via Cloudflare Workers AI.&lt;/p&gt;

&lt;p&gt;It worked. Responses came back. Features ran.&lt;/p&gt;

&lt;p&gt;But when I swapped to &lt;strong&gt;Gemma 4 31B&lt;/strong&gt;, I felt the difference in the first response.&lt;/p&gt;

&lt;p&gt;Llama told me &lt;em&gt;what&lt;/em&gt; the code did. Gemma 4 told me &lt;em&gt;why it was written that way.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Llama drafted a generic professional reply. Gemma 4 read the tone of the conversation and matched it.&lt;/p&gt;

&lt;p&gt;For a general tool, that gap is a nice-to-have. For a tool built for people who struggle with comprehension that gap is everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Gemma 4 31B Specifically
&lt;/h2&gt;

&lt;p&gt;Gemma 4 comes in three variants. I did not pick 31B by default. I picked it deliberately.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why I didn't pick it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2B / 4B&lt;/td&gt;
&lt;td&gt;Too shallow for the reasoning depth Aura needs across wildly different content types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26B MoE&lt;/td&gt;
&lt;td&gt;Great for edge inference but Aura needs &lt;em&gt;consistent&lt;/em&gt; quality across all content types, not specialized routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;31B Dense&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Full parameter activation. Maximum reasoning quality. Consistent across every content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is why &lt;strong&gt;dense architecture&lt;/strong&gt; matters for Aura specifically:&lt;/p&gt;

&lt;p&gt;MoE models route tokens through specialized subnetworks they activate only &lt;em&gt;some&lt;/em&gt; parameters depending on the input. That is efficient. But Aura handles a GitHub README, a LinkedIn thread, a medical article, and a Stack Overflow answer sometimes in the same session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dense models activate all parameters for every token.&lt;/strong&gt; Gemma 4 31B does not guess which expert to wake up. It brings everything it knows to every single interaction.&lt;/p&gt;

&lt;p&gt;For a tool where the content changes every tab and the user cannot afford an inconsistent experience that consistency is not optional.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technical Implementation
&lt;/h2&gt;

&lt;p&gt;Aura is &lt;strong&gt;plain HTML, CSS, and JavaScript.&lt;/strong&gt; No framework. No backend. No server.&lt;/p&gt;

&lt;p&gt;The Gemma 4 API call lives directly in the content script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;GEMMA_API_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://generativelanguage.googleapis.com/v1beta/models/gemma-4-31b-it:generateContent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;callNova&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;systemTurn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`You are Aura, a helpful AI assistant in a browser extension. 
    The user is on: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;. 
    Page context:\n\n&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;currentPageContent&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;\n\n
    Respond concisely and directly. Never introduce yourself. 
    Never mention you are an AI. Output only the final answer.`&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;systemAck&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Understood.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;GEMMA_API_URL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;GEMMA_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;systemTurn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;systemAck&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;history&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;generationConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;thinkingConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;thinkingBudget&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;?.[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]?.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;?.[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]?.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No response.&lt;/span&gt;&lt;span class="dl"&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;A few things worth noting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system turn pattern&lt;/strong&gt; — Gemma 4's API does not have a native system role. I simulate it by injecting a user turn with the system context, followed by a model acknowledgment. This grounds the model before the actual conversation starts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;thinkingBudget: 0&lt;/code&gt;&lt;/strong&gt; — Gemma 4 31B is a reasoning model. Left unconstrained, it outputs its full reasoning trace — tasks, constraints, drafts, self-checks — before the final answer. Setting &lt;code&gt;thinkingBudget: 0&lt;/code&gt; suppresses that and returns only the final output to the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page content extraction&lt;/strong&gt; — Aura reads the page using a priority selector chain before falling back to &lt;code&gt;document.body.innerText&lt;/code&gt;, capped at 4000 characters to stay within context limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversation history&lt;/strong&gt; — Follow-up chat is supported. Every user and model turn is stored in &lt;code&gt;conversationHistory&lt;/code&gt; and injected into the next request, giving Aura memory within a session.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed When I Migrated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Llama 3.1 8B&lt;/th&gt;
&lt;th&gt;Gemma 4 31B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Page summarization&lt;/td&gt;
&lt;td&gt;✅ Decent bullets&lt;/td&gt;
&lt;td&gt;✅ Structured, context-aware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code explanation&lt;/td&gt;
&lt;td&gt;✅ Describes what code does&lt;/td&gt;
&lt;td&gt;✅ Explains &lt;em&gt;why&lt;/em&gt; it was written that way&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reply drafting&lt;/td&gt;
&lt;td&gt;⚠️ Generic professional tone&lt;/td&gt;
&lt;td&gt;✅ Matches the tone of the actual conversation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn post creation&lt;/td&gt;
&lt;td&gt;⚠️ Template-like output&lt;/td&gt;
&lt;td&gt;✅ Distinct voice per post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Highlight &amp;amp; Ask&lt;/td&gt;
&lt;td&gt;✅ Works&lt;/td&gt;
&lt;td&gt;✅ Deeper reasoning on complex selections&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The migration took under 10 minutes. One endpoint. One model string. The quality difference was not subtle.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is Actually For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;People with &lt;strong&gt;dyslexia&lt;/strong&gt; who need content restructured instantly&lt;/li&gt;
&lt;li&gt;People with &lt;strong&gt;ADHD&lt;/strong&gt; who lose the thread switching tabs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-native English speakers&lt;/strong&gt; navigating professional content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elderly users&lt;/strong&gt; overwhelmed by dense web pages&lt;/li&gt;
&lt;li&gt;Anyone the internet was not designed for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My cousin does not need a faster browser. She needs the information to come to her in a form she can hold.&lt;/p&gt;

&lt;p&gt;Aura does that. Gemma 4 31B makes it good enough to actually help.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Next
&lt;/h2&gt;

&lt;p&gt;The next version adds &lt;strong&gt;multimodal support&lt;/strong&gt; sending a page screenshot alongside the text so Gemma 4 can reason about charts, diagrams, and images, not just words.&lt;/p&gt;

&lt;p&gt;My cousin once sent me a screenshot of a medical form she could not understand. I read it to her over the phone.&lt;/p&gt;

&lt;p&gt;Aura will eventually do that too.&lt;/p&gt;




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

&lt;p&gt;🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Valentinetemi/Aura" rel="noopener noreferrer"&gt;https://github.com/Valentinetemi/Aura&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Aura was originally built for the Airia AI Agents Hackathon. The Gemma 4 migration was done for this challenge and honestly, it should have been Gemma from the start.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>My Dad Got an Electricity Bill He Couldn't Understand. Google I/O 2026 Just Made That Problem Solvable.</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Sat, 23 May 2026 17:06:12 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/my-dad-got-an-electricity-bill-he-couldnt-understand-google-io-2026-just-made-that-problem-480d</link>
      <guid>https://dev.to/temiloluwavalentine/my-dad-got-an-electricity-bill-he-couldnt-understand-google-io-2026-just-made-that-problem-480d</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Moment That Started Everything
&lt;/h2&gt;

&lt;p&gt;Last year my dad got our electricity bill and just stared at it.&lt;/p&gt;

&lt;p&gt;He couldn't understand why it was so high. He had no idea which device was the problem. Was it the iron my mum uses every morning? The old fridge that runs all night? The TV nobody turns off?&lt;/p&gt;

&lt;p&gt;He just paid it. Like he always does. Because there was no easy way to find out.&lt;/p&gt;

&lt;p&gt;That moment stayed with me. So I built something about it, an app where you point your camera at any appliance, pinch your fingers, and instantly see what that device costs you per month in your local currency, what it does to your CO₂ footprint, and one simple habit to cut the cost immediately.&lt;/p&gt;

&lt;p&gt;The heart of it was Gemini's vision capability. You point. Gemini looks. Gemini understands. No typing. No forms. Just a camera and a pinch gesture.&lt;/p&gt;

&lt;p&gt;It worked. But building it taught me exactly where the limits were.&lt;/p&gt;

&lt;p&gt;And then Google I/O 2026 happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Was Actually Asking Gemini to Do
&lt;/h2&gt;

&lt;p&gt;When you point a camera at an appliance, you are not giving Gemini a clean, labelled image. You are giving it a live camera frame, often at an angle, often in bad lighting, often partially obscured by a cable or a counter.&lt;/p&gt;

&lt;p&gt;Gemini 2.0 Flash handled it remarkably well. It could identify an iron, a refrigerator, a standing fan, a microwave, even when the image was not perfect. It returned structured data: what the device is, how many watts it typically consumes, and what that costs per month in Nigeria, Ghana, or Kenya.&lt;/p&gt;

&lt;p&gt;But there were moments where it hesitated. Older appliances with no visible branding. Devices that looked similar from certain angles. Situations where the model was confident but slightly wrong, calling a dehumidifier an air purifier, for instance, which changes the wattage estimate significantly.&lt;/p&gt;

&lt;p&gt;Those were not failures. They were the edges of what vision AI could do at the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini 3.5 Flash Changes
&lt;/h2&gt;

&lt;p&gt;Gemini 3.5 Flash improves both multimodal reasoning and response speed, which matters enormously for real-time camera experiences.&lt;/p&gt;

&lt;p&gt;For a real-time camera application, that speed difference is not a convenience. it is the difference between an experience that feels instant and one that makes the user wait.&lt;/p&gt;

&lt;p&gt;But the multimodal improvement matters more than the speed. Gemini 3.5 Flash is better at understanding what it is actually looking at in complex, real-world visual contexts. Not studio images. Not clean product photos. Real environments with bad lighting, odd angles, and ambiguous objects.&lt;/p&gt;

&lt;p&gt;That is exactly the problem I was trying to solve.&lt;/p&gt;

&lt;p&gt;An old Nigerian refrigerator from the 1990s does not look like the refrigerators in most training datasets. A locally assembled electric cooker does not have a recognizable brand logo. The visual diversity of household appliances across Africa, India, Ghana, and Kenya is enormous, and the gap between what a model trained on Western product images knows and what actually exists in these homes is real.&lt;/p&gt;

&lt;p&gt;Gemini 3.5 Flash's improved multimodal understanding closes that gap. Not completely. But meaningfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini Omni Opens Up
&lt;/h2&gt;

&lt;p&gt;Gemini Omni is a new series of models that combines Gemini's reasoning capabilities with creation, accepting image, audio, video, and text input and outputting video grounded in real-world knowledge.&lt;/p&gt;

&lt;p&gt;This one stopped me.&lt;/p&gt;

&lt;p&gt;Imagine pointing your camera at your kitchen and instead of scanning one appliance at a time, the model watches a short video of your kitchen, identifies every device it sees, and generates a complete energy audit, total monthly cost, total CO₂ footprint, priority recommendations, all in one pass.&lt;/p&gt;

&lt;p&gt;That is not a feature I could have built before. That is a feature I could build now.&lt;/p&gt;

&lt;p&gt;The pinch-to-scan interaction I built works well for focused, one-device-at-a-time scanning. But the real problem my dad had was not "tell me about this one device." It was "Tell me why this whole bill is so high." Video input that generates grounded output is the architecture that answers the actual question.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Announcement That Surprised Me Most
&lt;/h2&gt;

&lt;p&gt;Google announced Antigravity 2.0 with new capabilities to orchestrate and build agents, transitioning from AI that simply assists to agents that can independently navigate complex tasks.&lt;/p&gt;

&lt;p&gt;When I built my energy scanning app, every interaction was stateless. You scan a device, you get a result. If you scan another device, you get another result. The dashboard accumulated data, but the model had no memory of what it had already seen.&lt;/p&gt;

&lt;p&gt;An agent that can remember that knows you scanned the fridge last week, that it already recommended you switch to a more efficient model, that it is now tracking whether your bill actually went down, that is a fundamentally different product.&lt;/p&gt;

&lt;p&gt;That is not a scanning tool. That is an energy advisor that lives on your phone and actually follows up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means For Developers Building in Africa
&lt;/h2&gt;

&lt;p&gt;I want to say something that the Google I/O coverage mostly missed.&lt;/p&gt;

&lt;p&gt;Gemini 3.5 Flash delivers frontier-level capabilities at less than half the price of comparable frontier models.&lt;/p&gt;

&lt;p&gt;For developers building in Nigeria, Ghana, Kenya, India, where margins are thin, where users cannot pay Western subscription prices, where the business model has to work at a completely different cost structure, that pricing difference is not a footnote. It is the difference between a viable product and one that cannot sustain itself.&lt;/p&gt;

&lt;p&gt;Most of the Google I/O coverage talked about what these models can do. The more important story for developers outside Silicon Valley is what these models now cost to run. Frontier vision capability at accessible pricing means the gap between what developers in Lagos can build and what developers in San Francisco can build just got smaller.&lt;/p&gt;

&lt;p&gt;That is the announcement I cared about most.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Am Building Next
&lt;/h2&gt;

&lt;p&gt;My dad still checks his electricity bill every month and wonders where the money went.&lt;/p&gt;

&lt;p&gt;With Gemini 3.5 Flash's improved multimodal understanding, Gemini Omni's video input, and Antigravity 2.0's agentic memory. I have everything I need to build the version of this tool that completely solves his problem.&lt;/p&gt;

&lt;p&gt;Do not scan one appliance at a time. Walk through the house. Let the agent watch. Get the full picture. Follow up next month.&lt;/p&gt;

&lt;p&gt;Google I/O 2026 did not just announce new models. For developers who are building real tools for real people in the places the tech industry usually forgets, it has moved the frontier to where we actually are.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The appliance scanning app referenced in this post was built independently for the DEV Earth Day Weekend Challenge. All Google I/O 2026 details are from official Google announcements.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>My Dad Got an Electricity Bill He Couldn't Understand. Google I/O 2026 Just Made That Problem Solvable.</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Sat, 23 May 2026 17:06:12 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/my-dad-got-an-electricity-bill-he-couldnt-understand-google-io-2026-just-made-that-problem-1ic0</link>
      <guid>https://dev.to/temiloluwavalentine/my-dad-got-an-electricity-bill-he-couldnt-understand-google-io-2026-just-made-that-problem-1ic0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Moment That Started Everything
&lt;/h2&gt;

&lt;p&gt;Last year my dad got our electricity bill and just stared at it.&lt;/p&gt;

&lt;p&gt;He couldn't understand why it was so high. He had no idea which device was the problem. Was it the iron my mum uses every morning? The old fridge that runs all night? The TV nobody turns off?&lt;/p&gt;

&lt;p&gt;He just paid it. Like he always does. Because there was no easy way to find out.&lt;/p&gt;

&lt;p&gt;That moment stayed with me. So I built something about it, an app where you point your camera at any appliance, pinch your fingers, and instantly see what that device costs you per month in your local currency, what it does to your CO₂ footprint, and one simple habit to cut the cost immediately.&lt;/p&gt;

&lt;p&gt;The heart of it was Gemini's vision capability. You point. Gemini looks. Gemini understands. No typing. No forms. Just a camera and a pinch gesture.&lt;/p&gt;

&lt;p&gt;It worked. But building it taught me exactly where the limits were.&lt;/p&gt;

&lt;p&gt;And then Google I/O 2026 happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Was Actually Asking Gemini to Do
&lt;/h2&gt;

&lt;p&gt;When you point a camera at an appliance, you are not giving Gemini a clean, labelled image. You are giving it a live camera frame, often at an angle, often in bad lighting, often partially obscured by a cable or a counter.&lt;/p&gt;

&lt;p&gt;Gemini 2.0 Flash handled it remarkably well. It could identify an iron, a refrigerator, a standing fan, a microwave, even when the image was not perfect. It returned structured data: what the device is, how many watts it typically consumes, and what that costs per month in Nigeria, Ghana, or Kenya.&lt;/p&gt;

&lt;p&gt;But there were moments where it hesitated. Older appliances with no visible branding. Devices that looked similar from certain angles. Situations where the model was confident but slightly wrong, calling a dehumidifier an air purifier, for instance, which changes the wattage estimate significantly.&lt;/p&gt;

&lt;p&gt;Those were not failures. They were the edges of what vision AI could do at the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini 3.5 Flash Changes
&lt;/h2&gt;

&lt;p&gt;Gemini 3.5 Flash improves both multimodal reasoning and response speed, which matters enormously for real-time camera experiences. &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19?claude-citation-763d384c-a3f8-4d70-b04c-47825ae29216=9f21dd7f-fb36-4cca-b2d1-18e9760b6173"&gt;DEV Community&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a real-time camera application, that speed difference is not a convenience. it is the difference between an experience that feels instant and one that makes the user wait.&lt;/p&gt;

&lt;p&gt;But the multimodal improvement matters more than the speed. Gemini 3.5 Flash is better at understanding what it is actually looking at in complex, real-world visual contexts. Not studio images. Not clean product photos. Real environments with bad lighting, odd angles, and ambiguous objects.&lt;/p&gt;

&lt;p&gt;That is exactly the problem I was trying to solve.&lt;/p&gt;

&lt;p&gt;An old Nigerian refrigerator from the 1990s does not look like the refrigerators in most training datasets. A locally assembled electric cooker does not have a recognisable brand logo. The visual diversity of household appliances across Africa, India, Ghana, and Kenya is enormous and the gap between what a model trained on Western product images knows and what actually exists in these homes is real.&lt;/p&gt;

&lt;p&gt;Gemini 3.5 Flash's improved multimodal understanding closes that gap. Not completely. But meaningfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini Omni Opens Up
&lt;/h2&gt;

&lt;p&gt;Gemini Omni is a new series of models that combines Gemini's reasoning capabilities with creation, accepting image, audio, video, and text input and outputting video grounded in real-world knowledge. &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19?claude-citation-763d384c-a3f8-4d70-b04c-47825ae29216=a6e5e274-1818-4e9c-be7d-c3cd30a075d0"&gt;DEV Community&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one stopped me.&lt;/p&gt;

&lt;p&gt;Imagine pointing your camera at your kitchen and instead of scanning one appliance at a time, the model watches a short video of your kitchen, identifies every device it sees, and generates a complete energy audit, total monthly cost, total CO₂ footprint, priority recommendations, all in one pass.&lt;/p&gt;

&lt;p&gt;That is not a feature I could have built before. That is a feature I could build now.&lt;/p&gt;

&lt;p&gt;The pinch-to-scan interaction I built works well for focused, one-device-at-a-time scanning. But the real problem my dad had was not "tell me about this one device." It was "Tell me why this whole bill is so high." Video input that generates grounded output is the architecture that answers the actual question.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Announcement That Surprised Me Most
&lt;/h2&gt;

&lt;p&gt;Google announced Antigravity 2.0 with new capabilities to orchestrate and build agents, transitioning from AI that simply assists to agents that can independently navigate complex tasks.&lt;/p&gt;

&lt;p&gt;When I built my energy scanning app, every interaction was stateless. You scan a device, you get a result. If you scan another device, you get another result. The dashboard accumulated data, but the model had no memory of what it had already seen.&lt;/p&gt;

&lt;p&gt;An agent that can remember that knows you scanned the fridge last week, that it already recommended you switch to a more efficient model, that it is now tracking whether your bill actually went down, that is a fundamentally different product.&lt;/p&gt;

&lt;p&gt;That is not a scanning tool. That is an energy advisor that lives on your phone and actually follows up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means For Developers Building in Africa
&lt;/h2&gt;

&lt;p&gt;I want to say something that the Google I/O coverage mostly missed.&lt;/p&gt;

&lt;p&gt;Gemini 3.5 Flash delivers frontier-level capabilities at less than half the price of comparable frontier models. &lt;a href="https://ng.linkedin.com/company/uburu-health?claude-citation-763d384c-a3f8-4d70-b04c-47825ae29216=aaed4654-b1bc-4985-a6c5-bbc32a1506ce" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers building in Nigeria, Ghana, Kenya, India, where margins are thin, where users cannot pay Western subscription prices, where the business model has to work at a completely different cost structure, that pricing difference is not a footnote. It is the difference between a viable product and one that cannot sustain itself.&lt;/p&gt;

&lt;p&gt;Most of the Google I/O coverage talked about what these models can do. The more important story for developers outside Silicon Valley is what these models now cost to run. Frontier vision capability at accessible pricing means the gap between what developers in Lagos can build and what developers in San Francisco can build just got smaller.&lt;/p&gt;

&lt;p&gt;That is the announcement I cared about most.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Am Building Next
&lt;/h2&gt;

&lt;p&gt;My dad still checks his electricity bill every month and wonders where the money went.&lt;/p&gt;

&lt;p&gt;With Gemini 3.5 Flash's improved multimodal understanding, Gemini Omni's video input, and Antigravity 2.0's agentic memory. I have everything I need to build the version of this tool that completely solves his problem.&lt;/p&gt;

&lt;p&gt;Do not scan one appliance at a time. Walk through the house. Let the agent watch. Get the full picture. Follow up next month.&lt;/p&gt;

&lt;p&gt;Google I/O 2026 did not just announce new models. For developers who are building real tools for real people in the places the tech industry usually forgets, it has moved the frontier to where we actually are.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The appliance scanning app referenced in this post was built independently for the DEV Earth Day Weekend Challenge. All Google I/O 2026 details are from official Google announcements.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>Which Gemma 4 Model Should You Actually Use? I Tested All of Them, So You Don't Have To</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Tue, 19 May 2026 22:58:50 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/which-gemma-4-model-should-you-actually-use-i-tested-all-of-them-so-you-dont-have-to-eec</link>
      <guid>https://dev.to/temiloluwavalentine/which-gemma-4-model-should-you-actually-use-i-tested-all-of-them-so-you-dont-have-to-eec</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Write About Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Gemma 4 Model Should You Actually Use? I Tested All of them, building a Healthcare AI for African Patients&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most model comparison posts are written by people who read the documentation. This one is written by someone who burned through tokens, hit OOM errors, watched Gemini miss clinical signals it should have caught, and eventually landed on the right answer, but only after eliminating everything else first.&lt;/p&gt;

&lt;p&gt;I was building Fisibel, a multimodal African synthetic health data platform. The task: upload a real Nigerian hospital record image, extract clinical signals, and generate privacy-safe synthetic datasets grounded in WHO and World Bank statistics. The model had to read handwritten and printed medical documents, understand African-specific clinical patterns, and generate coherent synthetic data at scale.&lt;/p&gt;

&lt;p&gt;Here is what I learned by testing every Gemma 4 option available.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Parameters&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 E2B&lt;/td&gt;
&lt;td&gt;2B effective&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td&gt;On-device, mobile, offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 26B MoE&lt;/td&gt;
&lt;td&gt;26B total, 4B active&lt;/td&gt;
&lt;td&gt;Mixture-of-Experts&lt;/td&gt;
&lt;td&gt;Edge inference, deep reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;31B total&lt;/td&gt;
&lt;td&gt;Dense&lt;/td&gt;
&lt;td&gt;Maximum quality, unconstrained compute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The architectural difference matters more than the number. Let me explain why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Mixture-of-Experts Actually Means in Practice&lt;/strong&gt;&lt;br&gt;
Most explanations of MoE are theoretical. Here is the practical version.&lt;br&gt;
A dense model activates all its parameters for every token it processes. A 31B dense model is doing 31B parameters of work on every single token — whether that token is "the" or "malaria strain variant specific to Lagos State."&lt;br&gt;
A MoE model routes each token through specialized subnetworks called experts. Only a subset activates per token. Gemma 4 26B MoE has 26B total parameters but activates only ~4B per forward pass.&lt;br&gt;
What this means for you:&lt;/p&gt;

&lt;p&gt;Inference speed: closer to a 4B model&lt;br&gt;
Knowledge depth: closer to a 26B model&lt;br&gt;
For specialized tasks: the right experts activate for the right content&lt;/p&gt;

&lt;p&gt;That last point is the one that changed my project. When processing clinical documents, MoE routes medical terminology, geographic identifiers, and symptom patterns through subnetworks shaped by that kind of content. A dense model processes a Nigerian hospital record exactly the same way it processes a recipe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Started With Ollama and Had to Stop&lt;/strong&gt;&lt;br&gt;
The original Fisibel architecture was local inference via Ollama. If the platform handles real hospital record images, keeping inference local meant zero data leaving the machine. Maximum privacy. No transmission risk.&lt;br&gt;
It did not survive contact with reality.&lt;br&gt;
Downloading Gemma 4 locally through Ollama required pulling a model that was simply too large. In Nigeria, where data costs real money, the download cost alone made the pipeline economically unviable. African healthcare researchers operating in bandwidth-constrained environments cannot build on infrastructure that demands gigabytes just to get started.&lt;br&gt;
Lesson: Local inference is the right privacy instinct. But in bandwidth-constrained environments, the data cost of the initial model download is a real barrier, not an abstract one. If you are building for users outside fibre-connected cities, factor this in before you architect around Ollama.&lt;br&gt;
This pushed the pipeline to Google Cloud — not by preference, but by the economic reality of what local inference actually costs when you are not building from San Francisco.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Rejected Gemma 4 31B&lt;/strong&gt;&lt;br&gt;
Once on cloud inference, the natural assumption was that bigger meant better. Gemma 4 31B was tested first.&lt;br&gt;
It was not better. It was more expensive for the same output.&lt;br&gt;
For clinical signal extraction specifically — reading a hospital record and pulling out diagnoses, symptoms, treatment patterns, geographic identifiers — the 31B model burned tokens significantly faster without producing meaningfully deeper clinical signals than 26B MoE.&lt;br&gt;
The task does not reward raw parameter count. It rewards specialized reasoning over structured medical text. Paying more tokens for marginal returns on a pipeline that needs to run at scale across African health datasets is not a tradeoff worth making.&lt;br&gt;
When to use 31B: Maximum quality tasks where compute cost is not a constraint. Long-form generation. Complex reasoning chains where you need every parameter engaged. Research environments, not production pipelines running at scale.&lt;br&gt;
When not to use 31B: Specialized extraction tasks. Scale-sensitive pipelines. Anything where you will run the model hundreds or thousands of times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Tested Gemini and What the Results Actually Showed&lt;/strong&gt;&lt;br&gt;
Gemini was the obvious alternative. Same multimodal capability, faster inference, Google infrastructure. I tested it directly against Gemma 4 26B MoE on the same Lagos hospital record image.&lt;br&gt;
Gemini was faster. On clinical depth, it lost.&lt;br&gt;
The table below shows clinical signals extracted from the same input document across both models:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Clinical Signal Extracted&lt;/th&gt;
&lt;th&gt;Gemma 4 26B MoE&lt;/th&gt;
&lt;th&gt;Gemini&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary diagnosis&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comorbidity pattern&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malaria strain variant&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LGA-specific risk factor&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regional treatment protocol&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symptom progression timeline&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Geographic disease indicator&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Age-adjusted risk signal&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local drug resistance pattern&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nutritional comorbidity flag&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Gemini caught the general signals. Gemma 4 26B MoE caught the African-specific ones.&lt;br&gt;
No other model in this size class caught all 6 African-specific signals.&lt;br&gt;
This is not a criticism of Gemini. It is a demonstration of what MoE routing does on specialized content. The signals Gemini missed are not obscure — LGA-specific risk factors and regional treatment protocols are standard clinical identifiers in Nigerian medical documents. The difference is in how each model processes domain-specific terminology.&lt;br&gt;
Speed is not always the metric. For specialized extraction tasks, coverage is.&lt;br&gt;
| Use Case | Recommended Model |&lt;br&gt;
| Mobile / on-device / offline | Gemma 4 E2B |&lt;br&gt;
| Specialized domain extraction at scale | Gemma 4 26B MoE |&lt;br&gt;
| Maximum quality, unconstrained compute | Gemma 4 31B |&lt;br&gt;
| Bandwidth-constrained environments | Gemma 4 26B MoE via cloud |&lt;br&gt;
| Research and fine-tuning experiments | Gemma 4 31B |&lt;br&gt;
| Production pipelines with token cost sensitivity | Gemma 4 26B MoE |&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Gemma 4 E2B if:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You are building for mobile or on-device&lt;/li&gt;
&lt;li&gt;Your users have bandwidth or storage constraints&lt;/li&gt;
&lt;li&gt;You need offline capability after the first setup&lt;/li&gt;
&lt;li&gt;Your task is classification, routing, or simple generation&lt;/li&gt;
&lt;li&gt;You are targeting Android phones under $200&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Choose Gemma 4 26B MoE if:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You need reasoning depth at edge-level inference speed&lt;/li&gt;
&lt;li&gt;Your task involves specialized domain content — medical, legal, scientific, and regional&lt;/li&gt;
&lt;li&gt;You are running at scale, and token cost matters&lt;/li&gt;
&lt;li&gt;You need the best quality-to-cost ratio in production&lt;/li&gt;
&lt;li&gt;You want MoE expert routing to work in your favour on specialized inputs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Choose Gemma 4 31B if:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compute cost is not a constraint&lt;/li&gt;
&lt;li&gt;You need maximum quality on complex generation tasks&lt;/li&gt;
&lt;li&gt;You are doing research, fine-tuning experiments, or one-off analysis&lt;/li&gt;
&lt;li&gt;Latency is less important than output quality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The One Thing Nobody Tells You About Thinking Mode&lt;/strong&gt;&lt;br&gt;
Gemma 4 supports thinking traces. I assumed more thinking meant better answers everywhere. That assumption broke two features before I understood what was actually happening.&lt;br&gt;
Thinking mode helps when the model needs to route across multiple options — tool selection, complex reasoning, and ambiguous queries. It hurts when the task is pure structured output composition. With thinking enabled on a structured generation path, the model spends its entire token budget on internal reasoning traces and produces empty or malformed output.&lt;br&gt;
The rule I now follow: thinking ON for routing, thinking OFF for composition. They are different tasks and the model treats them differently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What This Means for Open Source AI&lt;/strong&gt;&lt;br&gt;
Gemma 4 26B MoE running on Google Cloud infrastructure, with no proprietary lock-in, matching or exceeding closed models on specialized domain tasks — that is not a minor footnote. That is the story.&lt;br&gt;
For developers building in bandwidth-constrained environments, for researchers working on underrepresented populations, for anyone who needs frontier-level reasoning without frontier-level costs, the gap between open and closed models just got significantly smaller.&lt;br&gt;
The model I needed to see African clinical signals clearly was not the biggest one. It was not the fastest one. It was the one built to route specialized knowledge to the right place.&lt;br&gt;
That turns out to matter more than size.&lt;/p&gt;

&lt;p&gt;I built this while developing Fisibel, a multimodal African synthetic health data platform. The clinical signals table above came from real tests on a Lagos hospital record. All findings are from production pipeline decisions, not benchmarks run for this post.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title># ⚡ EcoScan— See Which Device is Drinking Your Money</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Sun, 19 Apr 2026 17:42:27 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/-ecoscan-see-which-device-is-drinking-your-money-3o69</link>
      <guid>https://dev.to/temiloluwavalentine/-ecoscan-see-which-device-is-drinking-your-money-3o69</guid>
      <description>&lt;p&gt;_&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Last month, my dad got our electricity bill and just stared at it.&lt;/p&gt;

&lt;p&gt;He couldn't understand why it was so high. Was it the iron my mum uses every morning? The old fridge that runs all night? The TV nobody ever turns off? He had no idea. So he just paid it. Like he always does.&lt;/p&gt;

&lt;p&gt;That moment stayed with me.&lt;/p&gt;

&lt;p&gt;Millions of families across Nigeria, India, Ghana, Kenya and across the entire world pay electricity bills they don't understand. Not because they're careless. But because nobody ever made it simple enough to see where the money is actually going.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;EcoScan&lt;/strong&gt;  for Earth Day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EcoScan is an AI-powered energy auditor that works with just a gesture.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Point your camera at any electrical appliance in your home, your iron, your fridge, your phone charger, your TV. Pinch your thumb and index finger together. In seconds, you see exactly what that device costs you per month in your local currency, how much CO₂ it produces, and what you can do about it.&lt;/p&gt;

&lt;p&gt;No typing. No forms. No complicated settings. Just point and pinch.&lt;/p&gt;




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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/MnC80z1_I7w"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In the demo you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time hand tracking detecting the pinch gesture&lt;/li&gt;
&lt;li&gt;Gemini identifying a clothing iron, phone charger and smartphone&lt;/li&gt;
&lt;li&gt;The live dashboard updating instantly with monthly costs in local currency&lt;/li&gt;
&lt;li&gt;CO₂ impact, efficiency scores and energy-saving tips for each device&lt;/li&gt;
&lt;/ul&gt;




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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Valentinetemi" rel="noopener noreferrer"&gt;
        Valentinetemi
      &lt;/a&gt; / &lt;a href="https://github.com/Valentinetemi/EcoScan" rel="noopener noreferrer"&gt;
        EcoScan
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;⚡ EcoScan— See Which Device is Drinking Your Money&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Point your camera at any appliance. Pinch your fingers. Know instantly what it costs you and the planet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌍 The Story Behind This&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Last month, my dad got our electricity bill and just stared at it.&lt;/p&gt;
&lt;p&gt;He couldn't understand why it was so high. He had no idea which device was the problem. Was it the iron my mum uses every morning? The old fridge that runs all night? The TV nobody turns off?&lt;/p&gt;
&lt;p&gt;He just paid it. Like he always does. Because there was no easy way to find out.&lt;/p&gt;
&lt;p&gt;That moment stayed with me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Millions of families across Nigeria, India, Ghana, Kenya, across the entire world pay electricity bills they don't understand.&lt;/strong&gt; Not because they're careless. But because nobody ever made it simple enough to see where the money is actually going.&lt;/p&gt;
&lt;p&gt;So I built EcoScan for Earth Day.&lt;/p&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Valentinetemi/EcoScan" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Gesture Engine — MediaPipe in the Browser
&lt;/h3&gt;

&lt;p&gt;The pinch detection runs entirely in the browser using &lt;strong&gt;MediaPipe HandLandmarker&lt;/strong&gt; via WebAssembly. No backend needed for hand tracking.&lt;/p&gt;

&lt;p&gt;Every frame, it calculates the Euclidean distance between Landmark 4 (thumb tip) and Landmark 8 (index finger tip). When the distance drops below 0.055 in normalized space, that's a pinch. It triggers once, captures the frame, and sends it to Gemini.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dz&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;dy&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;dy&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;dz&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;dz&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pinching&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dist&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.055&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A cooldown ref prevents double-triggering during the async Gemini call.&lt;/p&gt;

&lt;h3&gt;
  
  
  The AI Brain -  Gemini 2.0 Flash Latest
&lt;/h3&gt;

&lt;p&gt;When a pinch is detected, the current video frame is captured as a base64 JPEG and sent to a Next.js API route, which calls &lt;strong&gt;Gemini 2.0 Flash Latest&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The prompt instructs Gemini to return structured JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"appliance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Electric Iron"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"laundry"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"wattageMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"wattageMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dailyHours"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"efficiencyScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"co2PerYear"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;47&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"costPerYear"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"habitChange"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Iron clothes in batches instead of one item at a time"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"alternative"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Steam generator iron with auto shut-off"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"funFact"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"An iron left on for 1 hour uses the same energy as charging your phone 50 times"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API key never touches the browser, all Gemini calls go through Next.js API routes server-side.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Electricity Pricing - 20 Countries
&lt;/h3&gt;

&lt;p&gt;The biggest insight: annual cost numbers mean nothing to most people. Monthly cost does.&lt;/p&gt;

&lt;p&gt;EcoScan supports 20 countries with real electricity rates, from Nigeria to Germany. Users select their country from a dropdown and all costs recalculate instantly in their local currency.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Live Dashboard
&lt;/h3&gt;

&lt;p&gt;As devices are scanned, a live dashboard builds up using &lt;strong&gt;Recharts&lt;/strong&gt;  wattage by device, CO₂ impact, monthly cost, eco grade, trees needed to offset, and equivalent flights per year. Everything is stored in localStorage so it persists between sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Next.js 14&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Framework + server-side API routes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Gemini 2.0 Flash Latest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vision AI — appliance identification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MediaPipe HandLandmarker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pinch gesture detection (WebAssembly)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Framer Motion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Animations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recharts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Live dashboard charts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best use of Google Gemini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemini 2.0 Flash Latest is the entire brain of EcoScan. Without it, the app is just a camera. With it, a single pinch gesture turns any appliance into a complete energy audit  wattage, CO₂, cost, efficiency score, habit tips and eco alternatives, all adapted to the user's country and local electricity rate.&lt;/p&gt;

&lt;p&gt;The prompt is carefully engineered to always return clean structured JSON so the UI can render results instantly. Gemini makes something that would normally require a database of thousands of appliances work with zero setup, it just knows.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;My dad still doesn't know which appliance was draining our electricity bill.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Now he can find out in seconds.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;That's why I built EcoScan.&lt;/em&gt; 🌍&lt;/p&gt;

&lt;p&gt;By @temiloluwavalentine_&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>earthday</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Predict House Prices with Python: A Beginner’s Machine Learning Guide</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Wed, 04 Mar 2026 01:34:30 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/predict-house-prices-with-python-a-beginners-machine-learning-guide-k6p</link>
      <guid>https://dev.to/temiloluwavalentine/predict-house-prices-with-python-a-beginners-machine-learning-guide-k6p</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.amazonaws.com%2Fuploads%2Farticles%2F0tvuk2jl9u0i8p16qx62.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.amazonaws.com%2Fuploads%2Farticles%2F0tvuk2jl9u0i8p16qx62.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
In the last article, “Getting Started with AI,” we covered the fundamentals—what machine learning is, the types of problems it solves, and the tools you need.&lt;/p&gt;

&lt;p&gt;Theory is important. But it only matters when you build something real.&lt;/p&gt;

&lt;p&gt;So let’s build.&lt;/p&gt;

&lt;p&gt;In this article, you’ll learn how to predict house prices using machine learning.&lt;/p&gt;

&lt;p&gt;Not a toy example. A real regression problem that real estate companies, investors, and data scientists solve every day.&lt;/p&gt;

&lt;p&gt;You’ll understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to structure data for a model&lt;/li&gt;
&lt;li&gt;How to train a machine learning system&lt;/li&gt;
&lt;li&gt;How to test if it actually works&lt;/li&gt;
&lt;li&gt;How to make predictions on new data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you’ll have built your first machine learning model. And more importantly, you’ll understand the process, because this same process works for predicting stock prices, weather, customer churn, or anything else.&lt;/p&gt;

&lt;p&gt;Let’s go.&lt;/p&gt;

&lt;p&gt;Step 1: Get Your Data&lt;/p&gt;

&lt;p&gt;Machine learning starts with data. You need examples to learn from.&lt;/p&gt;

&lt;p&gt;For this project, we’re using the Housing Prices dataset from Kaggle, which is a free dataset with real house data: size, number of bedrooms, bathrooms, parking, e.t.c and most importantly, the price.&lt;/p&gt;

&lt;p&gt;This is your training material. The model will learn the relationship between house features (size, bedrooms) and price.&lt;/p&gt;

&lt;p&gt;How to get the data:&lt;/p&gt;

&lt;p&gt;Go to Kaggle&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search “Housing Prices Dataset” or just click this link (&lt;a href="https://www.kaggle.com/datasets/yasserh/housing-prices-dataset" rel="noopener noreferrer"&gt;https://www.kaggle.com/datasets/yasserh/housing-prices-dataset&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Download the CSV file&lt;/li&gt;
&lt;li&gt;Upload to Google Colab&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2e1wcwgk2qzhzag4aaf.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.amazonaws.com%2Fuploads%2Farticles%2Ft2e1wcwgk2qzhzag4aaf.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Load the data:&lt;/p&gt;

&lt;p&gt;import pandas as pd&lt;/p&gt;

&lt;h1&gt;
  
  
  Load the dataset
&lt;/h1&gt;

&lt;p&gt;df = pd.read_csv(f"{path}/Housing.csv ")&lt;br&gt;
print(df)&lt;/p&gt;

&lt;h1&gt;
  
  
  Look at the first few rows
&lt;/h1&gt;

&lt;p&gt;print(df.head())&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.amazonaws.com%2Fuploads%2Farticles%2Fe0vt5g7bqte0eql2yuy2.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.amazonaws.com%2Fuploads%2Farticles%2Fe0vt5g7bqte0eql2yuy2.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You now have your data loaded. Next step: prepare it for the model.&lt;/p&gt;

&lt;p&gt;Step 2: Prepare Your Data&lt;/p&gt;

&lt;p&gt;Raw data isn’t ready for machine learning. You need to organize it.&lt;/p&gt;

&lt;p&gt;Your dataset has features (inputs) and a target (output). Features are what you know: size, bedrooms, bathrooms, e.t.c. Target is what you want to predict: price.&lt;/p&gt;

&lt;p&gt;The model learns the relationship between features and target. So you need to separate them.&lt;/p&gt;

&lt;p&gt;Separate features and target:&lt;/p&gt;

&lt;h1&gt;
  
  
  Target (what we want to predict)
&lt;/h1&gt;

&lt;p&gt;y = df['price']&lt;/p&gt;

&lt;h1&gt;
  
  
  Features (drop price column)
&lt;/h1&gt;

&lt;p&gt;X = df.drop('price', axis=1)&lt;/p&gt;

&lt;p&gt;Convert yes/no columns to 1/0&lt;br&gt;
This is to convert the text to numbers because machine learning only understands numbers, not text, so we convert the "yes" to 1 and the "no" to 0.&lt;/p&gt;

&lt;p&gt;binary_columns = [&lt;br&gt;
 ‘mainroad’, ‘guestroom’, ‘basement’,&lt;br&gt;
 ‘hotwaterheating’, ‘airconditioning’, ‘prefarea’&lt;br&gt;
]&lt;br&gt;
for col in binary_columns:&lt;br&gt;
 X[col] = X[col].map({'yes': 1, 'no': 0})&lt;br&gt;
We will handle furnishingstatus because some are furnished, semi-furnished, and unfurnished&lt;/p&gt;

&lt;p&gt;X = pd.get_dummies(X, columns=[‘furnishingstatus’], drop_first=True)&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.amazonaws.com%2Fuploads%2Farticles%2Fd8rr2rbjl5rpr70deklk.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.amazonaws.com%2Fuploads%2Farticles%2Fd8rr2rbjl5rpr70deklk.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Split into training and testing:&lt;/p&gt;

&lt;p&gt;Here’s the critical part: you can’t test on the same data you trained on. The model will memorize the answers instead of learning.&lt;/p&gt;

&lt;p&gt;So split your data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;80% for training (the model learns)&lt;/li&gt;
&lt;li&gt;20% for testing (we check if it actually works)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;from sklearn.model_selection import train_test_split&lt;br&gt;
X_train, X_test, y_train, y_test = train_test_split(&lt;br&gt;
    X, y, test_size=0.2, random_state=42&lt;br&gt;
)&lt;br&gt;
What random_state means:&lt;br&gt;
Scikit-learn randomly selects:&lt;br&gt;
80% of the data for training&lt;/p&gt;

&lt;p&gt;20% for testing&lt;/p&gt;

&lt;p&gt;If you don’t set random_state, the split will be different every time you run the code.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;p&gt;Your training data changes&lt;/p&gt;

&lt;p&gt;Your test data changes&lt;/p&gt;

&lt;p&gt;Your accuracy changes&lt;/p&gt;

&lt;p&gt;That’s not good for debugging or comparing models.&lt;/p&gt;

&lt;p&gt;Why this matters:&lt;/p&gt;

&lt;p&gt;Training data teaches the model. Test data proves it works on new data it’s never seen.&lt;/p&gt;

&lt;p&gt;Without this split, you’ll think your model is perfect. But it will fail when it meets real, unseen data.&lt;/p&gt;

&lt;p&gt;Now your data is ready. Time to train.&lt;/p&gt;

&lt;p&gt;Step 3: Train the Model&lt;/p&gt;

&lt;p&gt;Now comes the magic. You’re going to teach a machine to predict house prices.&lt;/p&gt;

&lt;p&gt;Create the model:&lt;/p&gt;

&lt;p&gt;from sklearn.linear_model import LinearRegression&lt;br&gt;
model = LinearRegression()&lt;br&gt;
That’s it. You’ve created an empty machine learning model. It knows nothing yet.&lt;/p&gt;

&lt;p&gt;Train it:&lt;/p&gt;

&lt;h1&gt;
  
  
  Train on your data
&lt;/h1&gt;

&lt;p&gt;model.fit(X_train, y_train)&lt;br&gt;
This is where learning happens. The model analyzes your training data to identify the mathematical relationship between features (size, bedrooms, e.t.c) and price.&lt;/p&gt;

&lt;p&gt;It’s asking, "What pattern connects these house features to their prices?”&lt;/p&gt;

&lt;p&gt;What’s happening behind the scenes:&lt;/p&gt;

&lt;p&gt;The model is drawing a line (or curve) through your data. It’s trying to find the best line that fits all the houses, where features predict price most accurately.&lt;/p&gt;

&lt;p&gt;This process is called “fitting” or “training.”&lt;/p&gt;

&lt;p&gt;In a few seconds, your model learned from hundreds of house examples. That’s machine learning.&lt;/p&gt;

&lt;p&gt;Step 4: Test the Model&lt;/p&gt;

&lt;p&gt;Your model is trained. But does it work?&lt;/p&gt;

&lt;p&gt;Time to test it on data it’s never seen before.&lt;/p&gt;

&lt;p&gt;Make predictions:&lt;/p&gt;

&lt;h1&gt;
  
  
  Predict on test data
&lt;/h1&gt;

&lt;p&gt;predictions = model.predict(X_test)&lt;br&gt;
print(predictions[:5])&lt;br&gt;
The model now looks at houses in the test set and predicts their prices. It’s guessing based on what it learned.&lt;/p&gt;

&lt;p&gt;Comparison&lt;br&gt;
We compare the actual price with the predicted price&lt;/p&gt;

&lt;p&gt;comparison = pd.DataFrame({&lt;br&gt;
 “Actual Price”: y_test.values[:5],&lt;br&gt;
 “Predicted Price”: predictions[:5]&lt;br&gt;
})&lt;br&gt;
print(comparison)&lt;br&gt;
Check how accurate it is:&lt;/p&gt;

&lt;p&gt;from sklearn.metrics import mean_squared_error, r2_score&lt;/p&gt;

&lt;h1&gt;
  
  
  Calculate error
&lt;/h1&gt;

&lt;p&gt;print("R²:", r2_score(y_test, predictions))&lt;br&gt;
print("MAE:", mean_absolute_error(y_test, predictions))&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.amazonaws.com%2Fuploads%2Farticles%2F1jcjuwqcfugn43ws7opo.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.amazonaws.com%2Fuploads%2Farticles%2F1jcjuwqcfugn43ws7opo.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After training and testing our linear regression model, we can see how well it predicts house prices:&lt;/p&gt;

&lt;p&gt;R² Score: 0.65&lt;/p&gt;

&lt;p&gt;Mean Absolute Error (MAE): ₦970,000&lt;/p&gt;

&lt;p&gt;What this means:&lt;/p&gt;

&lt;p&gt;R² Score (0–1): Measures how much of the variation in house prices the model can explain.&lt;/p&gt;

&lt;p&gt;0.65 means our model explains about 65% of the differences in house prices.&lt;/p&gt;

&lt;p&gt;The closer to 1, the better the model is at capturing patterns.&lt;/p&gt;

&lt;p&gt;Mean Absolute Error (MAE): Shows the average amount our predictions are off.&lt;/p&gt;

&lt;p&gt;₦970,000 means, on average, the predicted price is roughly ₦970k higher or lower than the actual price.&lt;/p&gt;

&lt;p&gt;Lower is better, but for a first beginner model, this is acceptable.&lt;/p&gt;

&lt;p&gt;Even though the model isn’t perfect, it successfully learns patterns from the data. This is exactly what beginners need to understand: how to go from raw data to predictions using machine learning.&lt;/p&gt;

&lt;p&gt;With this foundation, you can now experiment with more features, larger datasets, or advanced models in the future.&lt;/p&gt;

&lt;p&gt;Conclusion: You’re Now a Machine Learning Engineer&lt;/p&gt;

&lt;p&gt;You just built a real machine learning system.&lt;/p&gt;

&lt;p&gt;Not in theory. In practice. With code. With data. With real predictions.&lt;/p&gt;

&lt;p&gt;What you learned:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data is everything—garbage in, garbage out&lt;/li&gt;
&lt;li&gt;Splitting data prevents lying to yourself&lt;/li&gt;
&lt;li&gt;Training finds patterns automatically&lt;/li&gt;
&lt;li&gt;Testing proves it actually works&lt;/li&gt;
&lt;li&gt;Predictions are just applying what you learned&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why this matters:&lt;/p&gt;

&lt;p&gt;This exact process solves real problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Predicting stock prices&lt;/li&gt;
&lt;li&gt;Detecting diseases in medical images&lt;/li&gt;
&lt;li&gt;Recommending products&lt;/li&gt;
&lt;li&gt;Forecasting demand&lt;/li&gt;
&lt;li&gt;Detecting fraud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every machine learning project follows this same pipeline. Master it, and you can build anything.&lt;/p&gt;

&lt;p&gt;What’s next:&lt;/p&gt;

&lt;p&gt;Now that you understand the process, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try different algorithms (Random Forest, SVM, Neural Networks)&lt;/li&gt;
&lt;li&gt;Use bigger datasets&lt;/li&gt;
&lt;li&gt;Add more features&lt;/li&gt;
&lt;li&gt;Build on real problems in your own life&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tools are free. The knowledge is available. The only limit is how much you’re willing to build.&lt;/p&gt;

&lt;p&gt;Keep building.&lt;/p&gt;

&lt;p&gt;Use this process on a problem you care about.&lt;/p&gt;

&lt;p&gt;That’s where real learning happens.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temiloluwa Valentine&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  AI #MachineLearning #BuildingInPublic
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Getting Started with AI: A Practical Guide for Everyone</title>
      <dc:creator>Temiloluwa Valentine</dc:creator>
      <pubDate>Fri, 27 Feb 2026 12:58:25 +0000</pubDate>
      <link>https://dev.to/temiloluwavalentine/getting-started-with-ai-a-practical-guide-for-everyone-39jd</link>
      <guid>https://dev.to/temiloluwavalentine/getting-started-with-ai-a-practical-guide-for-everyone-39jd</guid>
      <description>&lt;p&gt;You've heard the word &lt;strong&gt;AI&lt;/strong&gt; everywhere. ChatGPT, image generators, and recommendation systems on Netflix.&lt;/p&gt;

&lt;p&gt;But here's what you're probably thinking: "AI is complicated. I'm not smart enough for this. I need a PhD in mathematics."&lt;/p&gt;

&lt;p&gt;That's not true.&lt;/p&gt;

&lt;p&gt;AI sounds mysterious because people make it sound mysterious. But underneath all the hype, it's just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data (examples)&lt;/li&gt;
&lt;li&gt;Math (finding patterns)&lt;/li&gt;
&lt;li&gt;Code (making it work)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can learn to code, you can learn AI.&lt;/p&gt;

&lt;p&gt;This guide breaks down what AI actually is, how it works, and how you can start building it, whether you're a CS student, a curious developer, or someone completely new to programming.&lt;/p&gt;

&lt;p&gt;No PhD required. Just curiosity and willingness to learn.&lt;/p&gt;

&lt;p&gt;Let's go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Is AI, Actually?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You hear three words thrown around: &lt;strong&gt;AI, Machine Learning, Deep Learning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People use them interchangeably. But they're not the same thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI (Artificial Intelligence)&lt;/strong&gt; = The big umbrella.&lt;br&gt;
Any system that can perform tasks that normally require human intelligence.&lt;br&gt;
Example: A chess program, a chatbot, a recommendation system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machine Learning&lt;/strong&gt; = a subset of AI.&lt;br&gt;
Instead of you telling the computer exactly what to do, you show it examples and let it figure out the pattern.&lt;br&gt;
Example: Show the system 1000 photos of cats and dogs. It learns to tell them apart without you writing specific rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Learning&lt;/strong&gt; = A subset of Machine Learning.&lt;br&gt;
Uses neural networks (inspired by how brains work) to find complex patterns.&lt;br&gt;
Example: ChatGPT, image generators, self-driving cars.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI is the whole pizza&lt;/li&gt;
&lt;li&gt;Machine Learning is a slice&lt;/li&gt;
&lt;li&gt;Deep Learning is a bit of that slice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why does this matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because you don't need deep learning to start. Most real-world problems are solved with machine learning.&lt;/p&gt;

&lt;p&gt;You can predict house prices, classify emails as spam, and recommend products, all with machine learning, not deep learning.&lt;/p&gt;

&lt;p&gt;Start simple. Go deep only when you need to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Types of Machine Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Machine learning breaks down into three main types. Understanding the difference is crucial because it changes how you approach problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Supervised Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have data with answers.&lt;/p&gt;

&lt;p&gt;The computer learns from examples where you've already labeled the correct answer. It's like learning with a teacher who shows you the right answer after each question.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Email spam detection: "This email is spam" (labeled)&lt;/li&gt;
&lt;li&gt;House price prediction: "This house costs ₦50 million" (labeled)&lt;/li&gt;
&lt;li&gt;Image recognition: "This is a cat" (labeled)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You give the system labeled examples&lt;/li&gt;
&lt;li&gt;It finds patterns between the input and the label&lt;/li&gt;
&lt;li&gt;When new data comes, it predicts the label&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most real-world problems use supervised learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Unsupervised Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have data with no answers.&lt;/p&gt;

&lt;p&gt;The computer finds patterns on its own. No teacher. No labels. Just raw data.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Customer segmentation: Group customers by behavior (they don't know the groups beforehand)&lt;/li&gt;
&lt;li&gt;Recommendation systems: Find users with similar tastes&lt;/li&gt;
&lt;li&gt;Clustering documents: Group similar articles together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You give the system unlabeled data&lt;/li&gt;
&lt;li&gt;It finds hidden patterns&lt;/li&gt;
&lt;li&gt;You discover insights you didn't know existed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;3. Reinforcement Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The computer learns by doing and getting feedback.&lt;/p&gt;

&lt;p&gt;Like training a dog: good behavior = reward. Bad behavior = no reward.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Self-driving cars learning to navigate&lt;/li&gt;
&lt;li&gt;Game AI learning to win&lt;/li&gt;
&lt;li&gt;Robots learning to walk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent (AI) takes an action&lt;/li&gt;
&lt;li&gt;It gets feedback (reward or penalty)&lt;/li&gt;
&lt;li&gt;It learns to maximize rewards&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Which one do you need?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with supervised learning. 90% of real problems can be solved this way.&lt;/p&gt;

&lt;p&gt;Most beginners should focus here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Tools: Languages and Libraries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Okay, so you understand the theory. Now what do you actually use to build AI?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Language: Python&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Python dominates AI for one reason: it's simple.&lt;/p&gt;

&lt;p&gt;You can focus on AI concepts, not syntax. Other languages (Java, C++) require more boilerplate code.&lt;/p&gt;

&lt;p&gt;If you don't know Python yet, learn it first. It's easy and widely used in the AI community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Libraries: What You Need&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think of libraries as toolkits. Each one solves different problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scikit-learn&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for: Beginners, traditional machine learning&lt;/li&gt;
&lt;li&gt;What it does: Classification, regression, clustering&lt;/li&gt;
&lt;li&gt;When to use: Predicting prices, spam detection, customer segmentation&lt;/li&gt;
&lt;li&gt;Difficulty: Easiest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TensorFlow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for: Deep learning, production systems&lt;/li&gt;
&lt;li&gt;What it does: Neural networks, large-scale models&lt;/li&gt;
&lt;li&gt;When to use: Image recognition, NLP, complex problems&lt;/li&gt;
&lt;li&gt;Difficulty: Medium-Hard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PyTorch&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for: Research, rapid prototyping&lt;/li&gt;
&lt;li&gt;What it does: Neural networks, flexible design&lt;/li&gt;
&lt;li&gt;When to use: Building custom models, research projects&lt;/li&gt;
&lt;li&gt;Difficulty: Medium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Honest Truth:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with scikit-learn. It's simple, powerful, and teaches you ML fundamentals without the complexity.&lt;/p&gt;

&lt;p&gt;Once you understand how machine learning actually works, move to TensorFlow or PyTorch.&lt;/p&gt;

&lt;p&gt;Don't jump to deep learning frameworks as a beginner. You'll get lost in the complexity and miss the fundamentals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where to Code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Colab&lt;/strong&gt; (free): Write Python in your browser, no installation needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jupyter Notebooks&lt;/strong&gt; (free): Write code locally with explanations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code&lt;/strong&gt; (free): Full IDE if you want to get serious&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with Google Colab. Seriously. No setup, just write code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your First Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Learn Python basics (loops, functions, data structures)&lt;/li&gt;
&lt;li&gt;Learn pandas (data manipulation)&lt;/li&gt;
&lt;li&gt;Learn scikit-learn (machine learning)&lt;/li&gt;
&lt;li&gt;Build a project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Don't skip steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Now Know:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What AI, Machine Learning, and Deep Learning are&lt;/li&gt;
&lt;li&gt;The three types of machine learning&lt;/li&gt;
&lt;li&gt;The tools you need to get started&lt;/li&gt;
&lt;li&gt;Where to write your first code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next step? Build something.&lt;/p&gt;

&lt;p&gt;In the next article, we'll walk through a real project - predicting house prices - and you'll see how all this theory actually works in practice.&lt;/p&gt;

&lt;p&gt;See you there.&lt;/p&gt;

&lt;p&gt;— Temiloluwa Valentine&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
