<?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: Srijan Singh</title>
    <description>The latest articles on DEV Community by Srijan Singh (@srijansingh).</description>
    <link>https://dev.to/srijansingh</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F718705%2F15a042e2-d037-4287-80f3-f4d57d054ec0.jpeg</url>
      <title>DEV Community: Srijan Singh</title>
      <link>https://dev.to/srijansingh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srijansingh"/>
    <language>en</language>
    <item>
      <title>What building a DIY e-paper reader and my dad's invoicing app taught me about real engineering</title>
      <dc:creator>Srijan Singh</dc:creator>
      <pubDate>Tue, 03 Mar 2026 18:15:08 +0000</pubDate>
      <link>https://dev.to/srijansingh/two-small-systems-that-taught-me-real-world-engineering-better-than-any-job-ticket-4b89</link>
      <guid>https://dev.to/srijansingh/two-small-systems-that-taught-me-real-world-engineering-better-than-any-job-ticket-4b89</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Over a two-week vacation, I worked on two projects: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DIY e-paper reader&lt;/li&gt;
&lt;li&gt;Full-stack Excel-based invoicing app for my dad.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I started thinking I was smart enough to tackle the problems quickly. But every step humbled me from UX design to product thinking, hardware quirks, deadlines and real-world constraints.  &lt;/p&gt;

&lt;p&gt;These projects weren’t about "building something perfect." They were about the lessons in iteration, discovery and the countless blind spots I never knew existed.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;center&gt; DIY e-Paper Reader&lt;center&gt;
&lt;/center&gt;
&lt;/center&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Don’t buy a jet engine for a bicycle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Restraint:&lt;/strong&gt; I stuck to the philosophy of avoiding over-specification. There is no point in sourcing a "jet engine" (expensive, high-power components) for a "bicycle" (a simple e-reader). I chose a hardware stack that matches the actual utility of the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Iterative Buying vs. Over-Committing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Incremental Build:&lt;/strong&gt; Instead of buying a massive kit of parts all at once and risking e-waste, I opted for an iterative approach. I built the project in stages, ensuring each component was viable before moving to the next.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prototype-First Thinking
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mix and Match:&lt;/strong&gt; Rather than rushing to a final, permanent assembly, I stayed in the experimentation phase. Keeping the build as a prototype allowed me to swap parts and test different configurations without the commitment of a final enclosure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Hardware/Software Handshake
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Driver Hunting:&lt;/strong&gt; One of the primary friction points was the "handshake" getting the software to communicate with the hardware. It involved a tedious process of finding the exact display drivers that play nice with specific e-paper panels.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fragile Connectors &amp;amp; High-Stakes Resets
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real Stakes:&lt;/strong&gt; Dealing with paper-thin ribbon cables and delicate pins is nerve-wracking. Every hard pin reset requires extreme caution; one wrong move or a short circuit and you’ve "blown up" the hardware.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The ESP32 Memory Ceiling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cache Limits:&lt;/strong&gt; I quickly hit the physical limitations of the ESP32’s 8MB cache. When rendering high-resolution text or complex layouts on e-paper, you hit that memory ceiling much faster than expected.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Creative Workaround: JIT Streaming
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wireless Data Slicing:&lt;/strong&gt; To bypass memory constraints, I implemented a Just-In-Time (JIT) approach. Instead of storing entire books on the chip, I stream text data wirelessly from a smartphone. The phone handles the heavy lifting and the reader acts as a lean, wireless display.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Future Ideas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Control:&lt;/strong&gt; I plan to implement smartphone-controlled font scaling and transform the device into a dedicated "distraction-free" wireless display.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware V2:&lt;/strong&gt; I’m looking at embedding a chip with dedicated external storage and adding physical "Next/Previous" buttons for a more tactile, standalone reading experience.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;center&gt;Full-Stack Excel Invoicing App&lt;/center&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Evolution: From WhatsApp to Custom App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp Bots = Bad UX:&lt;/strong&gt; I initially took inspiration from airline-style WhatsApp bots. It turned out to be a nightmare; the options were too rigid and the user flow was clunky for complex invoicing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Forms = Data Mess:&lt;/strong&gt; I tried a "quick and dirty" approach using Google Forms, but it lacked data normalization. It quickly became a graveyard of redundant entries and fragmented data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Solution: A Custom SaaS-Lite App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Multi-User Problem:&lt;/strong&gt; Since my father and I both needed access from different devices, a local-only solution was out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spreadsheet Backend:&lt;/strong&gt; I settled on a SaaS-based architecture that uses Google Sheets as a cloud-hosted database—combining the flexibility of Excel with the accessibility of a custom web app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture: Sales vs. Collection
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Defined Logic Flows:&lt;/strong&gt; I split the application into two distinct user experiences:

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Sales:&lt;/strong&gt; For generating new invoices.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Collection:&lt;/strong&gt; For tracking payments received.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Glue:&lt;/strong&gt; A third logic flow &lt;strong&gt;bill generation&lt;/strong&gt; connects the two. The app generates a sales bill and collections are recorded against that specific bill number to ensure the books balance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Integrity: SSOT &amp;amp; Normalization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single Source of Truth (SSOT):&lt;/strong&gt; To manage consumer data, I utilized a dedicated master sheet to store product and consumer information, ensuring each entry is associated with a single, unique identifier (UID). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relational Logic:&lt;/strong&gt; I implemented auto-generated UIDs to act as &lt;strong&gt;foreign keys&lt;/strong&gt;, linking the Invoice sheet to the Payment Ledger. This ensures data integrity by referencing UIDs rather than duplicating data, effectively eliminating redundancy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mobile-First Reality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integration Pain:&lt;/strong&gt; Connecting a custom frontend to a spreadsheet backend without breaking the data structure was a constant battle of trial and error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritizing Mobile:&lt;/strong&gt; While it works on a desktop, I prioritized a responsive, mobile-first UI. In a real-world business environment, the primary use case is generating a bill or checking a collection status on the go.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Both projects were messy, exhausting, and imperfect and that’s exactly what made them valuable.  &lt;/p&gt;

