<?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: Tharindra Dasuni</title>
    <description>The latest articles on DEV Community by Tharindra Dasuni (@tharindra_dasuni_6c212bfb).</description>
    <link>https://dev.to/tharindra_dasuni_6c212bfb</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%2F4215904%2Ff8db2b2c-7777-4fbe-946c-64cd35a2f1a4.png</url>
      <title>DEV Community: Tharindra Dasuni</title>
      <link>https://dev.to/tharindra_dasuni_6c212bfb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tharindra_dasuni_6c212bfb"/>
    <language>en</language>
    <item>
      <title>GhostEcho 👻 – Bringing Ghost Stories to Life with Open-Source AI</title>
      <dc:creator>Tharindra Dasuni</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:57:26 +0000</pubDate>
      <link>https://dev.to/tharindra_dasuni_6c212bfb/ghostecho-bringing-ghost-stories-to-life-with-open-source-ai-2554</link>
      <guid>https://dev.to/tharindra_dasuni_6c212bfb/ghostecho-bringing-ghost-stories-to-life-with-open-source-ai-2554</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;&lt;strong&gt;GhostEcho&lt;/strong&gt; is a concept for an offline AI-powered ghost story generator that transforms simple ideas, mysterious locations, and forgotten memories into immersive supernatural stories.&lt;/p&gt;

&lt;p&gt;Inspired by the &lt;strong&gt;Ghost in the Machine&lt;/strong&gt; theme, I wanted to explore a fascinating question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What happens when artificial intelligence becomes a storyteller for the mysteries, memories, and legends of the past?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The goal is to create a storytelling experience powered by locally running, open-weight AI models rather than relying on expensive cloud-based APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;👻 &lt;strong&gt;AI Ghost Story Generation:&lt;/strong&gt; Generate original supernatural stories from user-provided prompts.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Context-Aware Storytelling:&lt;/strong&gt; Adapt narratives based on locations, characters, themes, and user choices.&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Local AI Inference:&lt;/strong&gt; Run an open-weight language model using Ollama.&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;Privacy-Focused Design:&lt;/strong&gt; Keep story prompts and generated content on the user's computer.&lt;/li&gt;
&lt;li&gt;🎃 &lt;strong&gt;Halloween-Inspired Experience:&lt;/strong&gt; Explore haunted places, mysterious events, and forgotten legends.&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Simple Web Interface:&lt;/strong&gt; Interact with the storytelling engine through a lightweight Flask application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GhostEcho explores how open-source AI can turn ordinary ideas into creative, atmospheric storytelling experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Interaction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;User Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Tell me a mysterious ghost story about an abandoned railway station in Sri Lanka."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Illustrative AI Response:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Every night at exactly 11:59 PM, the abandoned railway station echoed with the sound of an approaching train. But the tracks had been silent for over forty years. One evening, a young traveler discovered a faded ticket lying on the platform. Printed on it was tomorrow's date — and his own name."&lt;/p&gt;

&lt;p&gt;This illustrates the type of interactive storytelling experience GhostEcho aims to provide.&lt;/p&gt;

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

&lt;p&gt;The project is designed around widely accessible open-source tools, allowing developers to explore, customize, and extend the storytelling experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proposed Project Structure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;app.py&lt;/code&gt; – Flask application and API endpoints&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;templates/index.html&lt;/code&gt; – Main storytelling interface&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/css/style.css&lt;/code&gt; – Halloween-inspired styling&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/js/script.js&lt;/code&gt; – Frontend interactions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;requirements.txt&lt;/code&gt; – Python dependencies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;README.md&lt;/code&gt; – Setup and documentation&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The proposed architecture uses open-source technologies to make AI storytelling accessible without requiring a commercial AI API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;Core application development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flask&lt;/td&gt;
&lt;td&gt;Backend web framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;Local AI model inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Gemma&lt;/td&gt;
&lt;td&gt;Open-weight language model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JavaScript&lt;/td&gt;
&lt;td&gt;Interactive user interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git and GitHub&lt;/td&gt;
&lt;td&gt;Version control and collaboration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The user enters a creative prompt through the web interface.&lt;/p&gt;

&lt;p&gt;The Flask backend receives the request and prepares a storytelling instruction.&lt;/p&gt;

&lt;p&gt;Ollama processes the request using a locally running Gemma model.&lt;/p&gt;

&lt;p&gt;The generated story is returned to the web interface, where the user can read the result and continue experimenting with new ideas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Development Approach
&lt;/h3&gt;

&lt;p&gt;The design focuses on three principles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Accessibility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers should be able to experiment with generative AI using open tools without needing a paid API subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Privacy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When running entirely locally, personal stories, fictional ideas, and prompts do not need to be transmitted to an external inference service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Customization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By using an open-weight model, developers can experiment with different prompts, model sizes, inference settings, and storytelling styles.&lt;/p&gt;

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

&lt;p&gt;Open innovation is at the heart of GhostEcho.&lt;/p&gt;

