<?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: Himanshu Pathak</title>
    <description>The latest articles on DEV Community by Himanshu Pathak (@himanshu5680).</description>
    <link>https://dev.to/himanshu5680</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%2F4158000%2Fa6f8015d-7cb3-44ad-90fb-bf89e5248bdd.png</url>
      <title>DEV Community: Himanshu Pathak</title>
      <link>https://dev.to/himanshu5680</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/himanshu5680"/>
    <language>en</language>
    <item>
      <title>Veladora — light a candle for the code you inherited</title>
      <dc:creator>Himanshu Pathak</dc:creator>
      <pubDate>Sat, 31 Oct 2026 04:27:06 +0000</pubDate>
      <link>https://dev.to/himanshu5680/veladora-light-a-candle-for-the-code-you-inherited-9kl</link>
      <guid>https://dev.to/himanshu5680/veladora-light-a-candle-for-the-code-you-inherited-9kl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Veladora is a local altar for a repository you inherited.&lt;/p&gt;

&lt;p&gt;You drop a folder. It stays in the tab. A rule engine lights a candle for each thing the next person will trip over: a key written into a source file, an &lt;code&gt;eval&lt;/code&gt;, an empty &lt;code&gt;catch&lt;/code&gt;, a &lt;code&gt;FIXME&lt;/code&gt; that is the only minutes of a meeting you were not in, the same six lines copied into a second file during a rush. The score is a vigil out of 100. It is a first pass, not a clearance to ship.&lt;/p&gt;

&lt;p&gt;If you want those findings said back as a remembrance, you light Gemma 3 270M in the browser. The model never receives the files. It receives a redacted brief of at most eight candles. If it loops, the reply is thrown away and the archivist draft stays. The draft is the product. The model is a voice for it.&lt;/p&gt;

&lt;p&gt;The week asked for something spooky, or something that honors the past the way Día de los Muertos does. I took the second reading, and I tried not to turn a living tradition into a costume. An ofrenda is a place you set for someone who is not in the room. Inherited code is that room. The comment is the only thing they left on the table. Veladora's job is to tell you which candles to keep and which ones to put out. Keep the sentence about the 2019 contract. Delete the key.&lt;/p&gt;

&lt;p&gt;There is a second desk, for languages that outlived their authors. COBOL, Fortran, ALGOL 60, Pascal, BASIC, Prolog, Smalltalk-80, Ada, SNOBOL, MUMPS, RPG, Forth. The short biographies are written down from the public record, because a 270 million parameter model should not be asked to invent the year a language was born. You can paste a snippet and ask the model what it does. The sample includes a tiny COBOL payroll program, because that is the shape of the work a lot of people actually inherit.&lt;/p&gt;

&lt;p&gt;The bundled sample, Night Shift Payroll, scores &lt;strong&gt;50 out of 100&lt;/strong&gt;. Four of the candles are high: a documentation-example AWS key, a second secret assigned in source, &lt;code&gt;eval&lt;/code&gt;, and &lt;code&gt;pickle.load&lt;/code&gt;. The page says the AWS strings are the public documentation examples, so the demo can light a candle without shipping a live credential.&lt;/p&gt;

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

