<?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: Aryan Garg</title>
    <description>The latest articles on DEV Community by Aryan Garg (@herbs_and_spices_api).</description>
    <link>https://dev.to/herbs_and_spices_api</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%2F4159810%2Fb1bffb6d-010c-40bf-9259-c544225b3769.png</url>
      <title>DEV Community: Aryan Garg</title>
      <link>https://dev.to/herbs_and_spices_api</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/herbs_and_spices_api"/>
    <language>en</language>
    <item>
      <title>A file manager for the lazy</title>
      <dc:creator>Aryan Garg</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:26:09 +0000</pubDate>
      <link>https://dev.to/herbs_and_spices_api/a-file-manager-for-the-lazy-2g7h</link>
      <guid>https://dev.to/herbs_and_spices_api/a-file-manager-for-the-lazy-2g7h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
20th August is the international Sloth day, and so we shall evolve to sloth. I'm part sloth myself, so I consider myself at home with this challenge. &lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;



&lt;p&gt;Sloth(epic name ik) is a file manager that automatically sorts files based on name and content, so you will never have to. &lt;br&gt;
This is for anyone who downloads a bunch of files and is too lazy to organise them before it becomes into an absolute mess. &lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/TKte_P2Oy20" 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/AryanGarg-beep" rel="noopener noreferrer"&gt;
        AryanGarg-beep
      &lt;/a&gt; / &lt;a href="https://github.com/AryanGarg-beep/sloth" rel="noopener noreferrer"&gt;
        sloth
      &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;sloth 🦥&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A slow, careful, local file organizer for college material.&lt;/p&gt;
&lt;p&gt;sloth reads what's &lt;em&gt;inside&lt;/em&gt; your notes, slides and scanned handouts. It asks a local Gemma model (through &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;) which subject and unit each file belongs to, and files it under:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;~/Documents/College/&amp;lt;Subject&amp;gt;/Unit &amp;lt;N&amp;gt;/&amp;lt;original filename&amp;amp;gt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nothing leaves your laptop.&lt;/strong&gt; sloth only talks to Ollama on &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nothing is deleted or overwritten.&lt;/strong&gt; Files are only moved. If a name is taken, the file becomes &lt;code&gt;name (2).pdf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nothing moves until you say so.&lt;/strong&gt; Every run is a dry-run plan first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything can be undone.&lt;/strong&gt; Every batch of moves is logged, and &lt;code&gt;sloth undo&lt;/code&gt; puts the files back exactly where they were.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Built for the DEV Hacktoberfest "Slow and Steady" challenge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;A semester leaves you with files called &lt;code&gt;unit 3.pdf&lt;/code&gt;, &lt;code&gt;document(3).pdf&lt;/code&gt;, &lt;code&gt;scan_0042.pdf&lt;/code&gt; and &lt;code&gt;notes_final(1).pdf&lt;/code&gt;, all in Downloads. The filename usually doesn't say which subject a file is…&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/AryanGarg-beep/sloth" 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;p&gt;For this, I have used gemma4:gemma4:e4b-it-qat, which provided small size, fast speeds(average 5-6 secs per file on an intel core ultra 7 256V laptop CPU) with a low memory footprint (4.3GB), while having enough intelligence to not make too many errors (tested against gemma4:e2b and gemma4:a4b-26b)&lt;/p&gt;

&lt;p&gt;Libreoffice is used to determine action based on file-type&lt;br&gt;
Tesseract is used to scan the file via OCR, which allows the program to detect data from any file, like pdfs, excel sheets, pictures etc.&lt;br&gt;
first few pages(around 3000 character) are scanned to extract meaning. (because file names are often just a random mix of characters)&lt;br&gt;
This data goes to gemma, which decides what to do. &lt;/p&gt;

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

&lt;p&gt;Biggest one is keeping everything on the system. I dont have the energy to keep vetting the files i'll hand an AI to sort. And I don't wanna worry about giving some sensitive files to an external party either. &lt;/p&gt;

&lt;p&gt;Its mine, and I can do whatever I want with it. I made it, I know how it works, I can change it however I want. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;I used to look at my files, sigh, before struggling to find one i need. And this happens a lot, since im too lazy to to actually sort them. This saved me from it all. &lt;/p&gt;

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

