<?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: TheLinuxGuy</title>
    <description>The latest articles on DEV Community by TheLinuxGuy (@thelinuxguy-ssh).</description>
    <link>https://dev.to/thelinuxguy-ssh</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%2F4153737%2F96aeefe8-389c-4ba9-817d-4f743f44e387.jpg</url>
      <title>DEV Community: TheLinuxGuy</title>
      <link>https://dev.to/thelinuxguy-ssh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thelinuxguy-ssh"/>
    <language>en</language>
    <item>
      <title>The sky has no signal, so my app can't need one</title>
      <dc:creator>TheLinuxGuy</dc:creator>
      <pubDate>Sun, 11 Oct 2026 23:04:29 +0000</pubDate>
      <link>https://dev.to/thelinuxguy-ssh/the-sky-has-no-signal-so-my-app-cant-need-one-4j50</link>
      <guid>https://dev.to/thelinuxguy-ssh/the-sky-has-no-signal-so-my-app-cant-need-one-4j50</guid>
      <description>&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%2Ffjao93qvhd38s6toe4om.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%2Ffjao93qvhd38s6toe4om.png" alt=" " width="800" height="868"&gt;&lt;/a&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;Stargrass is an offline night sky guide. The model never invents a number, it just picks the right tool and phrases what the astronomy code found.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does it do?
&lt;/h3&gt;

&lt;p&gt;Just give it your location, by GPS or by hand. It tells you when full darkness starts and ends tonight, what the moon is doing, and which planets and stars are up right now, with a compass direction and height in fists (one fist is about 10 degrees).&lt;/p&gt;

&lt;p&gt;Then there's the ask box, which answers basic questions from the data. Basically a feature for the ones too lazy to read four cards, so they'd rather just ask. Hehe&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://stargrass.vercel.app" rel="noopener noreferrer"&gt;stargrass.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prepare once on wifi, and after that it works in airplane mode. There's a red night mode too, since a bright screen ruins your dark adaptation.&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/TheLinuxGuy-ssh" rel="noopener noreferrer"&gt;
        TheLinuxGuy-ssh
      &lt;/a&gt; / &lt;a href="https://github.com/TheLinuxGuy-ssh/Stargrass" rel="noopener noreferrer"&gt;
        Stargrass
      &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;Stargrass&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An offline night sky guide. You ask a question in plain language, it answers in one to three sentences, and you look up. The screen stays dark, the phone goes back in the pocket.&lt;/p&gt;
&lt;p&gt;Live at &lt;a href="https://stargrass.vercel.app" rel="nofollow noopener noreferrer"&gt;stargrass.vercel.app&lt;/a&gt;. Started October 6, 2026 for the DEV Hacktoberfest Open Source AI Challenge, Week 1 (Touch Grass).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The best skies have no signal. Stargrass is prepared once on wifi and used in airplane mode after that: the app shell, the star catalogue and, on WebGPU devices, the model weights all live on the device. Your location never leaves it. There is no backend, no account and no analytics.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Code computes, the model narrates. Every position, rise time and phase comes from the &lt;code&gt;astronomy-engine&lt;/code&gt; library. A question is routed to one of four tools (tonight, moon, what is up, find an object), the tool computes the real numbers, and…&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/TheLinuxGuy-ssh/Stargrass" 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;SvelteKit with a static build, so the whole app is just files, and a service worker caches them for offline use.&lt;/p&gt;