&lt;p&gt;The site is static. No build, no account, no key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://himanshu-5680.github.io/veladora/" rel="noopener noreferrer"&gt;https://himanshu-5680.github.io/veladora/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sample is already loaded. Night Shift Payroll scores 50 out of 100 before you click anything.&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%2Fwnasofwhrljrmnzemkqe.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%2Fwnasofwhrljrmnzemkqe.png" alt="Veladora in the dark theme. The sample scores 50 out of 100." width="799" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Filter to &lt;strong&gt;Secrets&lt;/strong&gt;. The evidence reads &lt;code&gt;AKIA…MPLE&lt;/code&gt;, not the full key. &lt;strong&gt;Show secrets here&lt;/strong&gt; reveals it in the tab. Markdown, JSON, CSV, and the GitHub issue body stay redacted.&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%2Fina0w1nok10hg11jie33.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%2Fina0w1nok10hg11jie33.png" alt="The check, with secrets shortened to AKIA…MPLE and wJal…EKEY." width="799" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same checks in the light theme.&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%2F11lh3b0ty7h5wntfkakp.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%2F11lh3b0ty7h5wntfkakp.png" alt="Veladora in the light theme." width="799" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Light Gemma only if you want to wait for about 300 MB and you have WebGPU. The vigil does not need it. If you would rather run it yourself: &lt;code&gt;npx serve .&lt;/code&gt; from the repo. Do not open the file directly. Modules will not load on &lt;code&gt;file://&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Himanshu-5680/veladora" rel="noopener noreferrer"&gt;https://github.com/Himanshu-5680/veladora&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MIT for the repository. Gemma's weights stay under the Gemma Terms of Use and are not in the repo. SmolLM2, the understudy, is Apache-2.0.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
  drop[Folder drop or sample] --&amp;gt; engine[Rule engine in the page]
  engine --&amp;gt; report[Vigil and findings]
  report --&amp;gt; draft[Archivist draft]
  report --&amp;gt; brief[Redacted brief]
  brief --&amp;gt; worker[Module worker]
  worker --&amp;gt; gemma[Gemma 3 270M on WebGPU]
  worker --&amp;gt; small[SmolLM2 135M if there is no adapter]
  gemma --&amp;gt; speech[Remembrance, or the draft if the model loops]
  small --&amp;gt; speech
  report --&amp;gt; export[Markdown, JSON, CSV, GitHub issue]&lt;/code&gt;&lt;/pre&gt;



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

&lt;p&gt;The open piece that the project cannot survive without is a model you can run yourself, on a page you can host yourself. I used Google's &lt;strong&gt;Gemma 3 270M Instruct&lt;/strong&gt;, the ONNX build at &lt;code&gt;onnx-community/gemma-3-270m-it-ONNX&lt;/code&gt;, through &lt;strong&gt;Transformers.js 4.2.0&lt;/strong&gt; in a module worker. WebGPU, dtype &lt;code&gt;q4f16&lt;/code&gt;. The worker is a plain file. It is imported from a pinned jsDelivr URL so a bundler never gets a chance to emit a worker the browser cannot run.&lt;/p&gt;

&lt;p&gt;I did not let Gemma be the scanner. A model that size will invent a filename if you hand it a repository, and a scanner that invents filenames is worse than no scanner. The rules are ordinary JavaScript, with tests: shaped credentials, assigned secrets that are not the word &lt;code&gt;changeme&lt;/code&gt;, dynamic execution, HTML sinks, &lt;code&gt;pickle&lt;/code&gt; and unsafe &lt;code&gt;yaml.load&lt;/code&gt;, empty handlers, repeated six-line blocks, long or densely branched functions, debug leftovers, a faded copyright year, and a missing &lt;code&gt;LICENSE&lt;/code&gt; once there are at least three files. &lt;code&gt;node_modules&lt;/code&gt; is skipped. Secret matches are stored redacted on the finding. The raw value sits on &lt;code&gt;localValue&lt;/code&gt; for the on-screen reveal and is stripped before JSON, Markdown, or the model prompt.&lt;/p&gt;

&lt;p&gt;The brief is capped at 1600 characters and eight findings. Temperature is 0.6, with a repetition penalty and &lt;code&gt;no_repeat_ngram_size: 3&lt;/code&gt;. A reply that fails a small garbage check — too few letters, a loop, a repeated word — is replaced by the archivist draft. Silence would also have been fine. Showing a loop would not.&lt;/p&gt;

