<?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: Arkaprava Bhattacharya</title>
    <description>The latest articles on DEV Community by Arkaprava Bhattacharya (@arkaprava_bhattacharya_0d).</description>
    <link>https://dev.to/arkaprava_bhattacharya_0d</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%2F4177014%2F28766029-1969-4b5d-b9fa-00c169afed21.jpg</url>
      <title>DEV Community: Arkaprava Bhattacharya</title>
      <link>https://dev.to/arkaprava_bhattacharya_0d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arkaprava_bhattacharya_0d"/>
    <language>en</language>
    <item>
      <title>Three Things Outside: letting AI start an observation, then putting the phone away</title>
      <dc:creator>Arkaprava Bhattacharya</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:55:23 +0000</pubDate>
      <link>https://dev.to/arkaprava_bhattacharya_0d/three-things-outside-letting-ai-start-an-observation-then-putting-the-phone-away-2215</link>
      <guid>https://dev.to/arkaprava_bhattacharya_0d/three-things-outside-letting-ai-start-an-observation-then-putting-the-phone-away-2215</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Three Things Outside is a small mobile web exercise: take one outdoor photo, let an open-source object detector suggest three ways to look more closely, then put the phone away for three minutes. The last prompt always asks what the AI missed. After the timer, the person writes one field note. It is for anyone who wants a reason to stop identifying everything on a screen and pay attention outside.&lt;/p&gt;

&lt;p&gt;The interesting result should be the human note, not the model's labels.&lt;/p&gt;

&lt;p&gt;The screenshots show a 15-second judge-demo countdown and a completed note reading “a smell after rain.” They show the interaction, but I have not documented a verified outdoor field test, so I will not present them as proof of one. In the repeatable public-site test, a synthetic PNG gave the model no confident objects. The app said so plainly and still offered three prompts, including one about what lay beyond the frame. That is the behavior I wanted: an imperfect model can start an observation without pretending it saw everything.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live HTTPS demo:&lt;/strong&gt; &lt;a href="https://main.dkm0k3epi65hg.amplifyapp.com/" rel="noopener noreferrer"&gt;https://main.dkm0k3epi65hg.amplifyapp.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshot 1 — 15-second judge timer:&lt;/strong&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%2F4ew6yn0tzqjgbnk7d3gb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4ew6yn0tzqjgbnk7d3gb.png" alt="The judge demo timer asking the user to put the phone away" width="799" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshot 2 — completed field note:&lt;/strong&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%2Fywf1q8a3jtt0j9bquejj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fywf1q8a3jtt0j9bquejj.png" alt="A completed field note reading “a smell after rain”" width="799" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For judges, the same flow has a clearly labeled 15-second demo mode after photo analysis. The standard exercise is three minutes.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/ABhattacharya-dev/three-things-outside" rel="noopener noreferrer"&gt;https://github.com/ABhattacharya-dev/three-things-outside&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run locally with &lt;code&gt;python -m http.server 8000&lt;/code&gt;, then open &lt;code&gt;http://localhost:8000/&lt;/code&gt;. The repository README explains the full journey, test checklist, limitations, and deployment.&lt;/p&gt;

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

&lt;p&gt;The app is buildless HTML, CSS, and JavaScript. TensorFlow.js 4.22.0 runs COCO-SSD 2.2.3 in the browser with its &lt;code&gt;lite_mobilenet_v2&lt;/code&gt; base. A selected JPEG, PNG, or WebP up to 12 MB is decoded into a canvas scaled to at most 960 pixels on its longest edge. Local inference yields up to three classes scoring at least 50%, or an honest empty result. The detections shape the first prompt. The second asks for a sensory detail. The third asks what AI missed. A wall-clock timer sends the person away from the phone; a field note closes the loop. The latest text result uses browser &lt;code&gt;localStorage&lt;/code&gt;; sharing uses Web Share with a selectable text fallback.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
  A[Outdoor photo] --&amp;gt; B[Browser canvas]
  B --&amp;gt; C[Local COCO-SSD inference]
  C --&amp;gt; D[Three prompts]
  D --&amp;gt; E[Phone-away timer]
  E --&amp;gt; F[Field note]
  F --&amp;gt; G[Text-only local result and share]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The app contains no photo upload path or backend. The temporary photo URL is revoked and the preview canvas is cleared after inference. Only the latest note text, completion time, and detected class names go into &lt;code&gt;localStorage&lt;/code&gt;; a blocked store leaves the note usable until reload. The first visit requires downloads of the libraries and model, so this is not an offline-first app. The model can be wrong and must never be treated as a safety or species identifier. A browser Network capture is still needed before claiming the no-upload property was independently verified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local audit, October 11:&lt;/strong&gt; The four browser self-checks passed. The pinned model loaded and analyzed a tiny valid PNG in a desktop browser, producing the honest zero-detections path. At desktop and 320 px simulated mobile widths, no horizontal overflow appeared; keyboard focus reached the skip link and file input. Temporary local stubs verified confident detection display, failed model loading with Retry, failed inference with Retry, unsupported/corrupt/oversized image errors, blocked storage, restart, and text-only share fallback. Both the full three-minute timer and 15-second judge mode reached the field-note screen. The synthetic images and stubbed detections are test fixtures, not outdoor evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public HTTPS audit, October 11:&lt;/strong&gt; An Amplify manual deployment contained only the three runtime files. Requests for the README, DEV draft, project instructions, and self-check page returned 404. In a fresh browser tab at the public URL, the pinned model became ready, analyzed a valid synthetic PNG with zero confident detections, produced three prompts, completed the full 15-second judge timer, and saved a field note. The synthetic image is a technical fixture, not outdoor evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Still to verify:&lt;/strong&gt; physical mobile Chrome and camera permission, a real outdoor image and three-minute phone-away run, a reduced-motion device setting, native Web Share, and a Network capture showing no photo upload.&lt;/p&gt;

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