&lt;p&gt;Best use of gemma - Downloaded and tested like 40 gigs of models. Lots of inferencing tricks from their docs are also involved. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Field Notes IRL. Touch the grass!</title>
      <dc:creator>Aryan Garg</dc:creator>
      <pubDate>Mon, 12 Oct 2026 03:39:59 +0000</pubDate>
      <link>https://dev.to/herbs_and_spices_api/field-notes-irl-touch-the-grass-d49</link>
      <guid>https://dev.to/herbs_and_spices_api/field-notes-irl-touch-the-grass-d49</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;My first idea for this challenge was a lamp that lights up when the weather is nice enough to go outside. I dropped it halfway through planning, because getting people outside isn't really the problem.&lt;/p&gt;

&lt;p&gt;People already go out. Look around any park or café: half of them are filming reels, checking how the story looks, scrolling while they walk. They're outside, but they're still on the screen.&lt;/p&gt;

&lt;p&gt;And I get why. A lot of that phone use comes from a real want: to remember the moment, to make something out of your day. The phone is just the only tool most of us have for that.&lt;/p&gt;

&lt;p&gt;So instead of pushing people out the door, Field Notes gives that urge somewhere else to go. You don't film the bird, you say "there's a bird." You don't post, you just talk. And at the end of the day you still get something made from your outing, a journal entry, written for you and not for an audience.&lt;/p&gt;

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

&lt;p&gt;Field Notes is a screen-free voice journal. While I'm outside, I press a button on a small homemade recorder and say whatever I notice: "pretty bird out here, gonna get a salad." My phone stays in my pocket the whole time. When I get home, a local app on my laptop transcribes the notes with Whisper, and Gemma 4 turns them into a short journal entry for that outing, with a nudge for next time and a weekly recap.&lt;br&gt;
It also comes with a weather alarm, which tells the user if its a good time to touch grass. &lt;/p&gt;

&lt;p&gt;Nothing leaves my laptop. No account, no cloud, no internet needed.(except for weather data if the user wants it)&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%2F5kv8tx62t6x0petuq7yt.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%2F5kv8tx62t6x0petuq7yt.png" alt=" " width="800" height="1067"&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/AryanGarg-beep" rel="noopener noreferrer"&gt;
        AryanGarg-beep
      &lt;/a&gt; / &lt;a href="https://github.com/AryanGarg-beep/touch-grass" rel="noopener noreferrer"&gt;
        touch-grass
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Field Notes: a pocket voice recorder (Pico 2 W) and an offline journal app (Whisper + Gemma)
    &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;Field Notes&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A pocket voice recorder for going outside with your phone put away, and a laptop app that
turns what you said into a journal.&lt;/p&gt;
&lt;p&gt;The recorder is a Raspberry Pi Pico 2 W with a microphone and one button: press to start a
note, press again to stop. Back home, the app copies the notes off, transcribes them with
Whisper, and has Gemma (through Ollama) write a journal entry for each outing and a weekly
recap. Everything runs on your laptop.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What's here&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;fieldnotes/
  app.py               the laptop app (a small local web server + window)
  ui.html              its interface
  fonts/               bundled fonts (SIL OFL), so the app loads nothing from the internet
  install_launcher.sh  adds Field Notes to your app launcher
  recorder/main.py     the Pico firmware
record_test.py         5-second mic test for the Pico, to check the wiring
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The recorder&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi Pico 2 W running MicroPython&lt;/li&gt;
&lt;li&gt;Electret mic, amplified by one…&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/AryanGarg-beep/touch-grass" 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;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%2F3eq0p20s9g2dxzya7glz.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%2F3eq0p20s9g2dxzya7glz.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parts used for the recorder:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raspberry Pi Pico 2 W running MicroPython&lt;/li&gt;
&lt;li&gt;An electret mic capsule I found in my parts box&lt;/li&gt;
&lt;li&gt;A 2N2222 transistor as a one-stage amplifier (2.2k mic bias, 4.7k collector, 470k feedback, 1 µF coupling cap)&lt;/li&gt;
&lt;li&gt;One push button, the onboard LED, a power bank&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It records at 8 kHz and stores each note as 8-bit µ-law, which keeps about 14 bits' worth of dynamic range in half the space. The Pico has roughly 5 minutes of storage, and a note can be up to 30 seconds (it has to fit in RAM before saving). Each note is logged with the seconds since power-on, so the journal can say "12 minutes in" even though the Pico has no clock.&lt;/p&gt;

&lt;p&gt;It was exam week and nothing could be ordered in time (5-day delivery), so everything is built from what I already had, plus one 1 µF capacitor from a local shop.&lt;/p&gt;

