<?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: Beon Cloud</title>
    <description>The latest articles on DEV Community by Beon Cloud (@beoncloud).</description>
    <link>https://dev.to/beoncloud</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%2F3499881%2Fac9fd1b2-a617-4a6b-b5a5-ef934731414f.png</url>
      <title>DEV Community: Beon Cloud</title>
      <link>https://dev.to/beoncloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beoncloud"/>
    <language>en</language>
    <item>
      <title>Nature Quest (pocket edition): Bring Mindfulness Outdoor.</title>
      <dc:creator>Beon Cloud</dc:creator>
      <pubDate>Mon, 12 Oct 2026 01:40:37 +0000</pubDate>
      <link>https://dev.to/beoncloud/nature-quest-pocket-edition-bring-mindfulness-outdoor-3ofh</link>
      <guid>https://dev.to/beoncloud/nature-quest-pocket-edition-bring-mindfulness-outdoor-3ofh</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &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;p&gt;&lt;strong&gt;Nature Quest (pocket edition) is taking Gemma 4 E2B outside into the outdoor environment with no internet connection, fully Offline.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Pocket Nature Quest is a fully offline Android field companion that turns one outdoor photo into a short &lt;strong&gt;Look · Listen · Move&lt;/strong&gt; quest.&lt;/p&gt;

&lt;p&gt;The idea is deliberately a little paradoxical: &lt;em&gt;use AI on a phone to encourage someone to stop looking at their phone&lt;/em&gt;. Help user achieve wellness by observing their natural environment. The screen is only the starting point. A user takes a photo, optionally adds GPS context, chooses a time and energy level, and receives three simple actions to complete outside.&lt;/p&gt;

&lt;p&gt;The app is designed for walkers, families, travelers, nature beginners, or anyone who wants a small push to notice their surroundings more carefully. It does not need Wi-Fi, an API key, web search, or online geocoding. The photo, coordinates, prompt, and generated quest stay on the device.&lt;/p&gt;

&lt;h3&gt;
  
  
  An accidental by design
&lt;/h3&gt;

&lt;p&gt;This project began with a misunderstanding. My first prompt did not clearly explain the mobile, fully local application I had in mind, and my AI coding assistant moved too quickly into implementing a polished web prototype without first discussing the architecture with me.&lt;/p&gt;

&lt;p&gt;I share responsibility for that. I had a design in mind, but I had not communicated it clearly. The assistant also should have paused for requirements plan and involved me before implementation. We effectively built the project twice.&lt;/p&gt;

&lt;p&gt;That mistake became useful. It gave me two versions of the same product idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a fast web prototype using Gemini 3.6 Flash through an API; and&lt;/li&gt;
&lt;li&gt;the actual challenge entry: a Flutter Android application running the open-weight Gemma 4 E2B model locally through LiteRT-LM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web version is &lt;strong&gt;not&lt;/strong&gt; my challenge submission. I used it only as a comparison point while evaluating the local Android experience.&lt;/p&gt;

&lt;p&gt;More importantly, the reset changed how I worked. I defined the requirements, selected the target device and local model, rejected web search and reverse geocoding, tested the application outdoors, evaluated its output, and reported the failures. The coding assistant acted as an implementation partner and mentor under those decisions. That process taught me as much as the final code.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/beoncloud8/week-1-touch-grass-android" rel="noopener noreferrer"&gt;github.com/beoncloud8/week-1-touch-grass-android&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reference device:&lt;/strong&gt; Samsung Galaxy A25 5G, 8 GB RAM, Android 16&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Gemma 4 E2B in &lt;code&gt;.litertlm&lt;/code&gt; format, running entirely on-device&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Short Android demo
&lt;/h3&gt;

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

&lt;p&gt;&lt;em&gt;Pocket Nature Quest running on the Samsung Galaxy A25 with local, on-device Gemma inference.&lt;/em&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%2F6sv3np208rhxed0qlvk4.jpg" 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%2F6sv3np208rhxed0qlvk4.jpg" alt="Deck at Sunset Pier Boulevard PIK" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sunset Pier test scene 1: calm waterfront, shoreline plants, skyline, terraces, and white paper-boat sculptures.&lt;/em&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%2F0dgoulpkkfy67trum8j7.jpg" 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%2F0dgoulpkkfy67trum8j7.jpg" alt="Floral at Sunset Pier Boulevard PIK" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sunset Pier test scene 2: large floral cone sculptures on a wooden deck beside the water.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I took the app to Sunset Pier, a waterfront area beside a mangrove forest with space to walk, take photos, sit, dine, and drink coffee. This was the right kind of test: not a desk demo, but an actual walk where the generated quest had to match a real place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Field results
&lt;/h3&gt;