&lt;p&gt;Many AI applications depend on proprietary cloud services, which may introduce usage costs, internet requirements, and limitations on customization.&lt;/p&gt;

&lt;p&gt;Open-weight models and open-source inference tools provide a different approach.&lt;/p&gt;

&lt;p&gt;With Ollama and Gemma, it becomes possible to build an AI-powered experience that can run directly on a personal computer.&lt;/p&gt;

&lt;p&gt;This creates several important opportunities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Greater developer control:&lt;/strong&gt; Developers can customize the inference process and experiment with different models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better data privacy:&lt;/strong&gt; Local inference allows user-generated content to remain on a machine they control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced dependency:&lt;/strong&gt; The application's core AI functionality does not have to depend on a third-party API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible experimentation:&lt;/strong&gt; Students and independent developers can explore practical AI applications using freely available tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community collaboration:&lt;/strong&gt; Open development enables others to inspect, improve, and extend the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, open innovation is about making advanced technology accessible to developers regardless of their financial resources or geographical location.&lt;/p&gt;

&lt;p&gt;As a software engineering student and developer from Sri Lanka, I believe that open technologies can help more people participate in building meaningful AI applications.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;"Every ghost has a story. Every forgotten place has a memory."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GhostEcho is inspired by the idea that technology can transform the stories we imagine into interactive experiences.&lt;/p&gt;

&lt;p&gt;The most interesting part of the concept is not simply generating frightening stories.&lt;/p&gt;

&lt;p&gt;It is exploring how AI can create an atmosphere of mystery from something as simple as an abandoned building, an old photograph, or a forgotten legend.&lt;/p&gt;

&lt;p&gt;The Halloween theme offered an opportunity to combine creativity, storytelling, and open-source artificial intelligence.&lt;/p&gt;

&lt;p&gt;GhostEcho represents that intersection between imagination and technology.&lt;/p&gt;

&lt;p&gt;Sometimes, the most fascinating ghost is not hiding in an abandoned house.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is waiting inside the machine. 👻&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; – Applicable if the completed project genuinely uses Google's Gemma open-weight model as its AI storytelling engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;GhostEcho demonstrates a direction for creating imaginative AI experiences using open technologies.&lt;/p&gt;

&lt;p&gt;The project is intended to show that generative AI development does not always require proprietary cloud infrastructure.&lt;/p&gt;

&lt;p&gt;With open-weight models, local inference, and community-driven frameworks, developers can build creative applications while maintaining control over their technology.&lt;/p&gt;

&lt;p&gt;Thank you to the DEV Community and Hacktoberfest organizers for inspiring developers to explore the possibilities of open-source AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Hacktoberfest 2026! 🎃👻&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #opensource #ai
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>5 Small Habits That Make You a Better Developer</title>
      <dc:creator>Tharindra Dasuni</dc:creator>
      <pubDate>Thu, 29 Oct 2026 18:33:48 +0000</pubDate>
      <link>https://dev.to/tharindra_dasuni_6c212bfb/5-small-habits-that-make-you-a-better-developer-3c56</link>
      <guid>https://dev.to/tharindra_dasuni_6c212bfb/5-small-habits-that-make-you-a-better-developer-3c56</guid>
      <description>&lt;p&gt;When I started coding, I thought getting better meant learning more frameworks. Over time I realized the biggest improvements came from small, boring habits. Here are five that made a real difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Read error messages fully
&lt;/h2&gt;

&lt;p&gt;It's tempting to copy the error and paste it into a search engine immediately. Instead, read it slowly. Most errors tell you the file, the line number, and often the exact cause. Five seconds of careful reading saves fifteen minutes of guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Commit small and often
&lt;/h2&gt;

&lt;p&gt;Big commits are hard to review and harder to undo. Small commits with clear messages give you a safety net.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Fix null check in user login"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good message answers one question: what changed, and why?&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Write code for the next person
&lt;/h2&gt;

&lt;p&gt;That next person is usually you, six months later. Use clear variable names, keep functions short, and add a comment only when the &lt;em&gt;why&lt;/em&gt; isn't obvious.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Hard to read&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Easy to read&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adultUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Learn to debug, not just to code
&lt;/h2&gt;

&lt;p&gt;Use your debugger or &lt;code&gt;console.log&lt;/code&gt; deliberately. Form a guess, test it, and narrow down the problem step by step. Debugging is a skill, and it improves with practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Build small projects regularly
&lt;/h2&gt;

&lt;p&gt;Tutorials teach you concepts, but projects teach you how things fit together. A to-do app, a weather widget, or a tiny CLI tool is enough. Finish something small instead of abandoning something big.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;You don't need to master all five at once. Pick one, practice it for a week, then add another. Small habits compound faster than you'd expect.&lt;/p&gt;

&lt;p&gt;What habit helped you the most as a developer? Share it in the comments, I'd love to hear it! 👇&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
    </item>
  </channel>
</rss>
