<?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: Rathnam.S</title>
    <description>The latest articles on DEV Community by Rathnam.S (@rathnams089).</description>
    <link>https://dev.to/rathnams089</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%2F4145541%2F9658f5b2-65f8-499a-84cb-9800c70365a5.png</url>
      <title>DEV Community: Rathnam.S</title>
      <link>https://dev.to/rathnams089</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rathnams089"/>
    <language>en</language>
    <item>
      <title>TOBER FEST</title>
      <dc:creator>Rathnam.S</dc:creator>
      <pubDate>Mon, 05 Oct 2026 04:56:53 +0000</pubDate>
      <link>https://dev.to/rathnams089/tober-fest-3dg2</link>
      <guid>https://dev.to/rathnams089/tober-fest-3dg2</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;SecondMind — a local-first second brain that runs on your own laptop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea came from building something useful for a friend who often has to repeatedly remember and search through personal notes, study plans, preferences, and project context.&lt;/p&gt;

&lt;p&gt;Instead of relying on a cloud AI service that sends everything to a remote server, SecondMind stores memories locally and uses a local open-weight model to understand conversations and retrieve relevant information when needed.&lt;/p&gt;

&lt;p&gt;You can talk to it normally, and it can remember useful information, recall relevant memories later, and forget information when asked.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'm studying DSA and I'm currently focusing on dynamic programming."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What am I studying right now?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SecondMind can retrieve the relevant memory and use it to answer.&lt;/p&gt;

&lt;p&gt;The goal isn't to build another generic chatbot. It's to build a small &lt;strong&gt;personal memory layer that belongs to the person using it.&lt;/strong&gt;&lt;/p&gt;

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

&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%2Fnkfzeli052clk913hbao.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%2Fnkfzeli052clk913hbao.png" alt=" " width="800" height="489"&gt;&lt;/a&gt;&lt;br&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%2Ffglrd87gsrrxo4qjoq35.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%2Ffglrd87gsrrxo4qjoq35.png" alt=" " width="800" height="489"&gt;&lt;/a&gt;&lt;br&gt;
The project runs locally with Django and Ollama.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/RathnamS089/secondmind" rel="noopener noreferrer"&gt;https://github.com/RathnamS089/secondmind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built around a simple architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
Django
   ↓
SecondMind Agent
   ├── Memory Tools
   │    ├── Remember
   │    ├── Recall
   │    └── Forget
   │
   ├── Retrieval
   │    └── Cosine Similarity
   │
   └── Ollama
        ├── Qwen 2.5 1.5B
        └── nomic-embed-text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;SecondMind is built with &lt;strong&gt;Django, SQLite, NumPy and Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the language model, I used the open-weight &lt;strong&gt;Qwen 2.5 1.5B&lt;/strong&gt; model through Ollama.&lt;/p&gt;

&lt;p&gt;For memory retrieval, I use &lt;strong&gt;nomic-embed-text&lt;/strong&gt; to convert both the user's query and stored memories into embedding vectors.&lt;/p&gt;

&lt;p&gt;When a user asks something that might require memory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User query
    ↓
Embedding
    ↓
Compare with stored memory embeddings
    ↓
Cosine similarity
    ↓
Rank memories
    ↓
Relevant memories
    ↓
Qwen
    ↓
Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The memory system also has three tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remember&lt;/strong&gt; — stores a memory and its embedding locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recall&lt;/strong&gt; — searches stored memories using semantic similarity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forget&lt;/strong&gt; — removes a stored memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent can decide when to use these tools, while the UI also provides direct access to them through a Tools menu.&lt;/p&gt;

&lt;p&gt;Everything is orchestrated through Django, while &lt;code&gt;OllamaClient&lt;/code&gt; is kept as the single layer responsible for communicating with Ollama.&lt;/p&gt;

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

&lt;p&gt;This project wouldn't have the same meaning if the AI depended on a closed API.&lt;/p&gt;

&lt;p&gt;The most important part of SecondMind is that &lt;strong&gt;the memories belong to the user and the model can run locally.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The entire system can run on a laptop without sending personal memories to a third-party AI provider.&lt;/p&gt;

&lt;p&gt;Using open-weight models also means I can experiment.&lt;/p&gt;

&lt;p&gt;I can change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Qwen 2.5 1.5B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to another compatible open-weight model without redesigning the entire application.&lt;/p&gt;

&lt;p&gt;I can also inspect how the memory system works, change the retrieval strategy, change the agent's behavior, fine-tune models in the future, and experiment with different embedding models.&lt;/p&gt;

&lt;p&gt;For a personal memory assistant, that control matters more to me than simply calling the most powerful closed model available.&lt;/p&gt;

&lt;p&gt;The project is also intentionally small enough to understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Django
   +
SQLite
   +
Ollama
   +
Open-weight models
   +
Local embeddings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no cloud database and no mandatory paid AI API sitting between the user and their memories.&lt;/p&gt;

&lt;p&gt;That is where open innovation worked better for this project: &lt;strong&gt;I wasn't just consuming an AI service — I could actually build the AI system around the way I wanted it to work.&lt;/strong&gt;&lt;/p&gt;

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