<?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: Danny Alvarez </title>
    <description>The latest articles on DEV Community by Danny Alvarez  (@dqrepairbyte).</description>
    <link>https://dev.to/dqrepairbyte</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%2F4209031%2F3bd2fa3e-bfc5-4659-8567-9366e0763aeb.png</url>
      <title>DEV Community: Danny Alvarez </title>
      <link>https://dev.to/dqrepairbyte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dqrepairbyte"/>
    <language>en</language>
    <item>
      <title>Ghost Tech: an old appliance repairman haunting your browser</title>
      <dc:creator>Danny Alvarez </dc:creator>
      <pubDate>Tue, 27 Oct 2026 04:58:54 +0000</pubDate>
      <link>https://dev.to/dqrepairbyte/ghost-tech-an-old-appliance-repairman-haunting-your-browser-3eog</link>
      <guid>https://dev.to/dqrepairbyte/ghost-tech-an-old-appliance-repairman-haunting-your-browser-3eog</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;I fixed washers, dryers and refrigerators for a living for about 15 years, first as a service tech and then running my own repair company for 12. I retired from it in 2021. One thing bothered me the whole time: most of the calls I went on were things a homeowner could have fixed in ten minutes if someone had just told them where to look. A clogged pump filter. A dryer vent packed with lint. A fridge with dusty coils. People paid a service call fee to hear that, or worse, they threw out a good machine and bought a new one.&lt;/p&gt;

&lt;p&gt;The old techs I learned from carried all of that in their heads, and a lot of it is going away as repair turns into replace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghost Tech&lt;/strong&gt; is my answer for this week's theme. It's the friendly ghost of an old appliance repairman, haunting a moonlit laundry room in your browser full of washers, fridges and microwaves that rattle and blink back at you. You pick which machine is haunting you, tell the ghost what it's doing, and it walks you through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The most likely causes, most likely first&lt;/li&gt;
&lt;li&gt;The checks you can safely do yourself, simplest first&lt;/li&gt;
&lt;li&gt;The point where you should stop and call a pro&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's for regular homeowners and renters, especially people who can't easily drop $100 on a service call to find out their filter was clogged.&lt;/p&gt;

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

&lt;p&gt;Live demo: &lt;a href="https://dqrepair-byte.github.io/hacktoberfest-week4/" rel="noopener noreferrer"&gt;https://dqrepair-byte.github.io/hacktoberfest-week4/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AI needs a desktop browser with WebGPU (recent Chrome or Edge). The first load downloads the model once, under 1 GB, and caches it. After that it starts in seconds. If your computer can't run the model, the ghost still answers straight from its field notes, so the page always helps.&lt;/p&gt;

&lt;p&gt;Try something like: &lt;em&gt;Dryer, "runs and the drum turns but there's no heat."&lt;/em&gt; The ghost's field notes put the lint screen and the vent at the top of the list, before any heating element, which is exactly what I'd have told you on a service call.&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/dqrepair-byte" rel="noopener noreferrer"&gt;
        dqrepair-byte
      &lt;/a&gt; / &lt;a href="https://github.com/dqrepair-byte/hacktoberfest-week4" rel="noopener noreferrer"&gt;
        hacktoberfest-week4
      &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;Ghost Tech&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The friendly ghost of an old appliance repairman, haunting your browser.&lt;/p&gt;
&lt;p&gt;Tell it what your washer, dryer, fridge, dishwasher, oven or microwave is doing, and it walks you through the likely causes, the safe checks you can do yourself, and the point where you should stop and call a pro. It runs on an open-weight model on your own device, so nothing you type leaves your computer.&lt;/p&gt;
&lt;p&gt;Built for the DEV Hacktoberfest 2026 Open-Source AI Challenge, Week 4: Ghost in the Machine. The idea is to honor the past: old service-call know-how that's disappearing as repair turns into replace, kept alive in a machine anyone can run for free.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://dqrepair-byte.github.io/hacktoberfest-week4/" rel="nofollow noopener noreferrer"&gt;https://dqrepair-byte.github.io/hacktoberfest-week4/&lt;/a&gt;&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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight model, local inference.&lt;/strong&gt; &lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt; runs Google's Gemma 3 1B (default, about 0.7 GB of video memory), Gemma 2 2B or Qwen 2.5 1.5B on your GPU through WebGPU, inside a web worker…&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/dqrepair-byte/hacktoberfest-week4" 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;Open-weight model, running locally.&lt;/strong&gt; The default is Google's &lt;strong&gt;Gemma 3 1B&lt;/strong&gt;, with Gemma 2 2B and Qwen 2.5 1.5B as options. They run on your own GPU through &lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt; and WebGPU, inside a web worker so the page stays responsive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field notes as grounding.&lt;/strong&gt; Small models will happily make up repairs. So the app has a set of field notes written from real service-call experience: symptom, likely causes, safe checks, and when to call a pro, for the common problems I saw over and over. Your description gets matched against the notes, and the best ones go into the prompt. The model explains and orders the steps; the notes keep it honest. You can open "Field notes the ghost used" under every answer to see exactly what it was working from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety first, in code and in the prompt.&lt;/strong&gt; Unplug before you open a panel. If you smell gas, leave and call the gas company. Never bypass a door switch or thermal fuse. Never open a microwave cabinet, because the capacitor can hold a lethal charge even unplugged. Those rules are on the page and in the instructions, and they beat the ghost's personality every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kind to ordinary computers.&lt;/strong&gt; The default is the smallest Gemma, so it needs under 1 GB of video memory. My own computer's AMD graphics still drops the model mid-answer, so the app catches that, unloads cleanly, and answers from the field notes instead of just throwing an error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A haunted look that costs nothing.&lt;/strong&gt; The appliances are hand-drawn inline SVG and every animation is plain CSS, so the spooky stuff never competes with the model for the GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No server.&lt;/strong&gt; It's plain HTML, CSS and JavaScript on GitHub Pages. No accounts, no API keys, no backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm not a programmer by training. I built this with an AI coding assistant doing the coding while I supplied the trade knowledge and checked the advice against what I know from the field.&lt;/p&gt;

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

&lt;p&gt;Because the ghost has to live on your machine.&lt;/p&gt;

&lt;p&gt;With an open-weight model, the whole thing runs in your browser. Nothing about your house, your appliance or your problem gets sent anywhere. It costs nothing to run, so I can give it away. It works even if some company shuts down an API next year. And anyone can open &lt;code&gt;kb.js&lt;/code&gt;, see exactly what the ghost knows, and add what they know. A retired tech in another city could add the fixes they've carried around for 30 years.&lt;/p&gt;

&lt;p&gt;A closed API would have meant keys, a bill for every question, and a server holding people's data. That's the opposite of what an old-school repairman stands for: tell people the truth, help them fix it themselves when they can, and don't charge them for what they don't need.&lt;/p&gt;

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

&lt;p&gt;The theme said to build something that honors the past. For me that's the generation of techs who taught me: old-timers who could hear a bad bearing from the driveway and would rather show you the fix than sell you a new machine. Ghost Tech is a small way to keep that knowledge haunting the machines, instead of the landfill.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt;: Gemma 3 1B is the default model (Gemma 2 2B is an option), running fully in the browser through WebLLM.&lt;/li&gt;
&lt;/ul&gt;

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