&lt;p&gt;They humbled me, exposed blind spots I didn’t know existed, and taught lessons in problem-solving, iteration and user-focused thinking. Even after "completion", improvement is limitless.  &lt;/p&gt;

&lt;p&gt;This journal isn’t about showing off what I built it’s about the growth, the mistakes and the mindset of learning through doing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td colspan="2"&gt;
      &lt;center&gt;&lt;strong&gt;e-Paper Reader Display&lt;/strong&gt;&lt;/center&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.amazonaws.com%2Fuploads%2Farticles%2F54j2874wrjtm3l2mzerx.png" width="800" height="467"&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
  
  &lt;tr&gt;
    &lt;td&gt;
      &lt;center&gt;&lt;strong&gt;Sales UI&lt;/strong&gt;&lt;/center&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.amazonaws.com%2Fuploads%2Farticles%2F3i6h891lmp7q5uypad2i.png" width="686" height="1280"&gt;
    &lt;/td&gt;
    &lt;td&gt;
      &lt;center&gt;&lt;strong&gt;Collection UI&lt;/strong&gt;&lt;/center&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.amazonaws.com%2Fuploads%2Farticles%2F38aq7d02cqw6a64ib1fk.png" width="680" height="1280"&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>sideprojects</category>
      <category>architecture</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <title>I Created a Microsoft Edge Extension to Hide Chat on Whatsapp</title>
      <dc:creator>Srijan Singh</dc:creator>
      <pubDate>Mon, 22 May 2023 05:55:03 +0000</pubDate>
      <link>https://dev.to/srijansingh/i-created-a-microsoft-edge-extension-to-hide-chat-on-whatsapp-431j</link>
      <guid>https://dev.to/srijansingh/i-created-a-microsoft-edge-extension-to-hide-chat-on-whatsapp-431j</guid>
      <description>&lt;p&gt;I recently created a Microsoft Edge extension called Hide Chat. This is a privacy-enhancing extension for Web Whatsapp that hides the recent chat section on web.whatsapp.com and shows it on hover. Please note that this extension is not affiliated with, endorsed by, or associated with Whatsapp in any way.&lt;/p&gt;

&lt;p&gt;I was using a similar extension to Hide Chat for Whatsapp, but I later learned that it was tracking my data. I was concerned about my privacy, so I decided to create my own extension that would not track my data.&lt;/p&gt;

&lt;p&gt;The Hide Chat extension is available for free on the &lt;a href="https://microsoftedge.microsoft.com/addons/detail/hidechat/onnmdefpjmbiiciejfdjnhhejbdgkbaa" rel="noopener noreferrer"&gt;Microsoft Edge Add-ons store&lt;/a&gt;. To install the extension, users can simply search for "Hide Chat" in the store and click on the "Add to Edge" button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Users
&lt;/h2&gt;

&lt;p&gt;As of May 14, 2023, Hide Chat has 499 active weekly users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Weekly Users by Country
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Ireland&lt;/th&gt;
&lt;th&gt;Korea&lt;/th&gt;
&lt;th&gt;United States&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2023-04-23&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;239&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023-04-30&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;308&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023-05-07&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;289&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023-05-14&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;365&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hide Chat has been downloaded by users in many countries. The extension is most popular in Ireland, Korea, and the United States.&lt;/p&gt;

&lt;p&gt;I am grateful for the support of all of my users. I am excited to continue to develop Hide Chat and make it even more useful.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>browser</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My first contribution to open source!</title>
      <dc:creator>Srijan Singh</dc:creator>
      <pubDate>Mon, 04 Oct 2021 06:45:50 +0000</pubDate>
      <link>https://dev.to/srijansingh/my-first-contribution-to-open-source-4e28</link>
      <guid>https://dev.to/srijansingh/my-first-contribution-to-open-source-4e28</guid>
      <description>&lt;p&gt;Hello! I'm a student developer and I'm pursuing computer science engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contributed my project
&lt;/h3&gt;

&lt;p&gt;I've learned mostly from open source communities like freecodecamp and Khan Academy. I also wanted to be part of open source and to do something from my side! I came to know about Hacktoberfest this year and took this opportunity to contribute my project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background
&lt;/h3&gt;

&lt;p&gt;I'm brand new to open source and this would be my first contribution. I've earned 5 stars in C++ and 4 stars in Python and Java from Hackerrank. I've also developed some small projects on native app in Flutter and my most recent project was on Draft Automation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Progress
&lt;/h3&gt;

&lt;p&gt;I've created a basic API which can detect and predict faces. In technologies I've used Python, facerecognition library, OpenCV, FastAPI and Uvicorn. &lt;/p&gt;

&lt;h3&gt;
  
  
  Contributions
&lt;/h3&gt;

&lt;p&gt;I've contributed this project apart from it I've also contributed in various data structures and algorithms libraries. But unfortunately most of them has been excluded from Hacktoberfest 2021. &lt;/p&gt;

&lt;h3&gt;
  
  
  Reflections
&lt;/h3&gt;

&lt;p&gt;I've came to know that #hacktoberfest provides opportunity for everyone from beginner to expert and it give you a chance to connect people like you. Currently I've 6 contributions and I would love to participate next year too!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
