<?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: Krishna Potdar</title>
    <description>The latest articles on DEV Community by Krishna Potdar (@krishnapotdar619).</description>
    <link>https://dev.to/krishnapotdar619</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%2F4155297%2Fee20da59-ec17-4d14-8e1d-c770935090cb.png</url>
      <title>DEV Community: Krishna Potdar</title>
      <link>https://dev.to/krishnapotdar619</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krishnapotdar619"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine</title>
      <dc:creator>Krishna Potdar</dc:creator>
      <pubDate>Thu, 29 Oct 2026 16:15:48 +0000</pubDate>
      <link>https://dev.to/krishnapotdar619/hacktoberfest-open-source-ai-challenge-week-4-ghost-in-the-machine-471e</link>
      <guid>https://dev.to/krishnapotdar619/hacktoberfest-open-source-ai-challenge-week-4-ghost-in-the-machine-471e</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Haunted Terminal is a ghost that lives in your shell. It reads your recent command history and whispers back eerie, darkly funny commentary about what you've been typing. Run &lt;code&gt;git push --force&lt;/code&gt; and the ghost notices. Run &lt;code&gt;rm -rf&lt;/code&gt; and it pretends to mourn.&lt;/p&gt;

&lt;p&gt;Your terminal already knows everything you do, so I thought: what if something was watching? There are four personas (default, pirate, victorian, old-sysadmin) and a &lt;code&gt;--watch&lt;/code&gt; mode that keeps haunting you as you work.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/fpaohHWcKK0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&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/krisp619" rel="noopener noreferrer"&gt;
        krisp619
      &lt;/a&gt; / &lt;a href="https://github.com/krisp619/Hacktoberfest-Weak04" rel="noopener noreferrer"&gt;
        Hacktoberfest-Weak04
      &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;👻 Haunted Terminal&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"A digital phantom trapped inside your machine, watching every keystroke in the dark."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge&lt;/strong&gt; (Theme: &lt;strong&gt;"Ghost in the Machine"&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Haunted Terminal&lt;/strong&gt; is a lightweight, zero-dependency Python tool that awakens an eerie spectral presence trapped inside your terminal session. It monitors your shell history across Windows PowerShell, Bash, Zsh, and Fish, feeding your recent commands into an open-weight model running 100% locally through &lt;a href="https://ollama.ai" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The ghost streams haunting, darkly funny commentary back into your console in vivid spectral red, character by character, mocking your mortal command-line endeavors.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🔒 &lt;strong&gt;100% Local &amp;amp; Private:&lt;/strong&gt; No cloud APIs, no telemetry, no API keys, no tracking. Your shell history never leaves your machine.&lt;/li&gt;
&lt;li&gt;🐍 &lt;strong&gt;Zero Dependencies:&lt;/strong&gt; Pure Python 3.8+ standard library only (&lt;code&gt;urllib&lt;/code&gt;, &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;argparse&lt;/code&gt;). No &lt;code&gt;pip install&lt;/code&gt; required.&lt;/li&gt;
&lt;li&gt;🐚 &lt;strong&gt;Cross-Platform Shell History Detection:&lt;/strong&gt; Automatically discovers your active…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/krisp619/Hacktoberfest-Weak04" 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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; &lt;code&gt;llama3.2:3b&lt;/code&gt;, an open-weight model, running locally through Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; one Python file, standard library only (no pip installs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History detection:&lt;/strong&gt; auto-detects PowerShell, bash, zsh and fish history files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming:&lt;/strong&gt; tokens stream from Ollama's local API and print with a red typewriter effect&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flags:&lt;/strong&gt; &lt;code&gt;--model&lt;/code&gt;, &lt;code&gt;--last&lt;/code&gt;, &lt;code&gt;--watch&lt;/code&gt;, &lt;code&gt;--history&lt;/code&gt;, &lt;code&gt;--persona&lt;/code&gt;, &lt;code&gt;--save&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ghost's voice is just a system prompt, so changing personality means editing a few lines.&lt;/p&gt;

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

&lt;p&gt;Shell history is full of secrets: file paths, server names, sometimes tokens. Sending that to a closed API would be a bad idea. Running an open model locally means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; your commands never leave your laptop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline:&lt;/strong&gt; it works with the internet off, fitting for a ghost story&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free:&lt;/strong&gt; no API keys, no billing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable:&lt;/strong&gt; try &lt;code&gt;qwen2.5:7b&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt; or &lt;code&gt;phi3&lt;/code&gt; with one flag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed API couldn't give me all four at once.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Aaj Kay Lavayche: An Offline Garden Planner for Solapur, Powered by a Local Open Model</title>
      <dc:creator>Krishna Potdar</dc:creator>
      <pubDate>Fri, 09 Oct 2026 16:24:30 +0000</pubDate>
      <link>https://dev.to/krishnapotdar619/aaj-kay-lavayche-an-offline-garden-planner-for-solapur-powered-by-a-local-open-model-41i6</link>
      <guid>https://dev.to/krishnapotdar619/aaj-kay-lavayche-an-offline-garden-planner-for-solapur-powered-by-a-local-open-model-41i6</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;&lt;strong&gt;Aaj Kay Lavayche&lt;/strong&gt; ("what to plant today") is a small command-line garden planner for home gardeners in Solapur, Maharashtra. Solapur is hot and semi-arid, and most planting advice online is written for other climates, so I wanted something that fits where I actually live.&lt;/p&gt;

&lt;p&gt;You run one command. It checks today's date, filters a list of 20 plants that suit Solapur (methi, kothimbir, palak, vangi, mirchi, tomato, bhendi, zendu, tulsi and more) down to what can be sown this month, and asks a local AI model for a short answer in simple Marathi: the top 3 plants for this week, a few sowing steps, and one watering tip for our climate.&lt;/p&gt;

&lt;p&gt;The screen is meant to take about thirty seconds. Read the answer, put the phone or laptop down, and go plant something. A &lt;code&gt;--container&lt;/code&gt; flag limits suggestions to pot-friendly plants for balcony gardeners, and a tiny garden log (&lt;code&gt;--log "sowed methi in pot"&lt;/code&gt;) lets me keep dated notes without opening any app.&lt;/p&gt;

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

&lt;p&gt;[&lt;br&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%2F3r9zov28ss9xs5igfhbw.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%2F3r9zov28ss9xs5igfhbw.png" alt=" " width="799" height="424"&gt;&lt;/a&gt;]&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/krisp619" rel="noopener noreferrer"&gt;
        krisp619
      &lt;/a&gt; / &lt;a href="https://github.com/krisp619/krisp619-Hacktoberfest-Open-Source-AI-Challenge-Week-01" rel="noopener noreferrer"&gt;
        krisp619-Hacktoberfest-Open-Source-AI-Challenge-Week-01
      &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;# 🌿 Aaj Kay Lavayche (आज काय लावायचं?)
&amp;gt; **An Offline Local-AI Garden Planner for Solapur, Maharashtra, India.**
&amp;gt; *Built for Hacktoberfest 2026 Open-Source AI Challenge — Theme: "Touch Grass"*
[![License: MIT](&lt;a href="https://img.shields.io/badge/License-MIT-green.svg)](LICENSE" rel="nofollow noopener noreferrer"&gt;https://img.shields.io/badge/License-MIT-green.svg)](LICENSE&lt;/a&gt;)
[![Python: 3.10+](&lt;a href="https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://python.org" rel="nofollow noopener noreferrer"&gt;https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://python.org&lt;/a&gt;)
[![Ollama](&lt;a href="https://img.shields.io/badge/Local%20LLM-Ollama-purple.svg)](https://ollama.com" rel="nofollow noopener noreferrer"&gt;https://img.shields.io/badge/Local%20LLM-Ollama-purple.svg)](https://ollama.com&lt;/a&gt;)
[![Offline First](&lt;a href="https://img.shields.io/badge/Offline-100%25%20Local-success.svg)](#" rel="nofollow noopener noreferrer"&gt;https://img.shields.io/badge/Offline-100%25%20Local-success.svg)](#&lt;/a&gt;)
---

## 🌻 What is "Aaj Kay Lavayche"?

**"Aaj Kay Lavayche" (Marathi: *आज काय लावायचं?* / *"What should I sow today?"*)** is a lightweight, offline-first command-line garden planner tailored specifically for the hot semi-arid climate of **Solapur, Maharashtra**.

Most gardening apps and AI assistants demand a persistent internet connection, trap you in endless infinite-scrolling feeds, or rely on expensive, latency-heavy cloud APIs. 

**Aaj Kay Lavayche changes that with a strict "Touch Grass" philosophy:**
1. Run **one simple command** from your terminal.
2. Get **three crisp recommendations**, sowing steps, and a Solapur-specific watering tip generated by a local open-weight LLM (or the built-in offline rules engine).…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/krisp619/krisp619-Hacktoberfest-Open-Source-AI-Challenge-Week-01" 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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; &lt;code&gt;llama3.2:3b&lt;/code&gt;, an open-weight model, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;. It runs on an 8 GB laptop, and a &lt;code&gt;--model&lt;/code&gt; flag lets me swap in any other local model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; a hand-written &lt;code&gt;plants.json&lt;/code&gt; with sowing months, days to harvest, sunlight, water needs, whether the plant suits a pot, and a short tip for each plant. Anyone can edit it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code:&lt;/strong&gt; a small Python CLI with one dependency (the &lt;code&gt;ollama&lt;/code&gt; package). It filters plants by month first and only then gives the short list to the model. That keeps the model's job small and its answer grounded in my own data, which is why a 3B model is enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallback:&lt;/strong&gt; if Ollama is not running or the model is missing, the tool prints a friendly error with the exact fix command and still shows the plain filtered list, so I never end up with nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests:&lt;/strong&gt; pytest tests cover the month filter (including the December to January wrap), the container flag, the garden log and the error handling.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It works with no signal.&lt;/strong&gt; A garden is not a place with reliable internet. After a one-time model download, the whole thing runs offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My data stays with me.&lt;/strong&gt; My garden notes and location never leave my laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; No API keys, no usage limits, no bills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can change it.&lt;/strong&gt; I can swap models, edit the prompt, change the answer language and correct the plant data for my own region. A closed API would not let me decide which data it trusts or how it behaves.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Touch Grass Nudger: A Local Llama That Tells Me When to Close the Laptop</title>
      <dc:creator>Krishna Potdar</dc:creator>
      <pubDate>Tue, 06 Oct 2026 18:46:29 +0000</pubDate>
      <link>https://dev.to/krishnapotdar619/touch-grass-nudger-a-local-llama-that-tells-me-when-to-close-the-laptop-k4d</link>
      <guid>https://dev.to/krishnapotdar619/touch-grass-nudger-a-local-llama-that-tells-me-when-to-close-the-laptop-k4d</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;Touch Grass Nudger is a tiny command-line tool that answers one question: &lt;em&gt;what should I do outside right now?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You type how many minutes you have. It reads live weather for Solapur, India, and asks a local AI model for one specific outdoor activity that fits your time, the heat, the UV index and whether it is day or night. Then it prints three lines and says: &lt;strong&gt;"Now close the laptop and go!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The screen part takes under a minute. Everything after that happens outside.&lt;/p&gt;

&lt;p&gt;It is for anyone who sits at a laptop all day and loses an hour deciding whether going out is worth it.&lt;/p&gt;

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

&lt;p&gt;Online run: live weather from Open-Meteo, suggestion from the local model.&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%2F9140p589vpv0i3e56fjn.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%2F9140p589vpv0i3e56fjn.png" alt="Online run: weather fetched, model suggests an activity" width="741" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Offline run: Wi-Fi off, cached weather, and the local model still answers.&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%2Faydapas4vpmorl4zmtnm.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%2Faydapas4vpmorl4zmtnm.png" alt="Offline run: no internet, cached weather, local model still answers" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outdoor test:&lt;/strong&gt; [WRITE YOUR REAL STORY: where you went, what the model suggested, what happened.]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screen time vs outside time:&lt;/strong&gt; [X] minutes on screen, [Y] minutes outside.&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/krisp619" rel="noopener noreferrer"&gt;
        krisp619
      &lt;/a&gt; / &lt;a href="https://github.com/krisp619/touch-grass" rel="noopener noreferrer"&gt;
        touch-grass
      &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;Touch Grass Nudger&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A tiny CLI that tells you what to do outside right now, in under a minute.
It reads live weather (Open-Meteo, no API key) and asks a &lt;strong&gt;local open-weight
model&lt;/strong&gt; (Llama 3.2 3B via Ollama) for one outdoor activity that fits your
free minutes. Works offline using the last cached weather.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install Ollama from &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;https://ollama.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ollama pull llama3.2:3b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python nudge.py&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Python decides day or night from sunrise/sunset (small models are bad at this).&lt;/li&gt;
&lt;li&gt;The model only picks from a list of real local places, so it can't invent any.&lt;/li&gt;
&lt;li&gt;No internet? It uses the last cached weather. Inference is always local.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Customize&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Edit &lt;code&gt;PLACES&lt;/code&gt;, the coordinates, or &lt;code&gt;MODEL&lt;/code&gt; at the top of &lt;code&gt;nudge.py&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/krisp619/touch-grass" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Llama 3.2 3B (open weights), run locally with &lt;strong&gt;Ollama&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weather:&lt;/strong&gt; Open-Meteo API (free, no API key)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; Python with just the &lt;code&gt;requests&lt;/code&gt; library, about 100 lines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow: fetch weather, cache it to a JSON file, summarize the 7 values that matter, build a prompt, send it to the local model, print 3 lines.&lt;/p&gt;

&lt;h3&gt;
  
  
  What went wrong (and how I fixed it)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Run 1: the model invented a place.&lt;/strong&gt; It told me to hike the "hill at Chakreshwar Temple", a place I could not find or verify near Solapur. A small 3B model will confidently make up local names.&lt;br&gt;
&lt;em&gt;Fix:&lt;/em&gt; I gave it a short list of real places (Siddheshwar Lake, Smruti Van, Bhuikot Fort, Hipparga Lake) and told it to choose only from that list. The invented names stopped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run 2: it sent me for a garden walk at midnight.&lt;/strong&gt; I ran the script at 23:54 and it said "It's dark, making it a safe activity." The model could not reliably tell if it was night.&lt;br&gt;
&lt;em&gt;Fix:&lt;/em&gt; I stopped asking the model to decide. Python now compares the clock with sunrise and sunset, and tells the model plainly: it is night, suggest a 5-minute balcony stretch and name a good time tomorrow morning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; with small open models, let code handle facts (time, daylight, place lists) and let the model handle the friendly wording.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It works with no internet.&lt;/strong&gt; The model lives on my laptop, so the nudge works on a trail with no signal (using cached weather).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My data stays with me.&lt;/strong&gt; My location and habits never go to someone else's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; No API key, no per-request bill, no rate limit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could fix its behavior.&lt;/strong&gt; Because I control the model and the prompt, I could add a places list and day/night rules. I could swap Llama for Qwen or Gemma by changing one line (&lt;code&gt;MODEL = "llama3.2:3b"&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failures were visible.&lt;/strong&gt; When the model hallucinated, I could see why and design around it instead of guessing at a black box.&lt;/li&gt;
&lt;/ul&gt;

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