&lt;p&gt;Three write-ups changed the shape of that worker, and I want them in the room:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/astrodevkit/we-put-a-free-unlimited-llm-inside-a-static-web-page-transformersjs-a-135m-model-zero-servers-jjo"&gt;We put a free, unlimited LLM inside a static web page — Transformers.js + Gemma 3, zero servers&lt;/a&gt; by &lt;a href="https://dev.to/astrodevkit"&gt;@astrodevkit&lt;/a&gt;. A static page, Gemma 3 270M, and an honest line that a model this small will cheerfully make things up. I kept the static page and the honesty, and I refused to let the model be the source of the findings.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/mattbusel/run-an-llm-in-the-browser-webgpu-did-63-tokenss-wasm-did-16-24ob"&gt;Run an LLM in the browser: WebGPU did 63 tokens/s, WASM did 1.6&lt;/a&gt; by &lt;a href="https://dev.to/mattbusel"&gt;@mattbusel&lt;/a&gt;. One worker, one generation, progress that names the file, temperature under 0.8, and the note that cross-origin isolation would speed the CPU path and break embeds. I skipped isolation on purpose. Gemma's CPU file is about a gigabyte, so there is no silent CPU fallback for Gemma.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/flowpick/building-browser-based-transcription-workers-cancellation-and-honest-progress-4b3o"&gt;Building Browser-Based Transcription: Workers, Cancellation, and Honest Progress&lt;/a&gt; by &lt;a href="https://dev.to/flowpick"&gt;@flowpick&lt;/a&gt;. "Local" still downloads a model, and the interface should say so. Putting the candle out terminates the worker. It does not pretend the download never happened. The weights stay in the browser cache.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the browser has no WebGPU adapter, the page offers SmolLM2 135M instead and names it as the understudy. It is not Gemma. The Gemma prize, if this is read for that category, is the séance path: Gemma 3 270M is the model that speaks the vigil when the machine can hold it.&lt;/p&gt;

&lt;p&gt;Tests are &lt;code&gt;npm test&lt;/code&gt;. They cover redaction, the quiet placeholder password, the sample vigil, the garbage filter, and a pasted &lt;code&gt;git log&lt;/code&gt;. They do not download a model.&lt;/p&gt;

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

&lt;p&gt;A closed API would have required me to upload the tree in order to explain the tree. The tree is the thing that may contain the secret. That is not a trade I can make, and it is not a trade I can ask a stranger to make when they drop a folder marked "confidential" that their last job left them.&lt;/p&gt;

&lt;p&gt;Running the model locally does four things a hosted model does not.&lt;/p&gt;

&lt;p&gt;It works after the download, with the network off. The rules work even before the download. I tried the sample with the candle unlit. The score, the twelve findings, and the draft were already there.&lt;/p&gt;

&lt;p&gt;It costs nothing the second time. There is no meter between a maintainer and a second look.&lt;/p&gt;

&lt;p&gt;It can be swapped. The worker names two models. Gemma is the one I want when WebGPU is there. SmolLM2 is the one that still runs when it is not. Neither is a vendor relationship.&lt;/p&gt;

&lt;p&gt;It can disappear from a company's pricing page without taking the vigil with it. The weights, once cached, are files. The rules are in the repository under MIT. A service that sunsets its "code explainer" takes the feature with it. This page does not have a feature to take.&lt;/p&gt;

&lt;p&gt;The limit is the point, not a footnote. Gemma 3 270M is not a staff engineer. Pointed at a whole repository it will confabulate. The open path let me put it in a box: evidence in, remembrance out, and a deterministic draft underneath that does not need it. A closed API would have hidden that limit behind a larger model and a data-processing addendum. I would rather show the small model, and show the rail it is not allowed to cross.&lt;/p&gt;

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

