<?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: NITISH Sharma</title>
    <description>The latest articles on DEV Community by NITISH Sharma (@nitish_sharma).</description>
    <link>https://dev.to/nitish_sharma</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%2F3836037%2F1d58dfbd-51a6-45dc-95f6-b737ba25a729.jpg</url>
      <title>DEV Community: NITISH Sharma</title>
      <link>https://dev.to/nitish_sharma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nitish_sharma"/>
    <language>en</language>
    <item>
      <title>Finally wrapped up my Terminal Chat (TUI) project.</title>
      <dc:creator>NITISH Sharma</dc:creator>
      <pubDate>Sun, 22 Mar 2026 18:18:20 +0000</pubDate>
      <link>https://dev.to/nitish_sharma/finally-wrapped-up-my-terminal-chat-tui-project-118d</link>
      <guid>https://dev.to/nitish_sharma/finally-wrapped-up-my-terminal-chat-tui-project-118d</guid>
      <description>&lt;p&gt;Built a real-time multi-user chat system in C++ using TCP sockets and ncurses. Multiple rooms, mentions, online users — all inside the terminal. No buttons, no mouse, just pure keyboard and questionable life choices.&lt;br&gt;
I’ll be honest — I did use ChatGPT along the way. But not as a shortcut. More like a debugging partner that doesn’t get tired of my mistakes. The actual building, breaking, fixing, and understanding… that part was on me.&lt;br&gt;
Also, I’ve realized something:&lt;br&gt;
I genuinely enjoy building TUIs.&lt;br&gt;
There’s something weirdly satisfying about making complex systems work inside a terminal. It’s not flashy, it’s not “modern UI”, and most people won’t care… but for those who live in the terminal — this is home.&lt;br&gt;
This project is basically for people who:&lt;br&gt;
open terminal first, browser later&lt;br&gt;
think keyboard &amp;gt; mouse&lt;br&gt;
and don’t mind staring at text all day&lt;br&gt;
&lt;a href="https://github.com/monkonthehill/Major_projects/tree/main/termchat" rel="noopener noreferrer"&gt;Click for github repo&lt;/a&gt;&lt;br&gt;
Next step: make it more scalable and less “it works on my machine”.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>cpp</category>
      <category>networking</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Built a Tool That Turns TODO Comments Into Actual Documentation</title>
      <dc:creator>NITISH Sharma</dc:creator>
      <pubDate>Fri, 20 Mar 2026 19:50:27 +0000</pubDate>
      <link>https://dev.to/nitish_sharma/i-built-a-tool-that-turns-todo-comments-into-actual-documentation-34d2</link>
      <guid>https://dev.to/nitish_sharma/i-built-a-tool-that-turns-todo-comments-into-actual-documentation-34d2</guid>
      <description>&lt;p&gt;Most developers already “document” their code — just not in a structured way.&lt;/p&gt;

&lt;p&gt;We write things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TODO: optimize this&lt;/span&gt;
&lt;span class="c1"&gt;// BUG: fix crash here&lt;/span&gt;
&lt;span class="c1"&gt;// NOTE: handle edge case&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Over time, these comments pile up across files, and eventually… they become invisible.&lt;/p&gt;

&lt;p&gt;I ran into this problem while working on multiple small projects. I knew I had pending work scattered across the codebase, but there was no simple way to track it without introducing another tool or workflow.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;DocTrack&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Idea
&lt;/h2&gt;

&lt;p&gt;Instead of forcing developers to adopt a new system, I wanted to &lt;strong&gt;reuse what already exists inside the code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DocTrack scans a project and extracts structured information from inline comments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What needs to be done (TODO, BUG, etc.)&lt;/li&gt;
&lt;li&gt;Where it exists (file + line)&lt;/li&gt;
&lt;li&gt;What context it belongs to (code block)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Turn implicit developer notes into explicit, usable documentation.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ⚙️ How It Works
&lt;/h2&gt;

&lt;p&gt;At a high level, the tool:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Recursively scans a directory using C++17 filesystem APIs&lt;/li&gt;
&lt;li&gt;Reads files line-by-line&lt;/li&gt;
&lt;li&gt;Uses regex to detect tagged comments:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;TODO&lt;/li&gt;
&lt;li&gt;BUG&lt;/li&gt;
&lt;li&gt;NOTE&lt;/li&gt;
&lt;li&gt;FIXME&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CODENOTE&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extracts:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;file name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;line number&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;message&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Captures surrounding code context using a &lt;strong&gt;brace-tracking approach&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generates output inside a &lt;code&gt;docs/&lt;/code&gt; folder:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;doc.md&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;report.html&lt;/code&gt; (via Pandoc)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 The Interesting Part: Context Extraction
&lt;/h2&gt;

&lt;p&gt;Extracting a single line is easy. Extracting meaningful context is not.&lt;/p&gt;

&lt;p&gt;I initially tried using regex to capture entire functions, but that quickly breaks due to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nested &lt;code&gt;{}&lt;/code&gt; blocks&lt;/li&gt;
&lt;li&gt;different coding styles&lt;/li&gt;
&lt;li&gt;multi-line structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, I implemented a &lt;strong&gt;brace counting strategy&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;When a relevant tag (like BUG or FIXME) is detected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start capturing lines immediately&lt;/li&gt;
&lt;li&gt;Increment counter on &lt;code&gt;{&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Decrement on &lt;code&gt;}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Stop when braces balance&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This provides a reasonable approximation of the surrounding code block without needing a full AST parser.&lt;/p&gt;

&lt;p&gt;It’s not perfect, but it works reliably for most real-world cases.&lt;/p&gt;




&lt;h2&gt;
  
  
  📄 Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# FILE: calculator.cpp

### Line 12 [BUG] → fix division logic

int divide(int a, int b) {
    // BUG: division by zero
    return a / b;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚖️ Trade-offs
&lt;/h2&gt;

&lt;p&gt;This approach intentionally avoids:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AST parsing (too complex for a first version)&lt;/li&gt;
&lt;li&gt;language-specific parsing logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, it favors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speed&lt;/li&gt;
&lt;li&gt;simplicity&lt;/li&gt;
&lt;li&gt;language-agnostic behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The downside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;context detection is heuristic-based&lt;/li&gt;
&lt;li&gt;edge cases can break block extraction&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Why This Approach
&lt;/h2&gt;

&lt;p&gt;There are already tools for task tracking, but most require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manual input&lt;/li&gt;
&lt;li&gt;separate interfaces&lt;/li&gt;
&lt;li&gt;extra discipline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DocTrack works differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no new workflow&lt;/li&gt;
&lt;li&gt;no extra effort&lt;/li&gt;
&lt;li&gt;just leverage what developers already write&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 Project
&lt;/h2&gt;

&lt;p&gt;If you're curious or want to try it:&lt;/p&gt;

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




&lt;h2&gt;
  
  
  🤔 Open Questions
&lt;/h2&gt;

&lt;p&gt;I’m still exploring a few directions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should this move toward AST-based parsing for accuracy?&lt;/li&gt;
&lt;li&gt;Would a VS Code extension be more useful than CLI?&lt;/li&gt;
&lt;li&gt;How to handle large codebases efficiently?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to hear thoughts from others building developer tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Final Thought
&lt;/h2&gt;

&lt;p&gt;Developers already leave a trail of intent inside their code.&lt;/p&gt;

&lt;p&gt;The real opportunity is not adding more tools —&lt;br&gt;
but extracting value from what’s already there.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
