<?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: Takahata Shintaro</title>
    <description>The latest articles on DEV Community by Takahata Shintaro (@shintarotakahata2323).</description>
    <link>https://dev.to/shintarotakahata2323</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Takahata Shintaro</title>
      <link>https://dev.to/shintarotakahata2323</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shintarotakahata2323"/>
    <language>en</language>
    <item>
      <title>plantsphoto: A Tiny Browser AI That Rewards You for Touching Grass</title>
      <dc:creator>Takahata Shintaro</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:51:46 +0000</pubDate>
      <link>https://dev.to/shintarotakahata2323/plantsphoto-a-tiny-browser-ai-that-rewards-you-for-touching-grass-o4j</link>
      <guid>https://dev.to/shintarotakahata2323/plantsphoto-a-tiny-browser-ai-that-rewards-you-for-touching-grass-o4j</guid>
      <description>&lt;p&gt;The image itself is passed directly to the local model in the browser. There is no image upload API, database, or server-side image processing.&lt;br&gt;
The source code and deployment workflow are available on GitHub:&lt;br&gt;
&lt;a href="https://github.com/M-Taka-Shin/Touch-Grass" rel="noopener noreferrer"&gt;https://github.com/M-Taka-Shin/Touch-Grass&lt;/a&gt;&lt;br&gt;
The site is deployed with GitHub Pages, and updates to the master branch are automatically deployed through GitHub Actions.&lt;br&gt;
Why open innovation matters&lt;br&gt;
This project would be much less useful if every image had to be sent to a remote service.&lt;br&gt;
Using an open-source, browser-based machine-learning stack makes the core experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Private: photos stay in the browser during classification.&lt;/li&gt;
&lt;li&gt;Affordable: there is no per-image API bill.&lt;/li&gt;
&lt;li&gt;Inspectable: the model and application flow can be examined and modified.&lt;/li&gt;
&lt;li&gt;Portable: the app is a static website that can run on a normal laptop or phone browser.&lt;/li&gt;
&lt;li&gt;Replaceable: the classifier can be swapped for another model as the project evolves.
The initial JavaScript and model files are loaded from a CDN, but the classification itself happens on the user's device. This is a useful middle ground for a small prototype: it is easy to share while keeping the actual image-processing step local.
What I learned
The most important lesson was that an AI feature does not need to dominate the product.
MobileNet is not being used here to generate a long explanation or replace the user's judgment. It provides one small confirmation step, and the rest of the experience is about observing the world directly.
I also learned that a simple local-first design changes the kind of product you can build. Without accounts, uploads, or a backend, the project became easier to understand and easier to trust.
Limitations and next steps
plantsphoto is intentionally small, and it has limitations:&lt;/li&gt;
&lt;li&gt;The plant decision is based on the model's top predictions and a keyword list.&lt;/li&gt;
&lt;li&gt;Some plants may be rejected if MobileNet uses an unexpected label.&lt;/li&gt;
&lt;li&gt;Some non-plant objects may be accepted if their labels happen to match the keyword list.&lt;/li&gt;
&lt;li&gt;The streak is stored only in the current browser.&lt;/li&gt;
&lt;li&gt;The model still needs to be downloaded the first time the app is opened.
Possible next steps include adding a more specialized plant model, improving accessibility, adding an optional offline cache, and letting users review their own plant-photo history without sending it to a server.
For now, the app has one goal: make the next walk a little more interesting.
Take a photo. Notice a leaf. Touch grass.&lt;/li&gt;
&lt;/ul&gt;

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