<?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: samuel wachira</title>
    <description>The latest articles on DEV Community by samuel wachira (@hash-sum).</description>
    <link>https://dev.to/hash-sum</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: samuel wachira</title>
      <link>https://dev.to/hash-sum</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hash-sum"/>
    <language>en</language>
    <item>
      <title>NecroTerm: An Ethereal Séance with Computing's Past (Powered by Gemma 2)</title>
      <dc:creator>samuel wachira</dc:creator>
      <pubDate>Fri, 30 Oct 2026 18:56:53 +0000</pubDate>
      <link>https://dev.to/hash-sum/necroterm-an-ethereal-seance-with-computings-past-powered-by-gemma-2-477</link>
      <guid>https://dev.to/hash-sum/necroterm-an-ethereal-seance-with-computings-past-powered-by-gemma-2-477</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;Every October, as Halloween approaches and Día de los Muertos begins, the boundary between past and present grows thin. But while the physical world honors human ancestors, what about the ancestors of computing? &lt;/p&gt;

&lt;p&gt;What happened to the engineers who wrote compilers on punchcards, debugged with magnifying glasses, and sent Apollo 11 to the moon on 64 kilobytes of memory?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;NecroTerm: An Ethereal Séance with Computing's Past&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NecroTerm&lt;/strong&gt; is a retro-cyberpunk terminal and interactive Ouija séance interface that connects living developers with the departed pioneers of computer science. Powered by &lt;strong&gt;Google's open-weights Gemma 2&lt;/strong&gt; running completely locally, NecroTerm invites you to summon historical figures to diagnose modern software bloat, scold our 2GB &lt;code&gt;node_modules&lt;/code&gt; folders, and transmute modern code into archaic computing paradigms.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Core Capabilities:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Ouija Board &amp;amp; Sliding Planchette:&lt;/strong&gt; An authentic arched alphabet where a physical wooden planchette glides dynamically across the board, tracking the tokens streaming from Gemma 2 in real time with wooden friction audio!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Spectral Pantheon:&lt;/strong&gt; Summon &lt;strong&gt;Countess Ada Lovelace&lt;/strong&gt; (1843), &lt;strong&gt;Rear Admiral Grace Hopper&lt;/strong&gt; (1952), the &lt;strong&gt;LISP Machine Monk&lt;/strong&gt; (1979), &lt;strong&gt;Dennis Ritchie&lt;/strong&gt; (1972), or the frantic &lt;strong&gt;Y2K Doomsday Oracle&lt;/strong&gt; (1999).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Melting Candle of Life:&lt;/strong&gt; An animated wax candle with flickering flame physics that melts down with each question. If it expires, the séance connection freezes until you strike a match to relight the vessel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Sacrifice (Transmutation):&lt;/strong&gt; Paste modern TypeScript, Python, or Rust. The spirit deconstructs your abstractions and renders the equivalent in punchcards, FLOW-MATIC, B, or pure lambda calculus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procedural WebAudio Soundscape:&lt;/strong&gt; Zero external MP3 files—procedurally generates relay ticks, keyboard clatter, mains transformer hum, and spirit chimes using the browser's native Web Audio API, paired with optional &lt;strong&gt;ElevenLabs&lt;/strong&gt; vintage radio voice synthesis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentic CRT Palettes:&lt;/strong&gt; Switch between Phosphor Green, Amber, and Ghost Cyan with scanlines, screen curvature, and bloom shaders.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;h3&gt;
  
  
  Live Video Demo
&lt;/h3&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/aug6IQLh9P4" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  A Glimpse into the Séance:
&lt;/h3&gt;

&lt;p&gt;[Petitioner]: "Why does my simple React landing page take 400 Megabytes of memory?"&lt;/p&gt;

&lt;p&gt;[Rear Admiral Grace Hopper]:&lt;br&gt;
"Good heavens, lieutenant! Four hundred megabytes for a brochure? In 1952, we&lt;br&gt;
mapped ballistic missile trajectories using vacuum tubes and magnetic drums&lt;br&gt;
measured in words, not gigabytes! Here, hold this 11.8-inch piece of wire—that is&lt;br&gt;
a nanosecond, the maximum distance light travels in a billionth of a second. Every&lt;br&gt;
unnecessary abstraction layer you pile on is dragging your electrons across miles&lt;br&gt;
of virtual desert. Cut the bloat and get back to work!"&lt;/p&gt;


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