&lt;p&gt;All astronomy comes from &lt;code&gt;astronomy-engine&lt;/code&gt;. Every position, rise time and moon phase is computed there, never by the model. Questions route to one of four tools (tonight, moon, what's up, find an object), the tool computes the answer, and a template phrases it.&lt;/p&gt;

&lt;p&gt;On devices with WebGPU, a Gemma 1B model runs in the browser via WebLLM and handles the routing and wording after a one-time download. On every other device, a keyword router does the same job with no model at all. I built a 26-question eval set for it: the baseline scored 23/26, and the three misses were questions like "is it dark yet" that a normal person actually asks. After fixing the router, 26/26.&lt;/p&gt;

&lt;p&gt;Honest status: my test phone reports no GPU adapter (WebGPU exists on it, &lt;code&gt;requestAdapter()&lt;/code&gt; returns null), so keyword mode is the path I could verify for real, including offline with the server killed. The model path is wired and unit tested, and it activates on devices that can run it.&lt;/p&gt;

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

&lt;p&gt;Because the app has to work with no signal, a hosted API was never an option. Open weights make it possible to download the model onto the phone once and keep it there, with no key, no bill and no server seeing your location or questions. And since it's one string in one constant, anyone can swap Gemma for whatever open model runs better next year.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Mom.exe - Your Mom, but as an executable!</title>
      <dc:creator>TheLinuxGuy</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:10:01 +0000</pubDate>
      <link>https://dev.to/thelinuxguy-ssh/momexe-hacktoberfest-weekend-challege-project-5dp1</link>
      <guid>https://dev.to/thelinuxguy-ssh/momexe-hacktoberfest-weekend-challege-project-5dp1</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mom.exe is a wellness coach I built for my friend, who just moved out of home for the first time. (built for the lazy ones)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DEMO LINK: &lt;a href="https://momexe.vercel.app" rel="noopener noreferrer"&gt;https://momexe.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;He is a first-year hostel student, and his routine had quietly come apart. Meals went missing at random. A 9am lab landed right after a 2am finish. The mess closes at 9:30 and does not wait for anyone. Nothing in his day was holding it together.&lt;/p&gt;

&lt;p&gt;So I built something that plans his day around his real class schedule, mess windows and deadlines, and never once tells him he failed at anything. You do not fill in a planner. You just talk to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp57qgwzd3hqnorbojdu5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp57qgwzd3hqnorbojdu5.gif" alt="Sneak Peak of Mom.exe!" width="560" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I did not build this because he asked. I built it because I noticed.&lt;/p&gt;

&lt;p&gt;Nothing dramatic was wrong. It was small things stacking up, the kind you only see when you watch someone from close by. He skipped meals on no pattern I could point at. Some days it was lunch, some days dinner, some days both. His schedule looked like it had been shuffled by someone who had never met him.&lt;/p&gt;

&lt;p&gt;I thought about what to hand him, and the answer was not another productivity app. They all fail the same way. You open a form, pick a time, choose a category, set a reminder, and by the third task you have quit. Planning turns into a chore sitting on top of your other chores, and a person whose day is already falling apart does not need a second job.&lt;/p&gt;

&lt;p&gt;So the main rule became: &lt;strong&gt;no buttons for creating or choosing timings.&lt;/strong&gt; You do not build a schedule here. You talk to it. Say what happened, what you need, or what changed, and it works out the rest. Chatting, planning and rescheduling all happen in the same box, so rescuing a bad day costs one sentence.&lt;/p&gt;

&lt;p&gt;The interface does the other half. It shows the current plan by time, and when a block comes around it asks whether you did it. If you did, you mark it done. If you did not, it does not scold you and it does not drag the block back.&lt;/p&gt;

&lt;h3&gt;
  
  
  Did it work?
&lt;/h3&gt;

&lt;p&gt;He liked it right away, and mostly for the feel. The UI, the whole vibe, landed with him straight away, and that matters more than it sounds, because a wellness tool you dread opening is already broken. My other roommate saw it and wanted to use it too, which is the closest thing to a review I have.&lt;/p&gt;

&lt;p&gt;Is his schedule improving? I think so, but I cannot prove it. I only got the model pipeline reliable on Sunday morning, so there is no real before and after yet, and I would rather say that than invent a statistic. What I can speak to is my own use. Planning my days with it has been easy in a way the usual tools never were, because it feels like talking to someone instead of filling in a spreadsheet. If it stays that easy, people keep using it, and a plan only helps if you keep showing up for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You write a note in your own words.&lt;/strong&gt; Something like &lt;em&gt;"couldn't hydrate at 9:30, friends were in"&lt;/em&gt;. It answers with a concrete plan for the rest of the day and night, and the missed need gets folded into a later block instead of becoming a lecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chatting and planning share one box.&lt;/strong&gt; The model decides which one you meant, so asking for a change mid-conversation redoes the day and hands you back the timeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The day is a live timeline.&lt;/strong&gt; It shows the plan by time, asks whether each block is done, and lets you tick it off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It remembers across weeks.&lt;/strong&gt; The last 20 messages are resent word for word, and older weeks are compressed into digests. The conversation stays bounded without going amnesiac.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It has a mother.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  About the mother
&lt;/h3&gt;

&lt;p&gt;The name is not a joke. The coach talks like the good half of a mother: the one who already knows you had a rough night and skips straight to what can still go right today. No scorecards, no sighing, no "again?".&lt;/p&gt;

&lt;p&gt;Here is a real exchange from a live run of the harness, unedited. She is given:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;honestly today was awful. the seminar ran 2 hours over and i could not focus for anything after&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and replies:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ha. seminar over, focus gone. grab a glass of water, stretch, then pick a light task.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the whole thesis in two sentences. She does not ask what went wrong, because she was told. She does not say "unfortunately" or "try to do better today." She names the thing that actually happened,does not make it larger than it is, and hands back one small next move that is still possible tonight.&lt;/p&gt;

&lt;p&gt;Getting her &lt;em&gt;not&lt;/em&gt; to say "again?" took more work than any feature here. It is a prompt rule, but a prompt rule is a request, not a guarantee — so the reply also passes through a deterministic pass that strips the scorekeeper constructions and the assistant-shaped openers by hand. A live run produced "you missed dinner again" and "i hear you" despite both being explicitly banned in the prompt; the code catches what the prompt only discourages.&lt;/p&gt;

&lt;p&gt;The one voice failure I know about and have not fixed: she still occasionally opens a reply with "i hear you're hurting," which is precisely the register the rest of this section is arguing against. It is in the demo because leaving it out would make this read better than the app is.&lt;/p&gt;

&lt;p&gt;Two decisions shaped everything, and both were subtractions. There are no buttons for timings, and there is no scorekeeping. No streak counter, no "you missed breakfast again", and a block you failed to do never gets reopened. He already knows what he missed, and the app is not here to remind him. All it is allowed to do is notice a pattern once you point it out, and quietly rearrange whatever is left of the day.&lt;/p&gt;

&lt;p&gt;It also ships with a deterministic planner written in plain code, used whenever the model is unreachable or untrustworthy. Just a cute fallback for when things go sideways. &lt;/p&gt;

&lt;p&gt;Made by me with Love, Emotions and WAYY too much Creativity!!&lt;/p&gt;

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