&lt;p&gt;I tested two photos with both versions. These are informal observations from one phone and two scenes, not a scientific benchmark.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scene&lt;/th&gt;
&lt;th&gt;Settings&lt;/th&gt;
&lt;th&gt;Local Gemma 4 E2B&lt;/th&gt;
&lt;th&gt;Gemini 3.6 Flash web prototype&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Waterfront and paper boats&lt;/td&gt;
&lt;td&gt;15 minutes · Curious&lt;/td&gt;
&lt;td&gt;1.5–2 minutes&lt;/td&gt;
&lt;td&gt;2–3 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Floral sculptures and deck&lt;/td&gt;
&lt;td&gt;10 minutes · Gentle&lt;/td&gt;
&lt;td&gt;1–1.5 minutes&lt;/td&gt;
&lt;td&gt;2–3 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the first photo, local Gemma produced:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Look — Observe the surface of the water.&lt;/strong&gt; Notice that the water appears relatively calm with some ripples.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listen — Ambient sounds.&lt;/strong&gt; Listen for sounds from the water or the surroundings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move — Walk along the edge.&lt;/strong&gt; Walk beside the landscaped foreground area.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the second photo, local Gemma asked me to examine the colors and shapes of the floral arrangements, listen for water sounds, and walk slowly along the wooden deck.&lt;/p&gt;

&lt;p&gt;The cloud model was much faster and its language was more specific. It noticed the paper-boat sculptures, shoreline plants, terraced sections, floral textures, railing, skyline, and changing perspective. Gemma's wording was stiffer and more general.&lt;/p&gt;

&lt;p&gt;From the first photo, the cloud model produced&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Look - Compare Boat Sculptures and Shoreline Plants.&lt;/strong&gt; Scan the calm water to locate the white paper-boat sculptures floating offshore. Then observe the green groundcover spreading across the shoreline rocks below the walkway wall.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listen - Tune In to Waterfront Sounds.&lt;/strong&gt; Pause near the edge of the promenade and close your eyes for 30 seconds. Listen for the gentle lap of water against the embankment or birds along the shoreline foliage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move - Trace the Terraced Pathway.&lt;/strong&gt; Walk slowly along the upper paved deck toward the viewing area overlooking the floating boats, staying safely behind all railings and walls.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We can see that the cloud model produce more articulate output, but the local model succeeded at the part that mattered most to this experiment: it looked at a real photo, created a safe three-part activity, and did so without sending my photo or precise location anywhere.&lt;/p&gt;

&lt;p&gt;That trade-off became my main lesson. “Better” does not mean only richer prose or lower latency. For a tool intended for trails, waterfronts, rural areas, or private family outings, offline availability and data ownership are also product features.&lt;/p&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/beoncloud8" rel="noopener noreferrer"&gt;
        beoncloud8
      &lt;/a&gt; / &lt;a href="https://github.com/beoncloud8/week-1-touch-grass-android" rel="noopener noreferrer"&gt;
        week-1-touch-grass-android
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fully offline Flutter field companion powered by on-device Gemma 4 E2B
    &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;Pocket Nature Quest — Android&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Pocket Nature Quest is a fully offline Flutter field companion for the
Hacktoberfest 2026 Week 1 &lt;strong&gt;Touch Grass&lt;/strong&gt; challenge. Take one outdoor photo and
Gemma 4 E2B creates a short mission for your eyes, ears, and feet—without
sending the photo or location to a server.&lt;/p&gt;
&lt;p&gt;This repository is the Android application. The earlier web prototype remains
a separate project and is not a runtime dependency.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Product flow&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Import a local &lt;code&gt;gemma-4-E2B-it.litertlm&lt;/code&gt; model once.&lt;/li&gt;
&lt;li&gt;Take or choose an outdoor photo.&lt;/li&gt;
&lt;li&gt;Optionally add a place description and device GPS coordinates.&lt;/li&gt;
&lt;li&gt;Choose the available time and energy level.&lt;/li&gt;
&lt;li&gt;Generate a validated Look · Listen · Move field card locally.&lt;/li&gt;
&lt;li&gt;Start low-distraction field mode and put the phone down.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why the model is not in Git or the APK&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The E2B model is several gigabytes. Committing it would make the repository and
APK impractical and would blur the model's…&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/beoncloud8/week-1-touch-grass-android" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The application source is MIT licensed. The Gemma model weights are not committed to Git or bundled in the APK; users select their separately downloaded &lt;code&gt;.litertlm&lt;/code&gt; model on the phone.&lt;/p&gt;