&lt;p&gt;An inspectable, replaceable open-source detector makes the photo-to-prompt loop possible without a private inference API. There is no per-image API fee and no account. Because the model's limited object vocabulary is visible, its misses become part of the experience: the person can notice sounds, changes, and details that a single frame cannot capture. Local inference makes a private-photo design possible while keeping the screen part short.&lt;/p&gt;

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

&lt;p&gt;This &lt;a href="https://dev.to/agent_sessions/799"&gt;public curated DevRelay build and verification session&lt;/a&gt; records selected, paraphrased milestones. It contains no raw tool logs, private machine paths, credentials, or photos.&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;Three Things Outside — curated build and verification session&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;Requested a buildless Three Things Outside MVP for the Week 1 Touch Grass challenge, using pinned TensorFlow.js 4.22.0 and COCO-SSD 2.2.3, a three-minute outdoor exercise, a 15-second judge demo, privacy boundaries, accessibility, and a DEV draft.&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;Curated work summary: built the static HTML, CSS, and JavaScript app with local photo inference, three prompts, wall-clock timer, local-only latest text result, text sharing fallback, error states, a browser logic self-check, README, MIT license, and DEV draft. No backend, account, geolocation, API key, or paid inference was added.&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;Requested an audit against the project Definition of Done and live Week 1 rules, with desktop and 320px browser checks and failure-path testing.&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;Curated work summary: ran four browser logic checks; tested pinned model loading and real zero-detection inference; exercised timer durations, restart, invalid images, model and inference failures, blocked storage, sharing fallback, keyboard focus, and 320px overflow. Fixed reproducible issues and documented unverified real-device checks.&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;Requested a static AWS Amplify deployment, public HTTPS verification, a secret and personal-data scan, and a final article audit without publishing the DEV entry.&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;Curated work summary: deployed only index.html, styles.css, and app.js; confirmed other project files return 404; verified the public model load and full 15-second flow with a synthetic PNG; scanned the project and found no credential or personal-data matches. The outdoor test remains a human task.&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;Requested creation and posting of a public GitHub repository with updated documentation.&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;Curated work summary: created the public repository &lt;a href="https://github.com/ABhattacharya-dev/three-things-outside" rel="noopener noreferrer"&gt;https://github.com/ABhattacharya-dev/three-things-outside&lt;/a&gt;, pushed the source, and updated README and DEV draft links. The DEV article was not published.&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;
        8 of 8 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Credits and disclosure
&lt;/h2&gt;

&lt;p&gt;The app uses &lt;a href="https://github.com/tensorflow/tfjs" rel="noopener noreferrer"&gt;TensorFlow.js&lt;/a&gt;, &lt;a href="https://github.com/tensorflow/tfjs-models/tree/master/coco-ssd" rel="noopener noreferrer"&gt;COCO-SSD&lt;/a&gt;, and its &lt;a href="https://cocodataset.org/" rel="noopener noreferrer"&gt;COCO object classes&lt;/a&gt;. Project code is MIT licensed; upstream code, model weights, and data keep their own licenses. Codex AI produced this article and substantial project code at the project owner's request. The post is marked &lt;code&gt;fully_autonomous&lt;/code&gt; in DEV's AI disclosure. The two screenshots were supplied by the project owner; no real outdoor-test account was provided.&lt;/p&gt;

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