<?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: Eduardo Rojas</title>
    <description>The latest articles on DEV Community by Eduardo Rojas (@hairon).</description>
    <link>https://dev.to/hairon</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%2F4164392%2F4939170a-109a-4e0f-af3b-0a3123453ba4.png</url>
      <title>DEV Community: Eduardo Rojas</title>
      <link>https://dev.to/hairon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hairon"/>
    <language>en</language>
    <item>
      <title>Clearing: an outdoor photo journal powered by local Gemma</title>
      <dc:creator>Eduardo Rojas</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:57:37 +0000</pubDate>
      <link>https://dev.to/hairon/clearing-an-outdoor-photo-journal-powered-by-local-gemma-59ok</link>
      <guid>https://dev.to/hairon/clearing-an-outdoor-photo-journal-powered-by-local-gemma-59ok</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Clearing is a small Flutter app designed to make a walk the main event. I take a photo outdoors; a locally running Gemma model checks whether it shows an outdoor scene and writes a short description and tags. Verified moments become pins on my personal map and entries in a chronological journal.&lt;/p&gt;

&lt;p&gt;The idea is to give a walk a lightweight record without turning it into another social feed. There are no likes or public profiles.&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%2Fylx6zk0llg2hd32rxytk.jpeg" 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%2Fylx6zk0llg2hd32rxytk.jpeg" alt=" " width="591" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The app runs as a PWA on my iPhone, with the backend and model running on my own computer. I’m including screenshots here because I don’t have a permanent public demo link.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/mi9ZsQyb2dc" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/hairon02/cleaning_app" rel="noopener noreferrer"&gt;Clearing on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The client is Flutter Web. A local FastAPI backend stores verified photos and app data in SQLite, then calls Gemma through Ollama for image verification and descriptions. Perceptual hashing helps identify repeated photos.&lt;/p&gt;

&lt;p&gt;The flow is deliberately small: capture, verify, then show the result on the map and in the journal. The map uses external map tiles; the photo and exact location stay with my local backend rather than going to a hosted vision API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Running an open-weight model locally lets me keep the image verification under my control and avoid sending personal photos to a closed vision service. I can inspect the flow and change the model or backend as the project evolves.&lt;/p&gt;

&lt;p&gt;There is a tradeoff: the phone still needs to reach my computer while the app is running, and the map needs map tiles. Local inference keeps the photo analysis local, but it doesn’t make the whole app independent of connectivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I used AI assistance while building and debugging this project. I’m not attaching a session transcript to this post.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

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