&lt;p&gt;The central inference flow lives behind &lt;code&gt;LocalGemmaService&lt;/code&gt;, keeping model management out of the UI. The response must parse into exactly three distinct steps—Look, Listen, and Move—before the application displays it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;FlutterEdgeAi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getActiveModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;maxTokens:&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;preferredBackend:&lt;/span&gt; &lt;span class="n"&gt;PreferredBackend&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gpu&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;preferredVisionBackend:&lt;/span&gt; &lt;span class="n"&gt;PreferredBackend&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gpu&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;supportImage:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;maxNumImages:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;createChat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;supportImage:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;systemInstruction:&lt;/span&gt; &lt;span class="n"&gt;_systemInstruction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;temperature:&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;topK:&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;maxOutputTokens:&lt;/span&gt; &lt;span class="mi"&gt;700&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;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The stack is intentionally small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flutter and Dart&lt;/strong&gt; for the Android interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 E2B&lt;/strong&gt;, an open-weight multimodal model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiteRT-LM&lt;/strong&gt; through &lt;code&gt;flutter_edge_ai&lt;/code&gt; and &lt;code&gt;flutter_edge_ai_litertlm&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;image_picker&lt;/code&gt; for the camera and gallery&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;image&lt;/code&gt; for orientation correction and memory-conscious resizing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;geolocator&lt;/code&gt; for optional raw coordinates&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;file_picker&lt;/code&gt; and &lt;code&gt;path_provider&lt;/code&gt; for importing and preserving the local model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow is:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;camera or gallery
      ↓
resize image to 768 px
      ↓
optional GPS coordinates + time + energy
      ↓
safety-first structured prompt
      ↓
Gemma 4 E2B via LiteRT-LM
      ↓
validate JSON as Look · Listen · Move
      ↓
low-distraction field card and timer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The model prompt prohibits claims about uncertain species, edibility or medical advice, touching wildlife, trespassing, climbing, entering water, and leaving a safe path. Coordinates are treated only as context; the app performs no reverse geocoding.&lt;/p&gt;
&lt;h3&gt;
  
  
  A bug that only appeared on the second run
&lt;/h3&gt;

&lt;p&gt;The first outdoor test worked, but reopening the application later produced:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bad state: No active inference model set.
Use FlutterEdgeAi.installModel() first.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The model file still existed. The problem was lifecycle and storage: the UI treated “a model file is listed” as equivalent to “the model is active,” and the imported 2.4 GB model was referenced through a temporary file-picker cache path.&lt;/p&gt;

&lt;p&gt;I changed the app to copy the selected model into durable application storage, verify actual activation on startup, restore it when necessary, and block generation while preparation is still running. Then I installed the new APK over the old one, migrated the model, force-closed the app, reopened it, and verified that the active model pointed to the permanent path.&lt;/p&gt;

&lt;p&gt;That failure was a useful reminder: a successful first inference is not the same as a reliable mobile application. Restart testing matters.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;The open model is not decoration in this project. It is the reason the Android version can exist as designed.&lt;/p&gt;

&lt;p&gt;With Gemma 4 E2B running locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a walk can start somewhere with no mobile signal;&lt;/li&gt;
&lt;li&gt;private photos never need to leave the phone;&lt;/li&gt;
&lt;li&gt;raw GPS coordinates stay under the user's control;&lt;/li&gt;
&lt;li&gt;there is no API key to expose and no per-request inference bill;&lt;/li&gt;
&lt;li&gt;the inference layer and prompt can be inspected, changed, or replaced; and&lt;/li&gt;
&lt;li&gt;the experience remains available even if a hosted service is unreachable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The comparison also kept me honest about the costs. On my mid-range Galaxy A25, local inference took roughly one to two minutes, while Gemini returned more detailed writing in seconds. A compact edge model requires tighter prompts, patient UX, and realistic expectations.&lt;/p&gt;

