<?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: Osinachi Nwagboso Samuel</title>
    <description>The latest articles on DEV Community by Osinachi Nwagboso Samuel (@sianachi).</description>
    <link>https://dev.to/sianachi</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%2F1460939%2Fc7e1886c-c069-45eb-a630-25458fe121b6.jpg</url>
      <title>DEV Community: Osinachi Nwagboso Samuel</title>
      <link>https://dev.to/sianachi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sianachi"/>
    <language>en</language>
    <item>
      <title>Another AI blunder (I over engineered my side project for millions of users)</title>
      <dc:creator>Osinachi Nwagboso Samuel</dc:creator>
      <pubDate>Wed, 04 Nov 2026 23:00:34 +0000</pubDate>
      <link>https://dev.to/sianachi/another-ai-blunder-i-over-engineered-my-side-project-for-millions-of-users-4ob1</link>
      <guid>https://dev.to/sianachi/another-ai-blunder-i-over-engineered-my-side-project-for-millions-of-users-4ob1</guid>
      <description>&lt;p&gt;I love programming languages and I love coding so sometimes I get carried away. I'm also interested in productivity tool so I started working on one that allows me manage my notes, projects, calenders, etc. This is necessary context, trust me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The blunder
&lt;/h2&gt;

&lt;p&gt;My tool has this concept of AI pets that use a couple of tools to do work in the application like: create a list view for my shopping, create a calender view to help me mange birthdays - stuff like that. It also exports data to MD, PDF and DOCX. &lt;/p&gt;

&lt;p&gt;I was inspired to build this tool and wanted to prepare for millions of users. Empowered by Claude and a divine cause, I slapped in a Queue, Go workers (PS: I am a .Net dev who does typescript and python sometimes), I ended up with this design for a small self host tool: &lt;/p&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%2Fyiu2w5061o49xt00uvr5.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%2Fyiu2w5061o49xt00uvr5.png" alt="The blunder in its full glory" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;

&lt;p&gt;The goal of the project was to make a premium product that I could manage. Because I didn't have mastery of Go, I ended up vibe coding that bit of functionality and didn't really understand it in depth even though the syntax was easy to read. I ultimately had to burn through more tokens to convert the workers into languages I understand and ended up with this: &lt;/p&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%2F87g49nl5j5aa1fbjl5km.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%2F87g49nl5j5aa1fbjl5km.png" alt="After I came to my senses" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result ended up being something much more maintainable and I ended up using  less idle memory usage by switching back to .NET! I've learned not to get carried away. At least I made the mistake before getting any users. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Before, idle (MiB)&lt;/th&gt;
&lt;th&gt;After, idle (MiB)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;api&lt;/td&gt;
&lt;td&gt;217&lt;/td&gt;
&lt;td&gt;222&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;collab service&lt;/td&gt;
&lt;td&gt;174&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rabbitmq&lt;/td&gt;
&lt;td&gt;126&lt;/td&gt;
&lt;td&gt;removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;go workers (import, export, plugin, calendar, notify)&lt;/td&gt;
&lt;td&gt;7 + 6 + 8 + 10 + 9&lt;/td&gt;
&lt;td&gt;removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;web app&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;postgres&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;versitygw (S3 storage)&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zitadel + zitadel-db 9auth)&lt;/td&gt;
&lt;td&gt;109 + 33&lt;/td&gt;
&lt;td&gt;103 + 56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;830&lt;/td&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The next thing to tackle is the UX when writing. This blog was written in said project and the UX needs some work. Thank you for reading this small rant.&lt;/p&gt;

&lt;p&gt;The project: &lt;a href="https://nixsites.com/" rel="noopener noreferrer"&gt;https://nixsites.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The website is written in nixsites. It supports publishing your workspace as a website so I also use it to manage my technical journal and even the main website for nixsites.&lt;/p&gt;

&lt;p&gt;Have a look at my personal website as well: &lt;a href="https://osinachi.nwagboso.com" rel="noopener noreferrer"&gt;https://osinachi.nwagboso.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sideprojects</category>
      <category>dotnet</category>
      <category>selfhosting</category>
    </item>
  </channel>
</rss>