&lt;p&gt;The project was built in Cursor. I have not embedded a DevRelay session here, because the uploader's tool list does not include Cursor and I did not want to file the transcript under a different tool's name. The repository is the record: the rule engine, the tests, and &lt;code&gt;docs/ARCHITECTURE.md&lt;/code&gt;. If I save a session later, this is the paragraph it replaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The sample's loudest human candle is a comment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;FIXME: holiday rates have been wrong since the 2019 contract&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The archivist draft tells you to keep that sentence and to get the key out of &lt;code&gt;src/config.js&lt;/code&gt;. That is the moment the theme stopped being decoration. The dead code is not the joke. The dead code is the only colleague who remembered the contract. You do not exorcise that. You set a place for it, and you put out the candles that can burn the house down.&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; The séance is Gemma 3 270M Instruct, ONNX, in the browser, on WebGPU. The model is asked to rephrase a redacted brief and nothing else. When the machine cannot run it, the page says so and offers a different open model, by name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub.&lt;/strong&gt; Tests and GitHub Pages run as Actions. Issues have forms, pull requests have a template, and the vigil can copy a redacted issue body. This entry is the Actions and repository side of that category. I did not use Copilot's coding agent.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>.</title>
      <dc:creator>Himanshu Pathak</dc:creator>
      <pubDate>Mon, 26 Oct 2026 11:18:34 +0000</pubDate>
      <link>https://dev.to/himanshu5680/-2nh7</link>
      <guid>https://dev.to/himanshu5680/-2nh7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo" class="crayons-story__hidden-navigation-link"&gt;I'm Not on the DEV Team. I Still Debugged Their Missing Badges From Public Code. (And My First Test Was Wrong.)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;A humbling reminder that passing tests can lie&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/dj29" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3743406%2F227d53d3-1443-4ceb-9fb8-98c02ff9e60f.jpg" alt="dj29 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/dj29" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Dhruv Jani
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Dhruv Jani
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
                
              
              &lt;div id="story-author-preview-content-4911807" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/dj29" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3743406%2F227d53d3-1443-4ceb-9fb8-98c02ff9e60f.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Dhruv Jani&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo" id="article-link-4911807"&gt;
          I'm Not on the DEV Team. I Still Debugged Their Missing Badges From Public Code. (And My First Test Was Wrong.)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ruby"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ruby&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/rails"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;rails&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/testing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;testing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;139&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;span class="crayons-story__favorited"&gt;
              &lt;span class="favorited-marker"&gt;
                &lt;span&gt;
                  

                &lt;/span&gt;
                &lt;span class="hidden"&gt;
                  

                &lt;/span&gt;
              &lt;/span&gt;
            &lt;/span&gt;
            &lt;a href="https://dev.to/dj29/im-not-on-the-dev-team-i-still-debugged-their-missing-badges-from-public-code-and-my-first-test-18oo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              63&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

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

&lt;/div&gt;


</description>
      <category>debugging</category>
      <category>softwaredevelopment</category>
      <category>testing</category>
    </item>
    <item>
      <title>HisaabMate</title>
      <dc:creator>Himanshu Pathak</dc:creator>
      <pubDate>Mon, 19 Oct 2026 07:03:48 +0000</pubDate>
      <link>https://dev.to/himanshu5680/hisaabmate-2o2c</link>
      <guid>https://dev.to/himanshu5680/hisaabmate-2o2c</guid>
      <description>&lt;p&gt;&lt;strong&gt;Project Repository:&lt;/strong&gt; &lt;a href="https://github.com/Himanshu-5680/HisaabMate.git" rel="noopener noreferrer"&gt;HisaabMate on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Primary Workflow:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste Hinglish notes / Presets / &lt;code&gt;.txt&lt;/code&gt; or text PDF.&lt;/li&gt;