&lt;p&gt;The complete source code is open source under the MIT License:&lt;/p&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/hash-sum" rel="noopener noreferrer"&gt;
        hash-sum
      &lt;/a&gt; / &lt;a href="https://github.com/hash-sum/necroterm" rel="noopener noreferrer"&gt;
        necroterm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🕯️ An ethereal retro terminal &amp;amp; interactive Ouija séance interface to summon computing pioneers with local Gemma 2 open-weights. Built for Hacktoberfest 2026: Ghost in the Machine. 👻
    &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;🕯️ NecroTerm: An Ethereal Séance with Computing's Past 👻&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Ghost in the Machine" — Hacktoberfest 2026 Open-Source AI Challenge (Week 4)&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Powered by local open-weights &lt;strong&gt;Gemma 2&lt;/strong&gt;, procedural WebAudio synthesis, and an interactive occult Ouija interface.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b27fbfe2dcb28c00251937b1ccfd2e93bd8b068072e2d84d53505f92be64470d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d626c756576696f6c65743f7374796c653d666f722d7468652d6261646765266c6f676f3d6861636b746f62657266657374" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6b941695d0aa17165fa8c660f59f1f0595efe3f684170482c45cfe0a9ea3ed16/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f64656c2d47656d6d615f325f4f70656e2d2d576569676874732d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65" alt="AI Model: Gemma 2"&gt;&lt;/a&gt;
&lt;a href="https://github.com/hash-sum/necroterm/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/153acf9dff19deb8abfc598c53bac50a4ceae0f5c83a552711060d3d78d2c057/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666f722d7468652d6261646765" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🔮 What is NecroTerm?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;NecroTerm&lt;/strong&gt; is a haunted, retro-cyberpunk terminal and interactive Ouija séance interface that bridges modern computing dilemmas with the departed pioneers of computer science history.&lt;/p&gt;
&lt;p&gt;In the spirit of &lt;strong&gt;Halloween&lt;/strong&gt; and &lt;strong&gt;Día de los Muertos (Day of the Dead)&lt;/strong&gt;, NecroTerm summons the spirits who programmed with vacuum tubes, punchcards, and core memory to examine the bloated state of modern software engineering.&lt;/p&gt;
&lt;p&gt;Ask a dilemma, or offer a "code sacrifice" (paste modern TypeScript, Python, or Rust), and watch the spirit tear down your layers of abstraction, scold your 2-gigabyte &lt;code&gt;node_modules&lt;/code&gt;, and transmute the code into an archaic paradigm (Babbage punchcard specs, FLOW-MATIC, B, or pure lambda calculus).&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Key&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hash-sum/necroterm" 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;NecroTerm was architected with a strict privacy-first, offline-capable design:&lt;/p&gt;