&lt;p&gt;Getting the recording right was the hardest part. Initial readings capped out at a few milivolts, which meant my voice was drowned by the electrical noise. The 2N2222 helped fix that. &lt;br&gt;
The noise was still bothering me a lot. &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%2F3gi6dis5adj838x1dpsx.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%2F3gi6dis5adj838x1dpsx.png" alt=" " width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a comparision with different power inputs. Notice all that static noise? That mean't that barely anything i was saying was getting through. Whisper needed quiter audio. Luckily, the Raspberry has a modulated 3v3 output, which reduced the noise by half, enough for the models. &lt;/p&gt;

&lt;p&gt;Ollama setup with gemma4 was quite easy. It is whats used for transcribing. The user gets the option to choose between models they have installed. The app autodetects new models pulled by ollama. Whisper also provides the same options-The user can choose which model they want for maximum clarity. &lt;br&gt;
The model is responsible for interpreting the data from whisper, generating tips, weekly blog, and figuring out if the data from SerpAPI is good enough to touch grass. &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%2Fh2tnoa9ic9hxgsyntiax.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%2Fh2tnoa9ic9hxgsyntiax.png" alt=" " width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also a SerpAI integration for periodic weather checks. A bit of motivation to "Touch grass" when it detects the weather is good. User can use their Pincode or city to set the location.&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%2F6q67ovgt6evidxznm38p.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%2F6q67ovgt6evidxznm38p.png" alt=" " width="799" height="562"&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%2F6kr256rpjkx89qygalnl.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%2F6kr256rpjkx89qygalnl.png" alt=" " width="799" height="265"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;



&lt;p&gt;A diary is about the most private thing you can write. Your thoughts, where you went, how you felt, in your own voice. With open models running locally, none of it leaves my laptop. I wouldn't want to send voice recordings of my walks to a company's server, and with this setup I don't have to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It works offline and costs nothing.&lt;/strong&gt; No API key, no subscription, no usage limits. After the one-time model download, it runs with Wi-Fi off.&lt;br&gt;
Only thing needing wifi is the weather alarm, which is optional. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I can pick the model that fits.&lt;/strong&gt; On my laptop (32 GB RAM, no dedicated GPU), I switch between Gemma 4 E2B, E4B and the 26B mixture-of-experts model from a dropdown, trading speed against writing quality. With a closed API, that choice isn't mine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's mine to change.&lt;/strong&gt; I can rewrite the prompt, swap Whisper sizes, or (next) fine-tune a model on my own entries so it writes the way I do. None of that requires anyone's permission.&lt;/p&gt;
&lt;h2&gt;
  
  
  Trying it out
&lt;/h2&gt;

&lt;p&gt;Got a lot of looks walking around with whats essetially a recorder without bodywork, I sucessfully took a couple tours of the campus and some tests in my room. &lt;br&gt;
A video of me using it around campus&lt;br&gt;
  &lt;/p&gt;
&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/tSuiBGLEoRM" width="315" height="560"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


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

&lt;p&gt;Best Use of Gemma - Its the backbone of the project. Every decision is taken by this model. &lt;br&gt;
Best Use of SerpApi - Thought I could sneak this in, with my weather report. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>They demanded a picture</title>
      <dc:creator>Aryan Garg</dc:creator>
      <pubDate>Mon, 05 Oct 2026 04:12:41 +0000</pubDate>
      <link>https://dev.to/herbs_and_spices_api/they-demanded-a-picture-go3</link>
      <guid>https://dev.to/herbs_and_spices_api/they-demanded-a-picture-go3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&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%2F8b9r75kjwh04xv6yyzwr.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%2F8b9r75kjwh04xv6yyzwr.png" alt=" " width="289" height="66"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;We built a local upscaler! My friends love looking at pictures. But as the  screens increase in resolution, the picture starts...fading away. Imagine that, a digital album fading away like an old picturebook. particularly the faces, which become really blurry. &lt;/p&gt;

&lt;p&gt;Upscaling is a popular technology, using AI to recreate the edges and lines to make the image sharper. Most existing tools require the customer to send images over to a random website, something my friends didn't want to do with their photogaphs. &lt;/p&gt;

&lt;p&gt;drumroll....ENTER LOCAL LLMS&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kToM3kP5Q8Y" 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/DhritiGupta2006" rel="noopener noreferrer"&gt;
        DhritiGupta2006
      &lt;/a&gt; / &lt;a href="https://github.com/DhritiGupta2006/They-demanded-a-picture" rel="noopener noreferrer"&gt;
        They-demanded-a-picture
      &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;Revive&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Revive makes old family photos sharper, gently fixes blurry faces, and writes a short caption for each one