&lt;li&gt;Ingest &amp;amp; sanitize in Streamlit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extraction Engine:&lt;/strong&gt; Local Ollama API + &lt;code&gt;gemma3:1b&lt;/code&gt; JSON Schema.&lt;/li&gt;
&lt;li&gt;Python validates dates, clients, durations &amp;amp; categories.&lt;/li&gt;
&lt;li&gt;Human edits &amp;amp; adds/removes rows in Neobrutalist Data Editor.&lt;/li&gt;
&lt;li&gt;North-Star Audit Tracker + Client &amp;amp; Category Charts.&lt;/li&gt;
&lt;li&gt;Formula-Safe CSV Export + Client Invoice Memo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Offline Fallback:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deterministic Hinglish Regex Parser (ensures the app never breaks).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack &amp;amp; Design Decisions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma 3 (&lt;code&gt;gemma3:1b&lt;/code&gt;) via Ollama:&lt;/strong&gt; Runs locally at &lt;code&gt;http://localhost:11434/api/chat&lt;/code&gt;. Despite its compact 1B parameter footprint (runs smoothly on consumer laptops), pairing it with Ollama's JSON Schema format constraint and explicit Hinglish few-shot conversion rules (1 ghanta = 60, aadha ghanta = 30) makes structured extraction fast and reliable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Offline Hinglish Fallback (&lt;code&gt;extract_work_entries_offline&lt;/code&gt;):&lt;/strong&gt; If Ollama is offline or zero-latency parsing is needed, the built-in regex parser extracts ISO dates, Hinglish durations, "ke liye" / "ke saath" client names, categories, and "billable nahi" flags in-process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-Memory Document Guardrails (&lt;code&gt;src/document_parser.py&lt;/code&gt;):&lt;/strong&gt; Uses &lt;code&gt;pypdf&lt;/code&gt; and &lt;code&gt;BytesIO&lt;/code&gt; to read uploaded &lt;code&gt;.txt&lt;/code&gt; and text-based PDF work logs entirely in RAM, enforcing a 5 MB size cap and 30-page PDF limit without touching the filesystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pastel Neobrutalist Streamlit UI (&lt;code&gt;app.py&lt;/code&gt;):&lt;/strong&gt; Styled with Space Grotesk, Plus Jakarta Sans, and JetBrains Mono typography, tactile 2px solid &lt;code&gt;#1E293B&lt;/code&gt; ink borders, 4px offset shadows, and &lt;code&gt;@st.cache_data&lt;/code&gt; helpers for instant reruns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;21 Offline Unit &amp;amp; Headless UI Tests (&lt;code&gt;tests/&lt;/code&gt;):&lt;/strong&gt; Automated tests verify schema validation, DataFrame NaN/float round-trips, formula-injection escaping, PDF guardrails, and full UI workflows offline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Community Wisdom That Shaped the Build
&lt;/h3&gt;