&lt;p&gt;┌────────────────────────────────────────────────────────┐&lt;br&gt;
│ NecroTerm Frontend (Vite) │&lt;br&gt;
│ - React 19 + Tailwind v4 CRT Shaders │&lt;br&gt;
│ - Interactive Ouija Board &amp;amp; Magnetic Planchette │&lt;br&gt;
│ - Web Audio API Procedural Sound Synthesizer │&lt;br&gt;
└───────────────────────────┬────────────────────────────┘&lt;br&gt;
│ SSE Stream &amp;amp; Voice API&lt;br&gt;
┌───────────────────────────▼────────────────────────────┐&lt;br&gt;
│ FastAPI Netherworld Backend │&lt;br&gt;
│ - Server-Sent Events (SSE) Streaming Engine │&lt;br&gt;
│ - Historical Persona Prompt Orchestration │&lt;br&gt;
│ - ElevenLabs Vintage Speech Synthesis Adapter │&lt;br&gt;
└─────────────┬───────────────────────────┬──────────────┘&lt;br&gt;
│ │&lt;br&gt;
┌─────────────▼─────────────┐ ┌───────────▼──────────────┐&lt;br&gt;
│ Ollama: Gemma 2 (9B) │ │ ElevenLabs Voice API │&lt;br&gt;
│ (Local Open Weights) │ │ (Vintage Radio Filter) │&lt;br&gt;
└───────────────────────────┘ └──────────────────────────┘&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local Open-Weights Engine:&lt;/strong&gt; We utilized &lt;strong&gt;Gemma 2 (9B)&lt;/strong&gt; running locally via Ollama. Gemma 2's extraordinary reasoning density and stylistic flexibility allowed each pioneer's distinct historical voice—from Lovelace's 19th-century Victorian elegance to Hopper's crisp military cadence—to shine without sounding like generic corporate chatbot output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-Sent Events (SSE):&lt;/strong&gt; The backend streams tokens chunk-by-chunk directly to the browser. As each token arrives, the frontend calculates coordinates on the Ouija board, triggering the CSS/SVG planchette to physically glide toward the active letters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procedural WebAudio Synthesis:&lt;/strong&gt; To keep the project lightweight and self-contained, all environmental audio (the 58Hz mains transformer hum, teletype relay clicks, wooden planchette friction, and resonant bell harmonics) is synthesized mathematically in JavaScript with &lt;code&gt;AudioContext&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;When interpreting the "Ghost in the Machine" prompt, the open-source ethos wasn't just a requirement—it was the foundational philosophy of what we built.&lt;/p&gt;

&lt;p&gt;Here is why open innovation made NecroTerm possible:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Air-Gapped Privacy for Code Sacrifices:&lt;/strong&gt; Developers frequently paste proprietary snippets, internal architecture questions, and personal code into NecroTerm's "Transmutation Chamber". You cannot send proprietary corporate intellectual property to closed third-party cloud APIs. Because &lt;strong&gt;Gemma 2 runs 100% locally on device&lt;/strong&gt;, zero bytes of user code ever leave the developer's laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uncensored, Authentic Historical Expression:&lt;/strong&gt; Closed commercial LLMs enforce strict corporate safety filters that homogenize tone, turning every persona into a sanitized corporate customer service agent. Open-weight models like Gemma give builders the freedom to craft authentic, eccentric, biting, and emotionally resonant historical characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preservation with the Lights (and Internet) Off:&lt;/strong&gt; In the spirit of Día de los Muertos, open innovation ensures digital permanence. Closed SaaS APIs can be deprecated, acquired, or shut down behind paywalls at any moment. An open-weight model committed to an open-source repo will remain runnable 30 years from now on an offline machine in the dark.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This project was conceived, planned, designed, and implemented with the assistance of an agentic coding partner. You can inspect the development session transcript below:&lt;/p&gt;




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

&lt;p&gt;During testing, we pasted a convoluted 80-line nested async function with 14 chained callbacks and asked the ghost of &lt;strong&gt;Dennis Ritchie&lt;/strong&gt; for his diagnosis.&lt;/p&gt;

&lt;p&gt;The CRT scanlines flickered, the procedural transformer hum dropped, and the Ouija planchette drifted slowly toward the letter &lt;strong&gt;S&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Ken and I built UNIX on a PDP-7 with 8 kilobytes of memory. A file is a sequence of bytes. A pipe is a stream. When I look at your fourteen nested promise callbacks to fetch a single username, I do not see progress. I see developers building cathedrals out of dry leaves. Delete it and use a pointer."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It gave us genuine goosebumps—partly because it was eerie, but mostly because he was right.&lt;/p&gt;




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

&lt;p&gt;We are entering the following partner categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; The entire reasoning engine, historical roleplay system, and code transmutation pipeline are powered exclusively by Google's open-weights &lt;strong&gt;Gemma 2&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs:&lt;/strong&gt; Synthesizes period-accurate, crackling vintage radio and phonograph voices for each summoned computing spirit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render / DigitalOcean:&lt;/strong&gt; Portable containerized architecture ready for immediate cloud deployment.&lt;/li&gt;
&lt;/ul&gt;




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