&lt;p&gt;For Pocket Nature Quest, I accept that cost because the application is meant to work outside—and because a photo of where someone is standing, combined with GPS coordinates, is exactly the kind of data that deserves a local-first option.&lt;/p&gt;
&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I used Codex as a coding assistant and mentor during planning, implementation, debugging, and testing. I made the product decisions and evaluated the app on a physical phone outdoors; the assistant generated and revised significant parts of the code and helped diagnose the model lifecycle bug.&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building and Field-Testing Pocket Nature Quest with Local Gemma 4 E2B&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I want to enter the Touch Grass challenge in the Best Use of Gemma category. Please involve me in the development and teach me as we work.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;We began with a web prototype too quickly, before settling the requirements together.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I want an Android application that runs locally on my Samsung Galaxy A25, uses Flutter and Gemma 4 E2B, and works fully offline without web search or online geocoding. Let us plan before implementation.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;We agreed on an offline architecture: camera or gallery input, optional raw GPS, a safety-first prompt, Gemma inference through LiteRT-LM, strict Look/Listen/Move JSON validation, and a low-distraction field mode.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-projectscaffold"&gt;project_scaffold&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Create the Flutter Android application in the separate challenge folder.&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Create the Flutter Android application in the separate challenge folder.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created the Flutter project and isolated local inference behind LocalGemmaService.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;The application works on my phone. The photo and GPS work, and Gemma creates quests, although its language is stiffer than the cloud prototype.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;We treated that as a meaningful edge-versus-cloud trade-off: slower, less polished language in exchange for offline operation, privacy, and no API dependency.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;On a later launch I received: Bad state: No active inference model set. Use FlutterEdgeAi.installModel() first.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I inspected the phone and found that the 2.4 GB model still existed and its metadata was present, but it was referenced through a temporary file-picker cache path. The UI checked only whether a model was listed, not whether it was active.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-androiddiagnostics"&gt;android_diagnostics&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Inspect the app's local model file, activation metadata, and restart behavior.&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Inspect the app's local model file, activation metadata, and restart behavior.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Confirmed the model file and identity existed; diagnosed temporary storage and activation lifecycle mismatch.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;After the user approved the plan, I added durable application storage, startup reactivation, readiness checks, and progress UI. Analysis and tests passed; the APK was installed over the existing app; the model migrated; and a force-close/reopen test confirmed that the active identity pointed to permanent storage.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-flutterverification"&gt;flutter_verification&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Analyze, test, build, install, migrate, and restart the Android app.&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Analyze, test, build, install, migrate, and restart the Android app.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;No analysis issues; all tests passed; APK built and installed; model survived restart from durable storage.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I tested two outdoor scenes at Sunset Pier. Local Gemma took roughly one to two minutes, while the Gemini web prototype took two to three seconds and used more specific language. The local app still succeeded privately and offline.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;We turned those real-world observations into an honest challenge report that distinguishes the Gemini comparison prototype from the submitted, fully local Gemma Android application and discloses meaningful AI assistance.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        11 of 11 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/building-and-field-testing-pocket-nature-quest-with-local-gemma-4-e2b-6quxx0"&gt;Open the curated Agent Session on DEV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article was drafted with meaningful AI assistance and reviewed against my own test notes and observations.&lt;/p&gt;

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

&lt;p&gt;My biggest lesson was not a Flutter API. It was that requirements are part of programming.&lt;/p&gt;

&lt;p&gt;When I did not explain the intended platform, constraints, and role of the local model, we produced the wrong thing—even though it was beautiful and functional. Once I wrote down those decisions and asked for a plan before implementation, I became more involved and learned more from the work.&lt;/p&gt;

&lt;p&gt;I also learned that evaluating software in its real setting changes the conversation. At Sunset Pier I could see both the limitations of a small local model and the value of an application that continued to work privately, with no network dependency.&lt;/p&gt;

&lt;p&gt;Next I would improve the prompt with a few examples to make Gemma's language warmer and less repetitive, add structured latency measurements over more scenes, and continue testing memory use on mid-range Android hardware.&lt;/p&gt;

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

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

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&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;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm" rel="noopener noreferrer"&gt;Gemma 4 LiteRT-LM model on Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google-ai-edge/gallery" rel="noopener noreferrer"&gt;Google AI Edge Gallery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/googleai/on-device-ai-with-the-google-ai-edge-gallery-and-gemma-4-ena"&gt;On-Device AI with the Google AI Edge Gallery and Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pielounw/on-device-ai-in-flutter-3np1"&gt;On-Device AI in Flutter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>An Agentic Journal: From Assumption to Revelation</title>
      <dc:creator>Beon Cloud</dc:creator>
      <pubDate>Sat, 13 Dec 2025 14:30:10 +0000</pubDate>
      <link>https://dev.to/beoncloud/an-agentic-journal-from-assumption-to-revelation-2ogg</link>
      <guid>https://dev.to/beoncloud/an-agentic-journal-from-assumption-to-revelation-2ogg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Day 1 - Monday, December 8, 2025&lt;/strong&gt;&lt;br&gt;