&lt;p&gt;While designing the local structured extraction pipeline, these DEV community posts helped shape the architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Ollama Structured Outputs in Practice — Getting Type-Safe JSON from Local LLMs with Pydantic&lt;/em&gt; by &lt;a class="mentioned-user" href="https://dev.to/jangwook_kim_e31e7291ad98"&gt;@jangwook_kim_e31e7291ad98&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;LLM Structured Outputs and JSON Schema: Tool Calling That Never Drifts&lt;/em&gt; by &lt;a class="mentioned-user" href="https://dev.to/jeff_pdc"&gt;@jeff_pdc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Clean JSON Extraction with Ollama and Python&lt;/em&gt; by &lt;a class="mentioned-user" href="https://dev.to/nearshi"&gt;@nearshi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% Client Privacy &amp;amp; NDA Compliance:&lt;/strong&gt; Freelancers log work involving unreleased features and real client names. Because &lt;code&gt;gemma3:1b&lt;/code&gt; runs locally and files are parsed strictly in RAM, zero bytes of client data ever leave the freelancer's laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Per-Request API Cost (Viable Side-Hustle Economics):&lt;/strong&gt; Running an open-weight 1B model on the user's own CPU/GPU brings marginal inference cost to $0.00, allowing HisaabMate to exist as a free open-source tool or a one-time-purchase app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Vendor Lock-In &amp;amp; Bilingual Control:&lt;/strong&gt; Closed APIs deprecate models and behave unpredictably on code-mixed languages like Hinglish. Open Python validation rules let users inspect every prompt, swap local models, or work completely offline.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;During development, I worked with my coding agent to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Design the strict separation between natural-language extraction (&lt;code&gt;src/ollama_client.py&lt;/code&gt;) and deterministic Python financial validation (&lt;code&gt;src/worklog.py&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Fix a subtle Pandas/Streamlit &lt;code&gt;st.data_editor&lt;/code&gt; round-trip bug where newly added rows introduced &lt;code&gt;NaN&lt;/code&gt; and float durations, solved via &lt;code&gt;_sanitize_editor_records()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Build the offline Hinglish fallback parser and the 21-test &lt;code&gt;unittest&lt;/code&gt; + &lt;code&gt;AppTest&lt;/code&gt; suite.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  My First User
&lt;/h3&gt;

&lt;p&gt;I tested HisaabMate on my own weekly Hinglish developer logs and shared it with a fellow student freelancer who tracks tasks in WhatsApp messages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What happened:&lt;/strong&gt; Pasting raw Hinglish notes immediately separated billable client tasks (BharatPay, ZeptoClone) from non-billable sprint syncs and admin work, flagging incomplete rows where details were forgotten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What they liked most:&lt;/strong&gt; The Audit Readiness bar and the one-click Markdown Invoice Memo, which can be pasted straight into a client WhatsApp/Slack message alongside the CSV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Would they pay?:&lt;/strong&gt; They wouldn't want another monthly SaaS subscription, but would gladly pay a small one-time fee for a local desktop tool that keeps client names private and recovers 2+ forgotten billable hours per sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prize Categories
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; HisaabMate uses Google's open-weight &lt;code&gt;gemma3:1b&lt;/code&gt; model running locally via Ollama (&lt;code&gt;src/ollama_client.py&lt;/code&gt;) as its primary extraction engine. Using JSON Schema constrained decoding (&lt;code&gt;ENTRY_SCHEMA&lt;/code&gt; at temperature: 0), &lt;code&gt;gemma3:1b&lt;/code&gt; parses code-mixed Hinglish and English work notes—converting phrases like "2 ghante", "aadha ghanta", and "billable nahi" into structured, schema-validated timesheet drafts without sending a single token to the cloud.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #ai #opensource
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>WildWalk: an open-source AI tool that gets you off your screen</title>
      <dc:creator>Himanshu Pathak</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:18:12 +0000</pubDate>
      <link>https://dev.to/himanshu5680/wildwalk-an-open-source-ai-tool-that-gets-you-off-your-screen-le1</link>
      <guid>https://dev.to/himanshu5680/wildwalk-an-open-source-ai-tool-that-gets-you-off-your-screen-le1</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;WildWalk is a free, open-source web app that helps people step outside. You type your city, and it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pulls live temperature, humidity and air quality from Open-Meteo.&lt;/li&gt;
&lt;li&gt;Scores how good a walk would be right now, using a TabPFN model.&lt;/li&gt;
&lt;li&gt;Finds nearby parks and gardens with SerpApi.&lt;/li&gt;
&lt;li&gt;Writes a short walk guide with Gemma, and reads it aloud as an MP3.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then you switch on &lt;strong&gt;Pocket Mode&lt;/strong&gt;: a full-screen timer, the phone goes into your pocket, and the guide plays. When the walk ends, you rate it. That rating goes back into the training data for the score model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who it is for:&lt;/strong&gt; people who spend most of their day on screens and need a quick, clear reason to go out. Students, office workers and parents are the first audience I have in mind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest current state:&lt;/strong&gt; the TabPFN model is trained on synthetic seed data for now. Real ratings will improve it. The guide model is small (1B parameters), so the guides are simple. I would rather say that clearly than oversell it.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Video (1–2 min): &lt;a href="https://github.com/Himanshu-5680/WildWalk/blob/main/docs/demo.mp4" rel="noopener noreferrer"&gt;https://github.com/Himanshu-5680/WildWalk/blob/main/docs/demo.mp4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Screenshots: &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%2Fq287ead5gfvy8cryp96c.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%2Fq287ead5gfvy8cryp96c.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F4qwibo45qrxo654rx1ar.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%2F4qwibo45qrxo654rx1ar.png" alt=" " width="800" height="392"&gt;&lt;/a&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%2Foktzj7olnazz316tka5t.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%2Foktzj7olnazz316tka5t.png" alt=" " width="799" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not deployed yet. It runs locally with &lt;code&gt;setup.bat&lt;/code&gt; and &lt;code&gt;start_all.bat&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&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/Himanshu-5680" rel="noopener noreferrer"&gt;
        Himanshu-5680
      &lt;/a&gt; / &lt;a href="https://github.com/Himanshu-5680/WildWalk" rel="noopener noreferrer"&gt;
        WildWalk
      &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;🌿 WildWalk&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/demo.mp4"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fdemo.mp4" alt="WildWalk demo" width="800"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt;Touch grass, not screens.&lt;/b&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;WildWalk is a small, open-source tool that helps you decide whether to go outside today, and gives you a short audio guide for a screen-free walk. You enter your city. It checks the weather and air quality, gives the walk a score, suggests nearby places, and reads you a guide. Then you put your phone in your pocket and go.&lt;/p&gt;

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest 2026 Open-Source AI Challenge&lt;/strong&gt; (Week 1: "Touch Grass").&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📸 Screenshots&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Walk plan&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/screenshots/01-plan.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fscreenshots%2F01-plan.png" alt="Walk plan page" width="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Guide and audio&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/screenshots/02-guide-audio.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fscreenshots%2F02-guide-audio.png" alt="Guide and audio player" width="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Pocket mode&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/screenshots/03-pocket-mode.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fscreenshots%2F03-pocket-mode.png" alt="Pocket mode timer" width="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Walk journal&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/screenshots/04-journal.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fscreenshots%2F04-journal.png" alt="Walk journal page" width="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Learn&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Himanshu-5680/WildWalk/docs/screenshots/05-learn.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FHimanshu-5680%2FWildWalk%2FHEAD%2Fdocs%2Fscreenshots%2F05-learn.png" alt="Learn page" width="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 The problem&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Many people spend most of their day on screens and rarely go outside. Deciding whether a walk is worth it is often guesswork: is it too hot, is the air bad, where should I go? WildWalk gives one clear answer in one place, and helps you stay off your phone once you leave.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 Goal&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Make going…&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/Himanshu-5680/WildWalk" 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;p&gt;Everything in the main path is open-source or open-weight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 (1B) via Ollama.&lt;/strong&gt; An open-weight model running on my own machine. It writes the walk guide from a prompt that includes the score, nearby spots, nature facts and past walks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TabPFN.&lt;/strong&gt; A tabular foundation model that predicts a walk score from temperature, humidity, AQI, month and hour. Each rated walk is appended to a CSV, and the model retrains on it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal.&lt;/strong&gt; Every walk plan is a durable workflow: find spots, score, recall, write, voice, save. Each step has retries, so one failing step does not break the whole request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiger Data (Postgres + pgvector).&lt;/strong&gt; Stores nature facts. The guide uses hybrid keyword and vector search to pick the facts that match the city and season.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas.&lt;/strong&gt; Vector memory of past walks, so the model can recall similar walks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi.&lt;/strong&gt; Live web search for nearby parks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge TTS.&lt;/strong&gt; A free neural voice for narration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; FastAPI backend, plain HTML, CSS and JavaScript frontend, no build step.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser → FastAPI → Temporal workflow
                     ├─ SerpApi        → nearby spots
                     ├─ TabPFN         → walk score
                     ├─ Tiger Data     → nature facts (pgvector search)
                     ├─ MongoDB Atlas  → past walks (vector memory)
                     ├─ Gemma (Ollama) → walk guide
                     └─ Edge TTS       → audio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fallback:&lt;/strong&gt; if the backend is offline, the website computes a simple local score and guide, and shows a note saying so. The app never just breaks.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No per-request bill.&lt;/strong&gt; Gemma and TabPFN run on my own machine. A closed API would charge for every guide and send every request to a company server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can change it.&lt;/strong&gt; I can swap the Gemma size, retrain TabPFN on real walk data, or rewrite the prompt. With a closed API I would be limited to what the provider allows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open data.&lt;/strong&gt; Open-Meteo and OpenStreetMap are free, so anyone in any city can run this without a paid data contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest limits.&lt;/strong&gt; Some parts are still cloud services (Atlas, Tiger Data, SerpApi, Edge TTS). The core decision and the guide run locally, but not everything stays on the device.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of TabPFN:&lt;/strong&gt; walk scoring from tabular data, retrained on each rated walk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; the guide writer, running locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Temporal:&lt;/strong&gt; durable walk workflow with retries and resume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Tiger Data:&lt;/strong&gt; pgvector hybrid search over nature facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; vector memory of past walks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of SerpApi:&lt;/strong&gt; live search for nearby parks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #ai #opensource
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>hello dev.</title>
      <dc:creator>Himanshu Pathak</dc:creator>
      <pubDate>Fri, 02 Oct 2026 16:51:39 +0000</pubDate>
      <link>https://dev.to/himanshu5680/hello-dev-gid</link>
      <guid>https://dev.to/himanshu5680/hello-dev-gid</guid>
      <description></description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