When it's done, you get a little photo album you can open on any computer, even without internet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your photos stay on this computer.&lt;/strong&gt; Nothing is uploaded anywhere. After the one-time setup, Revive works with the internet switched off.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/DhritiGupta2006/They-demanded-a-picture/docs/media/readme/01-start.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%2FDhritiGupta2006%2FThey-demanded-a-picture%2FHEAD%2Fdocs%2Fmedia%2Freadme%2F01-start.png" alt="The Revive start page"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setting it up (once)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You need two free programs first:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt;: download it from &lt;a href="https://www.python.org/downloads/" rel="nofollow noopener noreferrer"&gt;python.org/downloads&lt;/a&gt; and install it.
On Windows, tick the box that says &lt;strong&gt;"Add python.exe to PATH"&lt;/strong&gt; on the first screen of the installer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt;: download it from &lt;a href="https://ollama.com/download" rel="nofollow noopener noreferrer"&gt;ollama.com/download&lt;/a&gt; and install it. This is what lets Revive write captions on your own computer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then set up Revive itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows:&lt;/strong&gt; open the &lt;code&gt;scripts&lt;/code&gt; folder and double-click &lt;strong&gt;&lt;code&gt;setup.bat&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mac:&lt;/strong&gt; open the &lt;code&gt;scripts&lt;/code&gt; folder and double-click &lt;strong&gt;&lt;code&gt;Setup Revive.command&lt;/code&gt;&lt;/strong&gt;. If your Mac says it can't be opened, right-click it, choose…&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/DhritiGupta2006/They-demanded-a-picture" 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;p&gt;Revive is a fast API server with a simple HTML/CSS/JS landing page. It literally has no build steps, less to break on other systems. &lt;br&gt;
This is specialised for faces, which is the most we could do in the 24 hours we had. &lt;/p&gt;

&lt;h4&gt;
  
  
  Processing order
&lt;/h4&gt;

&lt;p&gt;GFPGAN v1.4 at original size --&amp;gt; Real-ESRGAN(2x) --&amp;gt; gemma4(via ollama)&lt;/p&gt;

&lt;p&gt;This doesn't need a GPU either! so any laptop device can use this program to revive their photos on the fly :D&lt;/p&gt;

&lt;p&gt;We focused on intuitivity, using established typography rules, and easy to undestand exit codes and error messages, this software can be used by anyone&lt;/p&gt;

&lt;h4&gt;
  
  
  Faces that look like themselves
&lt;/h4&gt;

&lt;p&gt;Meticulous testing was done to make the faces look as close as possible to the orignal, tinkering with GFPGAN's weight values to avoid airbrushing and glassing was an excercise in endurance. &lt;/p&gt;

&lt;h4&gt;
  
  
  Offline
&lt;/h4&gt;

&lt;p&gt;The primary requirement, everyone was against sending data out, so we brought the software in. &lt;/p&gt;

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

&lt;p&gt;Open models were the only way to build what they wanted.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Nothing&lt;/em&gt; leaves the computer
&lt;/h4&gt;

&lt;p&gt;Its offline, there isn't even any bit of code that sends anything online&lt;/p&gt;

&lt;h4&gt;
  
  
  Works anytime
&lt;/h4&gt;

&lt;p&gt;No internet, no condition, no firewalls, just your photos and the tool&lt;/p&gt;

&lt;h4&gt;
  
  
  Customizable!!
&lt;/h4&gt;

&lt;p&gt;We made it, we can change it. Open source ftw&lt;/p&gt;

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

&lt;p&gt;Best use of gemma - Gemma4-e4b runs locally and is the brain here, it writes captions and makes the albums. &lt;/p&gt;

&lt;h2&gt;
  
  
  Did they like it??
&lt;/h2&gt;

&lt;h4&gt;
  
  
  YES!!!
&lt;/h4&gt;

&lt;p&gt;We got some great reactions&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%2F0iviqtf4ttgtxkgizfwf.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%2F0iviqtf4ttgtxkgizfwf.png" alt=" " width="286" height="86"&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%2Fbi0cukp40vp0iwd7ftua.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%2Fbi0cukp40vp0iwd7ftua.png" alt=" " width="428" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Built by
&lt;/h3&gt;

&lt;p&gt;herbs_and_spices_api&lt;br&gt;
satvik_shashank&lt;br&gt;
dhriti_gupta&lt;/p&gt;

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