Yes, I'm starting this course late, 24 days after it officially closed on November 14, 2025. But here I am this morning, in front of my old Macbook, stubbornly trying to learn about agentic AI. I recheck the setup instructions; everything is set and ready. The Day 1 assignment explanation has four checklists: podcast, whitepaper, video, and codelabs. I choose to start by reading the whitepaper, which is the most demanding part of all the assignments.&lt;br&gt;
After finishing the reading, I listen to the podcast summary and do the codelabs. I must say, the codelabs are well-written, clear and easy to follow.  I finish the day by watching the livestream at 8 PM, after dinner. The speakers are top-notch and knowledgeable. I’m tired but excited to watch.&lt;br&gt;
&lt;u&gt;What concept resonated with me on Day 1?&lt;/u&gt;&lt;br&gt;
The model is the "brain," and the tools are the "hands." This is a basic yet fundamental understanding for me. Perhaps "agent" is just a verbose term for a programmer; what we know as agentic AI is a collection of functions and API calls. However, LLMs give AI models reasoning capabilities and allow them to act autonomously. Suddenly, a function with reasoning capabilities becomes an agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 2 - Tuesday, December 9, 2025&lt;/strong&gt;&lt;br&gt;
I needed to finish Day 2 before 4 PM, as I had a night class that day. So, I began the morning by reading the whitepaper. Once again, reading the entire whitepaper was the most demanding task among the assignments. I could have listened to the summary podcast or asked Gemini to create a summary, but I chose to read it from cover to cover. I couldn't manage to finish the codelabs since I had to attend my night class. I continued to finish the codelabs, listen to the podcast, and watch the video livestream. I turned off my computer at 1:20 AM.&lt;br&gt;
&lt;u&gt;What concept resonated with me on Day 2?&lt;/u&gt;&lt;br&gt;
My attention was captured by the threats and security risks in MCP (Meta-Config Protocol). Specifically, tool shadowing, malicious tool definitions, information leaks, and the unlimited scope of access. MCP needs to be continuously developed to mature, especially in security. Anthropic's strategy to give MCP to the Linux Foundation could be a positive initiative to further develop MCP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3 - Wednesday, December 10, 2025&lt;/strong&gt;&lt;br&gt;
I had registered for a webinar that morning from Google about Gemini 3. I started Day 3 at 11:00 AM, beginning as with the previous days by reading the whitepaper. There was nothing particularly special about that day. After finishing the reading, I listened to the podcast, did the codelabs, and watched the video.&lt;br&gt;
&lt;u&gt;What concept resonated with me on Day 3?&lt;/u&gt;&lt;br&gt;
The main concept of Day 3 was giving an agent memory: reasoning plus memory equals intelligence. I think this is the most important concept of all five days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 4 - Thursday, December 11, 2025&lt;/strong&gt;&lt;br&gt;
Fatigue was creeping in. I felt very tired reading the whitepaper on Day 4. My progress was slow. I considered breaking that day's material into two days, but nevertheless, I continued to march on, determined to finish it in one day. Of all the assignments, watching the livestream video was the most enjoyable. Kanchana and Anant led the conversation very well, and answering Anant's quiz at the end of the video was fun.&lt;br&gt;
&lt;u&gt;What concept resonated with me on Day 4?&lt;/u&gt;&lt;br&gt;
The agent evaluation strategies: the "Outside-In" evaluation (black box) and the "Inside-Out" evaluation (glass box).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 5 - Friday, December 12, 2025&lt;/strong&gt;&lt;br&gt;
At last, the final day! I must be honest that, for the last four days, my focus was on finishing the assignments, and I forgot to check the Discord forum. Today, I spent time looking at it and found much important information that I should have checked out on Day 1. I finished today's assignment earlier than the previous four days. &lt;br&gt;
&lt;u&gt;What concept resonated with me on Day 5?&lt;/u&gt;&lt;br&gt;
A2A (Agent-to-Agent communication) is the current frontier of agentic AI development and has not yet reached maturity, but the future is there. Agentic AI is still in its foundational stage; progress will happen day by day, and changes will happen minute by minute. I realize that finishing this course is just the beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How has my understanding of AI agents evolved?&lt;/strong&gt;&lt;br&gt;
By attending this course, my understanding of agentic AI has absolutely improved. Many of my assumptions were confirmed or rebuffed. For those who have not yet taken this course, I highly recommend it. It's a gem. Thank you, Kaggle and Google, for developing this course.&lt;br&gt;
Over these five days of finishing this course, I also contemplated whether AI will be here to stay or is just a technology hype. I thought to myself that I haven't seen anything yet.&lt;/p&gt;

</description>
      <category>googleaichallenge</category>
      <category>ai</category>
      <category>agents</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
