<?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: wafula eliah</title>
    <description>The latest articles on DEV Community by wafula eliah (@eliahwafula).</description>
    <link>https://dev.to/eliahwafula</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%2F4043793%2F7a94bf80-da9c-4158-87cf-dd2aa39f4814.jpg</url>
      <title>DEV Community: wafula eliah</title>
      <link>https://dev.to/eliahwafula</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eliahwafula"/>
    <language>en</language>
    <item>
      <title>Memory Lantern: a private remembrance writer with local open AI</title>
      <dc:creator>wafula eliah</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:47:06 +0000</pubDate>
      <link>https://dev.to/eliahwafula/memory-lantern-a-private-remembrance-writer-with-local-open-ai-1je5</link>
      <guid>https://dev.to/eliahwafula/memory-lantern-a-private-remembrance-writer-with-local-open-ai-1je5</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;Memory Lantern is a local-first remembrance writer for Día de los Muertos. Add a name, a memory, and a few things they loved; a model on your own computer helps shape those notes into a gentle letter, short poem, or words to read aloud. The keepsake stays editable and printable.&lt;/p&gt;

&lt;p&gt;I wanted a tool for keeping someone's stories close without pretending software can speak for the person who died. The model is instructed to use only details the writer supplied, and the result is presented as a draft to review.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live hosted UI preview (static fictional sample; no model runs on the hosted page):&lt;/strong&gt; &lt;a href="https://wafulaeliah373-jpg.github.io/memory-lantern/" rel="noopener noreferrer"&gt;Open Memory Lantern&lt;/a&gt;. The example is clearly labeled in the app.&lt;/p&gt;

&lt;p&gt;To try local generation: install Ollama, run &lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;, start Ollama, then run &lt;code&gt;python server.py&lt;/code&gt; from the project folder and open &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;. Notes are sent only to Ollama on the same computer.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/wafulaeliah373-jpg/memory-lantern" rel="noopener noreferrer"&gt;Public GitHub repository&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The interface is plain HTML, CSS, and JavaScript. A small Python standard-library server serves the page and forwards prompts to Ollama's local chat endpoint. The app is designed around Gemma 3 (&lt;code&gt;gemma3:4b&lt;/code&gt;), an open-weight model that can run on the user's machine. Drafts are stored in browser local storage; there is no cloud account or analytics.&lt;/p&gt;

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

&lt;p&gt;These notes can be deeply personal. Running an open-weight model locally means family stories do not need to be sent to a hosted AI provider. After downloading the model, the writing flow can work without internet, and the writer can swap models. Here, control over where memories go matters more than the convenience of a closed API.&lt;/p&gt;

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

&lt;p&gt;The project takes “Ghost in the Machine” as a prompt to remember, not simulate a dead person. The person supplies the memories; the model helps arrange them. The writer can edit the result until it sounds like their own.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I made my group chats wait for me with local AI</title>
      <dc:creator>wafula eliah</dc:creator>
      <pubDate>Sat, 24 Oct 2026 15:56:17 +0000</pubDate>
      <link>https://dev.to/eliahwafula/i-made-my-group-chats-wait-for-me-with-local-ai-c9h</link>
      <guid>https://dev.to/eliahwafula/i-made-my-group-chats-wait-for-me-with-local-ai-c9h</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;/p&gt;

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

&lt;p&gt;SlothDigest turns a pasted group chat into a short morning brief: a recap, decisions, action items with owners and dates when they are stated, and questions that still need an answer. Each extracted item links back to its source text so you can check the model's reading against the conversation.&lt;/p&gt;

&lt;p&gt;The goal is to replace a slow scroll through yesterday's messages with one paste and one click. SlothDigest never connects to a messaging account or stores a chat archive.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Run it locally:&lt;/strong&gt; clone the &lt;a href="https://github.com/wafulaeliah373-jpg/slothdigest" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;, follow its Quick Start, click &lt;strong&gt;Try a sample&lt;/strong&gt;, then &lt;strong&gt;Make my morning brief&lt;/strong&gt;. The first run downloads Gemma 3 4B (about 3.4 GB). This prototype runs inference on your computer; there is no shared hosted demo because private chats should not need to leave your device.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/wafulaeliah373-jpg/slothdigest" rel="noopener noreferrer"&gt;SlothDigest on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;SlothDigest uses Python's standard library for a small local web server and a plain HTML, CSS, and JavaScript interface. The server sends the pasted chat to Ollama on the same machine. Gemma 3 returns structured data for the recap, decisions, tasks, and open questions. After the model is downloaded, inference can work offline. You can switch to another model already installed in Ollama.&lt;/p&gt;

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

&lt;p&gt;Group chats can hold personal details, plans, and unfinished decisions. Running an open-weight model locally means a user can keep that context on their own machine, inspect the code, work offline after setup, and change models to fit their hardware. No per-message cloud API bill or external chat integration is required.&lt;/p&gt;

&lt;p&gt;That choice has a real cost: the first model download is large, and local inference uses the computer's own resources. For a private catch-up tool, I think that trade-off is useful.&lt;/p&gt;

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

&lt;p&gt;The intended payoff is a quick scan instead of rereading the thread. I have not measured time saved, and I would not trust this prototype with important tasks without checking its evidence. In a sample garden-planning chat, Gemma 3 4B missed two offers to bring supplies. SlothDigest shows source text for extracted items and adds a local rule to flag uncited first-person offers such as “I can bring…” so a possible omission is easier to spot.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first version accepts pasted text exports and has a 60,000-character limit. Check important tasks against the original conversation.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ClassKit Kampala: Local AI lesson drafts for Ugandan teachers</title>
      <dc:creator>wafula eliah</dc:creator>
      <pubDate>Sat, 17 Oct 2026 13:04:47 +0000</pubDate>
      <link>https://dev.to/eliahwafula/classkit-kampala-local-ai-lesson-drafts-for-ugandan-teachers-4ce6</link>
      <guid>https://dev.to/eliahwafula/classkit-kampala-local-ai-lesson-drafts-for-ugandan-teachers-4ce6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built ClassKit Kampala to help primary teachers prepare lesson materials faster. A teacher chooses the subject, class, topic, and lesson duration, then gets an editable lesson outline, practice questions, and an answer key. I started with Primary 6 Mathematics and adding fractions.&lt;/p&gt;

&lt;p&gt;The potential customer is a teacher, tutor, or small school that needs useful materials without spending extra hours preparing them. I have not yet validated pricing with a customer.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://wafulaeliah373-jpg.github.io/classkit-kampala/" rel="noopener noreferrer"&gt;Try the hosted sample-mode demo&lt;/a&gt;. The public demo uses the built-in sample generator. Optional Qwen2.5 3B lesson generation runs locally with Ollama when you follow the setup in the repository.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/wafulaeliah373-jpg/classkit-kampala" rel="noopener noreferrer"&gt;View the public source code on GitHub&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;The interface is built with HTML, CSS, and JavaScript, with a small Node.js server that connects it to Ollama running on the same computer. I used the Qwen2.5 3B open-weight model for local lesson generation and verified that it generated a lesson in ClassKit. The tool also includes a built-in sample draft when local AI is unavailable. All generated materials are drafts for teacher review; the project does not claim official curriculum alignment.&lt;/p&gt;

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

&lt;p&gt;Running an open-weight model locally means the lesson prompt can stay on the teacher's computer instead of being sent to a hosted AI service. It also gives a school the choice to change models and avoids a hosted per-request AI fee. Local inference depends on having Ollama and the model installed, so I am testing how well this setup fits a teacher's everyday computer.&lt;/p&gt;

&lt;p&gt;Built by Eliah Festus Wafula.&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>I built a small machine for imagining impossible futures</title>
      <dc:creator>wafula eliah</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:52:05 +0000</pubDate>
      <link>https://dev.to/eliahwafula/i-built-a-small-machine-for-imagining-impossible-futures-4i00</link>
      <guid>https://dev.to/eliahwafula/i-built-a-small-machine-for-imagining-impossible-futures-4i00</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my submission for the Sanity Challenge, Path Two: Vibe-Code Something Strange.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;WHAT IF&lt;/strong&gt; is a small playground for imagining impossible futures. Readers choose a question, open its story, and use the Ripple Engine to explore what might happen on the first day, one year later, and generations later.&lt;/p&gt;

&lt;p&gt;The stories are structured in Sanity rather than hard-coded into the page. Editors can manage each question, its slug, summary, story, image, and optional consequences for each time horizon.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://what-if-ripple-engine.vercel.app" rel="noopener noreferrer"&gt;Explore WHAT IF&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open a question from the board, read its story, and choose a time horizon in the Ripple Engine.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/wafulaelia373-jpg/what-if-ripple-engine" rel="noopener noreferrer"&gt;View the project on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Build Process
&lt;/h2&gt;

&lt;p&gt;I used Codex to help build the Nuxt site and connect it to Sanity. I started with the question board and individual story pages, then added the Ripple Engine so readers could explore how one change might affect the future.&lt;/p&gt;

&lt;p&gt;I used Sanity CLI and Nuxt CLI to get the projects started. I refined the site in small steps, including its visual design, the author credit, and the story navigation.&lt;/p&gt;

&lt;p&gt;One issue took extra debugging: story content didn’t always appear when navigating between pages. I moved the Sanity reads behind the Nuxt app’s own server routes and made page loading non-blocking. That helped the pages open promptly while their content loads.&lt;/p&gt;

&lt;p&gt;The Ripple Engine does not generate AI predictions. It uses consequences written in Sanity, with prompts to help readers imagine outcomes when an editor hasn’t written one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Project Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project ID:&lt;/strong&gt; &lt;code&gt;c526wkjm&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dataset:&lt;/strong&gt; &lt;code&gt;production&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Main document type:&lt;/strong&gt; &lt;code&gt;whatIf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I’d Improve Next
&lt;/h2&gt;

&lt;p&gt;I’d add more thought experiments and continue refining the editing experience so it’s easy to create detailed, story-specific ripple outcomes.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
