<?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: TROJAN </title>
    <description>The latest articles on DEV Community by TROJAN  (@trojanmocx).</description>
    <link>https://dev.to/trojanmocx</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%2F3388590%2Fc2d32d47-627a-49d0-92ab-8178c338b973.png</url>
      <title>DEV Community: TROJAN </title>
      <link>https://dev.to/trojanmocx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/trojanmocx"/>
    <language>en</language>
    <item>
      <title>Why Every Developer Should Build at Least One AI Project in 2026</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Wed, 25 Mar 2026 16:39:53 +0000</pubDate>
      <link>https://dev.to/trojanmocx/why-every-developer-should-build-at-least-one-ai-project-in-2026-ac1</link>
      <guid>https://dev.to/trojanmocx/why-every-developer-should-build-at-least-one-ai-project-in-2026-ac1</guid>
      <description>&lt;p&gt;AI is no longer “the future.”&lt;br&gt;
It is already part of everyday development.&lt;br&gt;
And yet, many developers are still watching from the sidelines.&lt;br&gt;
Reading about it.&lt;br&gt;
Liking posts about it.&lt;br&gt;
Maybe generating a few lines of code with it.&lt;br&gt;
Feeling productive… without actually building anything.&lt;br&gt;
We have all been there.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shift Happening Right Now
&lt;/h2&gt;

&lt;p&gt;We have moved from asking:&lt;/p&gt;

&lt;p&gt;“Should I learn AI?”&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;“How quickly can I apply it without breaking everything?”&lt;/p&gt;

&lt;p&gt;Companies are not looking for AI researchers in most roles.&lt;br&gt;
They are looking for developers who can &lt;strong&gt;use AI to solve real&lt;br&gt;
problems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a very different skill.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Building even one AI project teaches you things that tutorials never will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to handle unpredictable outputs&lt;/li&gt;
&lt;li&gt;How to design systems around uncertainty&lt;/li&gt;
&lt;li&gt;How to integrate APIs with real-world logic&lt;/li&gt;
&lt;li&gt;When AI is useful, and when it quietly creates chaos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You stop seeing AI as something magical.&lt;/p&gt;

&lt;p&gt;And start seeing it as a tool that occasionally needs supervision.&lt;/p&gt;




&lt;h2&gt;
  
  
  You Do Not Need Something Complex
&lt;/h2&gt;

&lt;p&gt;Your project does not need to be groundbreaking.&lt;/p&gt;

&lt;p&gt;It just needs to work.&lt;/p&gt;

&lt;p&gt;Some simple ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A chatbot that solves a specific use case&lt;/li&gt;
&lt;li&gt;A tool that summarizes or analyzes content&lt;/li&gt;
&lt;li&gt;A small assistant for daily tasks&lt;/li&gt;
&lt;li&gt;Adding an AI feature to an existing project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple and functional beats complex and unfinished every time.&lt;/p&gt;

&lt;p&gt;(Yes, even if the UI is a little ugly. We can fix that later. Probably.)&lt;/p&gt;




&lt;h2&gt;
  
  
  What You Actually Learn
&lt;/h2&gt;

&lt;p&gt;Once you build something, a few things become very clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI outputs are not always reliable&lt;/li&gt;
&lt;li&gt;Prompting is not “set it and forget it”&lt;/li&gt;
&lt;li&gt;Debugging AI feels like arguing with a very confident intern&lt;/li&gt;
&lt;li&gt;User experience matters more than model complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where real understanding begins.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Common Mistake
&lt;/h2&gt;

&lt;p&gt;Do not rely entirely on AI to build your project.&lt;br&gt;
Use it, but understand what it is doing.&lt;br&gt;
If you cannot explain your own system clearly, then you have not really built it.&lt;/p&gt;

&lt;p&gt;You have just supervised it.&lt;/p&gt;




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

&lt;p&gt;You do not need to become an AI expert.&lt;br&gt;
You just need to stop being an observer.&lt;br&gt;
Build one project.&lt;br&gt;
That is enough to change how you think, build, and learn.&lt;/p&gt;




&lt;p&gt;And if nothing else, you will finally have something better to show than&lt;br&gt;&lt;br&gt;
“experimented with AI tools” on your resume.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built a Desktop App That Starts My Entire Dev Environment With One Click (Using Tauri + Rust + React)</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Thu, 12 Mar 2026 19:33:08 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-built-a-desktop-app-that-starts-my-entire-dev-environment-with-one-click-using-tauri-rust--21c3</link>
      <guid>https://dev.to/trojanmocx/i-built-a-desktop-app-that-starts-my-entire-dev-environment-with-one-click-using-tauri-rust--21c3</guid>
      <description>&lt;p&gt;Every morning I would open 4 terminal tabs, &lt;code&gt;cd&lt;/code&gt; into different folders, and run some combination of &lt;code&gt;npm run dev&lt;/code&gt; and &lt;code&gt;cargo run&lt;/code&gt;. Then I'd forget which terminal crashed. Then I'd do it again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I built Chronicle to kill that habit.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Chronicle?
&lt;/h2&gt;

&lt;p&gt;Chronicle is a desktop app (built with Tauri) that does two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One-click workspace launcher&lt;/strong&gt; — press a button, fire up all your dev servers simultaneously, watch their output stream into a tabbed terminal dashboard in real-time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git history explorer&lt;/strong&gt; — visualize your commit graph, click commits to read diffs, and use an AI (Gemini) to summarize what changed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;App Shell&lt;/td&gt;
&lt;td&gt;Tauri v2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React 19 + Vite 7 + TypeScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Rust (async, via Tokio)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS v4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animations&lt;/td&gt;
&lt;td&gt;Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Google Gemini&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why Tauri?
&lt;/h2&gt;

&lt;p&gt;Tauri lets you write your UI in whatever web framework you want, then wraps it in a native OS window using Rust. The result is a &lt;code&gt;.exe&lt;/code&gt; that's tiny, fast, and has full access to the OS. No Electron 300MB bloat. No compromises.&lt;/p&gt;

&lt;p&gt;The Rust backend part is what made the launcher feature possible. Here's the core of how it works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#[tauri::command]&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;start_all_processes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;AppHandle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nn"&gt;tauri&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Arc&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;AppState&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;project_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Result&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Spawn each process asynchronously&lt;/span&gt;
  &lt;span class="nf"&gt;spawn_and_stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;"buildforge"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="s"&gt;"npm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nd"&gt;format!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{}&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt;BuildForge"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;project_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;spawn_and_stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;"airwebreathe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="s"&gt;"npm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nd"&gt;format!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{}&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt;AirWeBreathe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;project_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(())&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;spawn_and_stream&lt;/code&gt; function uses Tokio to spawn processes async, reads their &lt;code&gt;stdout&lt;/code&gt;/&lt;code&gt;stderr&lt;/code&gt; line by line, and emits each line to the React frontend using Tauri's event system.&lt;/p&gt;

&lt;p&gt;On the React side, listening for those events looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unlistenOutput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;LogPayload&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;process-output&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setLogs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[...(&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[]),&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Real-time streaming terminal output from Rust to React in so few lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The UI
&lt;/h2&gt;

&lt;p&gt;The whole thing is themed after GitHub dark mode (&lt;code&gt;#0d1117&lt;/code&gt;, subtle borders, green accents). The launcher screen has one big green button. The dashboard that opens shows tabbed terminal output for each running process, auto-scrolling, color-coded (green = success, red = error).&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Tauri is genuinely underrated.&lt;/strong&gt; The developer experience is excellent, the apps are fast, and the security model is much more sensible than Electron.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Tokio makes async process spawning a joy.&lt;/strong&gt; &lt;code&gt;tokio::process::Command&lt;/code&gt; + &lt;code&gt;BufReader + lines()&lt;/code&gt; is all you need to stream terminal output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Tauri's event system is a perfect bridge.&lt;/strong&gt; &lt;code&gt;app.emit("event-name", payload)&lt;/code&gt; from Rust, &lt;code&gt;listen("event-name", handler)&lt;/code&gt; from TypeScript. Clean and simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/TROJANmocX/Chronicle.git
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run tauri dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're building dev tooling or have ever thought "I should automate my terminal workflow" — Tauri + Rust is a genuinely great choice. Feel free to drop questions in the comments.&lt;/p&gt;

&lt;p&gt;Happy building! 🗡️&lt;/p&gt;

</description>
      <category>programming</category>
      <category>discuss</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Performed an Autopsy on My LeetCode Streak (It Didn’t Die Peacefully)</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Fri, 30 Jan 2026 15:26:32 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-performed-an-autopsy-on-my-leetcode-streak-it-didnt-die-peacefully-2ibg</link>
      <guid>https://dev.to/trojanmocx/i-performed-an-autopsy-on-my-leetcode-streak-it-didnt-die-peacefully-2ibg</guid>
      <description>&lt;p&gt;My LeetCode streak didn’t “break.”&lt;br&gt;
It &lt;strong&gt;died&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not heroically.&lt;br&gt;
Not after a hard problem.&lt;/p&gt;

&lt;p&gt;It died on a random weekday because I got tired and lied to myself.&lt;/p&gt;

&lt;p&gt;So I stopped tracking streaks like a motivational influencer&lt;br&gt;
and started treating them like crime scenes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Everyone Tracks Wins. Nobody Tracks Failure.
&lt;/h2&gt;

&lt;p&gt;We love dashboards that say &lt;em&gt;“X days strong”&lt;/em&gt;.&lt;br&gt;
We don’t talk about how those streaks actually end.&lt;/p&gt;

&lt;p&gt;When I analyzed my submissions, I noticed something uncomfortable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My streaks don’t die randomly — they die on the &lt;strong&gt;same days&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Most of them collapse between &lt;strong&gt;day 7–10&lt;/strong&gt; (fake discipline window)&lt;/li&gt;
&lt;li&gt;My “longest streak” is a flex
My &lt;strong&gt;average streak&lt;/strong&gt; is the truth — and it’s embarrassing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discipline wasn’t the problem.&lt;br&gt;
&lt;strong&gt;Predictable burnout&lt;/strong&gt; was.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I Built a Streak Autopsy Tool
&lt;/h2&gt;

&lt;p&gt;Instead of promising myself I’d “do better next time,”&lt;br&gt;
I built something that performs a &lt;strong&gt;post-mortem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You enter your LeetCode username.&lt;br&gt;
It tells you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how many streaks you’ve started&lt;/li&gt;
&lt;li&gt;how many you’ve killed&lt;/li&gt;
&lt;li&gt;how long they usually survive&lt;/li&gt;
&lt;li&gt;the exact &lt;strong&gt;day you’re most likely to quit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;and gives you a streak reality check instead of motivation porn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No quotes.&lt;br&gt;
No fake encouragement.&lt;br&gt;
Just data quietly judging you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;Tracking wins was lying to me.&lt;br&gt;
Losses don’t lie — they &lt;strong&gt;repeat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you know &lt;em&gt;how&lt;/em&gt; your streak dies,&lt;br&gt;
you can stop pretending it was an accident.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/TROJANmocX/GrindGuard-2.0" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/GrindGuard-2.0&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://grindguard.vercel.app/" rel="noopener noreferrer"&gt;https://grindguard.vercel.app/&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;If your streak ever “mysteriously” vanished,&lt;br&gt;
this will tell you why.&lt;br&gt;
And if you don’t like the result good. Neither did I.&lt;/p&gt;

&lt;p&gt;PLEASE TELL ME HOW CAN I IMPROVE IT AND WHAT PROBLEM ARE YOU ALL FACING.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>programming</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I tried tracking my LeetCode streak honestly. The API fought me. I won.</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sun, 25 Jan 2026 17:16:21 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-got-tired-of-fake-leetcode-trackers-so-i-built-one-that-actually-updates-bg3</link>
      <guid>https://dev.to/trojanmocx/i-got-tired-of-fake-leetcode-trackers-so-i-built-one-that-actually-updates-bg3</guid>
      <description>&lt;p&gt;Most LeetCode trackers fail at the one thing that matters most: &lt;strong&gt;trust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If I solve a problem, I expect the app to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mark it as solved&lt;/li&gt;
&lt;li&gt;remove it from recommendations&lt;/li&gt;
&lt;li&gt;update my progress immediately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No refresh. No manual ticking. No lies.&lt;/p&gt;

&lt;p&gt;That frustration is exactly why I built &lt;strong&gt;GrindGuard 2.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Live app: &lt;a href="https://grindguard.vercel.app/" rel="noopener noreferrer"&gt;https://grindguard.vercel.app/&lt;/a&gt;&lt;br&gt;
GitHub repo: &lt;a href="https://github.com/TROJANmocX/GrindGuard-2.0" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/GrindGuard-2.0&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is GrindGuard 2.0?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GrindGuard 2.0&lt;/strong&gt; is a LeetCode accountability and focus system that turns your accepted submissions into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic progress tracking&lt;/li&gt;
&lt;li&gt;Smart daily missions&lt;/li&gt;
&lt;li&gt;Topic-wise analytics&lt;/li&gt;
&lt;li&gt;Zero manual work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If LeetCode says you solved it, GrindGuard believes it. Period.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Philosophy
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;One source of truth. Everything else is derived.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No duplicated state.&lt;br&gt;
No stale UI.&lt;br&gt;
No “why didn’t this update?” moments.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Automatic Progress Tracking
&lt;/h3&gt;

&lt;p&gt;Solved problems are fetched directly from LeetCode accepted submissions and normalized into a single &lt;code&gt;solvedProblems&lt;/code&gt; state.&lt;/p&gt;

&lt;p&gt;If a problem is solved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is instantly marked as done&lt;/li&gt;
&lt;li&gt;it never appears again in focus or suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No manual input required.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. No Repeat Questions
&lt;/h3&gt;

&lt;p&gt;Daily Mission and recommendations strictly filter out solved problems using a normalized identifier (&lt;code&gt;slug&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Once a question is done, it’s gone for good.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Real-Time Progress Analytics
&lt;/h3&gt;

&lt;p&gt;Progress bars recompute &lt;strong&gt;every time&lt;/strong&gt; solved data changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topic-wise completion&lt;/li&gt;
&lt;li&gt;Smooth count-up animations&lt;/li&gt;
&lt;li&gt;Visual feedback that feels alive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If bars don’t move, users don’t trust the app. This fixes that.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Smart Focus System
&lt;/h3&gt;

&lt;p&gt;Instead of showing everything, GrindGuard answers one question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What should I solve next?”&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Detects weakest topics (&amp;lt;40% completion)&lt;/li&gt;
&lt;li&gt;Selects high-impact unsolved problems&lt;/li&gt;
&lt;li&gt;Uses seeded randomness so missions stay consistent for 24 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No noise. Just focus.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. One-Click Sync
&lt;/h3&gt;

&lt;p&gt;A single &lt;strong&gt;Sync&lt;/strong&gt; button:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fetches LeetCode data&lt;/li&gt;
&lt;li&gt;updates progress, focus, and analytics together&lt;/li&gt;
&lt;li&gt;shows freshness (“Synced 2 mins ago”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explicit feedback builds trust.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Zero Manual Work
&lt;/h3&gt;

&lt;p&gt;The happy path is fully automated.&lt;/p&gt;

&lt;p&gt;Manual overrides exist only as a fallback — never as the primary flow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;GrindGuard uses a simple but strict data flow:&lt;/p&gt;

&lt;p&gt;LeetCode API&lt;br&gt;
↓&lt;br&gt;
fetchSolvedProblems()&lt;br&gt;
↓&lt;br&gt;
Dashboard (single source of truth)&lt;br&gt;
↓&lt;br&gt;
Derived UI&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Progress&lt;/li&gt;
&lt;li&gt;Daily Mission&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All components are reactive and render-only. &lt;br&gt;
No component fetches data on its own.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React 18 + TypeScript&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;TailwindCSS&lt;/li&gt;
&lt;li&gt;Alfa LeetCode API (accepted submissions)&lt;/li&gt;
&lt;li&gt;Striver SDE Sheet (curated problems)&lt;/li&gt;
&lt;li&gt;LocalStorage fallback for resilience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Trust beats features&lt;/li&gt;
&lt;li&gt;Reactive derivation beats stored state&lt;/li&gt;
&lt;li&gt;If UI doesn’t update instantly, users assume it’s broken&lt;/li&gt;
&lt;li&gt;One clear recommendation beats ten options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GrindGuard is not a dashboard. It’s a coach.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Live: &lt;a href="https://grindguard.vercel.app/" rel="noopener noreferrer"&gt;https://grindguard.vercel.app/&lt;/a&gt;&lt;br&gt;
Code: &lt;a href="https://github.com/TROJANmocX/GrindGuard-2.0" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/GrindGuard-2.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re grinding LeetCode and want accountability without friction,this one’s for you.&lt;/p&gt;

&lt;p&gt;Happy grinding.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>leetcode</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>My Diary 2.0 — A Digital Journal</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Fri, 16 Jan 2026 08:18:38 +0000</pubDate>
      <link>https://dev.to/trojanmocx/my-diary-20-a-digital-journal-3kk5</link>
      <guid>https://dev.to/trojanmocx/my-diary-20-a-digital-journal-3kk5</guid>
      <description>&lt;p&gt;Some thoughts deserve a journal.&lt;br&gt;
Some thoughts deserve therapy.&lt;br&gt;
This app handles both.&lt;/p&gt;

&lt;p&gt;Welcome to &lt;strong&gt;My Diary 2.0&lt;/strong&gt; — a personal web diary that feels like writing in an old notebook, but without the risk of your sibling finding it.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;a href="https://my-diary-snowy.vercel.app/" rel="noopener noreferrer"&gt;https://my-diary-snowy.vercel.app/&lt;/a&gt;&lt;br&gt;
GitHub Repo: &lt;a href="https://github.com/TROJANmocX/My-Diary" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/My-Diary&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is My Diary 2.0?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My Diary 2.0&lt;/strong&gt; is a React + TypeScript diary app with a vintage aesthetic, mood tracking, and a writing experience that actually makes you want to journal.&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typewriter vibes&lt;/li&gt;
&lt;li&gt;Candlelight drama&lt;/li&gt;
&lt;li&gt;Nostalgic paper textures&lt;/li&gt;
&lt;li&gt;Mild emotional chaos&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Features That Deserve Respect
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vintage Writing Experience
&lt;/h3&gt;

&lt;p&gt;Feels like:&lt;br&gt;
“Dear Diary, today was… a lot.”&lt;/p&gt;

&lt;p&gt;Includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typewriter-style fonts&lt;/li&gt;
&lt;li&gt;Paper-like background&lt;/li&gt;
&lt;li&gt;Auto-expanding text area&lt;/li&gt;
&lt;li&gt;Zero judgment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mood Tracking
&lt;/h3&gt;

&lt;p&gt;Because “fine” is not a real emotion.&lt;/p&gt;

&lt;p&gt;Choose from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Happy&lt;/li&gt;
&lt;li&gt;Sad&lt;/li&gt;
&lt;li&gt;Moody&lt;/li&gt;
&lt;li&gt;Chaotic&lt;/li&gt;
&lt;li&gt;Existential&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Aesthetic Themes
&lt;/h3&gt;

&lt;p&gt;Switch between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vintage&lt;/strong&gt; – classy, nostalgic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Candle&lt;/strong&gt; – dramatic, low-light, main-character energy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Secure Storage (Supabase)
&lt;/h3&gt;

&lt;p&gt;Your secrets stay secret.&lt;br&gt;
Unless you forget your password. Then… character development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Signatures
&lt;/h3&gt;

&lt;p&gt;End entries like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“— Trojan, still figuring things out.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Tech Stack (The Sensible Kind)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React + TypeScript&lt;/li&gt;
&lt;li&gt;Supabase (auth + storage)&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Custom Vintage UI&lt;/li&gt;
&lt;li&gt;Vercel Deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No unnecessary frameworks. Just vibes and functionality.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;Most diary apps feel like filling out an emotional tax form.&lt;/p&gt;

&lt;p&gt;I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feels personal&lt;/li&gt;
&lt;li&gt;Looks nostalgic&lt;/li&gt;
&lt;li&gt;Makes writing fun&lt;/li&gt;
&lt;li&gt;Doesn’t judge my 2 AM thoughts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Before Your Thoughts Escape
&lt;/h2&gt;

&lt;p&gt;Live Website:&lt;br&gt;
&lt;a href="https://my-diary-snowy.vercel.app/" rel="noopener noreferrer"&gt;https://my-diary-snowy.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source Code:&lt;br&gt;
&lt;a href="https://github.com/TROJANmocX/My-Diary" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/My-Diary&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fork it. Customize it. Make it your own emotional support app.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Planned upgrades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entry analytics&lt;/li&gt;
&lt;li&gt;Mood history charts&lt;/li&gt;
&lt;li&gt;Cloud backups&lt;/li&gt;
&lt;li&gt;More themes&lt;/li&gt;
&lt;li&gt;Possibly AI reflections (no promises)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;If your brain never shuts up&lt;br&gt;
and your thoughts need somewhere safe to scream —&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Diary 2.0&lt;/strong&gt; is ready.&lt;/p&gt;

&lt;p&gt;Now go write something unhinged.&lt;/p&gt;

&lt;p&gt;— Trojan&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Built a Gesture Controlled Fluid Simulation (And Accidentally Fought GitHub)</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sat, 10 Jan 2026 16:12:31 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-built-a-gesture-controlled-fluid-simulation-and-accidentally-fought-github-3098</link>
      <guid>https://dev.to/trojanmocx/i-built-a-gesture-controlled-fluid-simulation-and-accidentally-fought-github-3098</guid>
      <description>&lt;p&gt;So I had a simple idea:&lt;br&gt;
“Let’s control a fluid simulation with hand gestures.”&lt;/p&gt;

&lt;p&gt;Now I have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10,000 particles&lt;/li&gt;
&lt;li&gt;A racing mode&lt;/li&gt;
&lt;li&gt;Audio reactivity&lt;/li&gt;
&lt;li&gt;A physics engine&lt;/li&gt;
&lt;li&gt;And emotional damage from GitHub’s 100MB file limit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Worth it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is HydraFlow?
&lt;/h2&gt;

&lt;p&gt;HydraFlow is a &lt;strong&gt;real-time, gesture-controlled fluid simulation&lt;/strong&gt; where your hands literally control physics.&lt;/p&gt;

&lt;p&gt;Open palm? &lt;br&gt;
Particles fly away.&lt;br&gt;
Pinch?&lt;br&gt;
Black hole.&lt;br&gt;
Fist?&lt;br&gt;
Time stops.&lt;br&gt;
Two hands?&lt;br&gt;
Magnetic chaos.&lt;/p&gt;

&lt;p&gt;It’s like Doctor Strange, but with Python and worse life choices.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cool Stuff
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;10,000 particles&lt;/strong&gt; moving at 60 FPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MediaPipe hand tracking&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple visual modes&lt;/strong&gt; (Matrix, Heatmap, Disco, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio-reactive effects&lt;/strong&gt; (yes, it vibes to music)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Racing mode&lt;/strong&gt; where you steer with your hands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glow, trails, chaos mode&lt;/strong&gt; because subtlety is overrated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your webcam becomes a controller.&lt;br&gt;
Your hands become an API.&lt;/p&gt;




&lt;h2&gt;
  
  
  The GitHub Villain Arc
&lt;/h2&gt;

&lt;p&gt;Everything was going great until I tried to push my repo.&lt;/p&gt;

&lt;p&gt;GitHub saw my &lt;code&gt;.exe&lt;/code&gt; file and said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That’s cute. Now delete it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Turns out GitHub has a &lt;strong&gt;100MB file limit&lt;/strong&gt;, and my build files were built DIFFERENT.&lt;/p&gt;

&lt;p&gt;So I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nuked big files from git history&lt;/li&gt;
&lt;li&gt;Added a proper &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Force-pushed like a responsible menace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the repo is clean, lean, and judgment-free.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;GitHub is not your USB drive&lt;/li&gt;
&lt;li&gt;Build files are not source code&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.gitignore&lt;/code&gt; is not optional&lt;/li&gt;
&lt;li&gt;Physics + hand tracking = dopamine&lt;/li&gt;
&lt;li&gt;Debugging at 2AM builds character&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mouse control is boring&lt;/li&gt;
&lt;li&gt;Gestures feel futuristic&lt;/li&gt;
&lt;li&gt;Physics is fun&lt;/li&gt;
&lt;li&gt;And I like watching particles suffer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, it looks cool on my portfolio.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/TROJANmocX/HydraFlow" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/HydraFlow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wave your hands.&lt;br&gt;
Break physics.&lt;br&gt;
Feel powerful.&lt;/p&gt;




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

&lt;p&gt;HydraFlow started as a fun experiment.&lt;br&gt;
It became a full-blown chaos simulator.&lt;br&gt;
And GitHub tried to humble me.&lt;/p&gt;

&lt;p&gt;But we move.&lt;/p&gt;

&lt;p&gt;If you’re building something weird, ambitious, and slightly unhinged&lt;br&gt;
you’re doing it right.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Built a Desktop App That Commits to GitHub So I Don’t Have To Lie About Consistency</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Mon, 05 Jan 2026 05:56:07 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-built-a-desktop-app-that-commits-to-github-so-i-dont-have-to-lie-about-consistency-3jd5</link>
      <guid>https://dev.to/trojanmocx/i-built-a-desktop-app-that-commits-to-github-so-i-dont-have-to-lie-about-consistency-3jd5</guid>
      <description>&lt;p&gt;Let’s be honest for a second.&lt;br&gt;
GitHub contribution graphs are not a productivity metric.&lt;br&gt;&lt;br&gt;
They are a vibe metric.&lt;/p&gt;

&lt;p&gt;I got tired of pretending otherwise, so I built a desktop app that automates commits for me. Not to fake work, but to remove the mental overhead of “oh no I forgot to commit today.”&lt;/p&gt;

&lt;p&gt;This app runs locally, schedules commits, and pushes them directly to your repository. No browser tabs. No cron jobs duct taped together. Just open the app, configure it once, and let it handle the boring part.&lt;/p&gt;

&lt;p&gt;Why build this instead of just committing manually?&lt;br&gt;
Because consistency is not discipline. It is systems.&lt;br&gt;
I noticed I was writing code regularly, but committing inconsistently. That gap was pure friction. So I removed it.&lt;/p&gt;

&lt;p&gt;This project taught me more than expected&lt;br&gt;
how to package a desktop app&lt;br&gt;
how to handle Git authentication cleanly&lt;br&gt;
how to build something people will immediately argue about&lt;/p&gt;

&lt;p&gt;And honestly, that last part is the fun one.&lt;br&gt;
You can judge the idea, but the app works. It ships. It solves a real annoyance.&lt;/p&gt;

&lt;p&gt;Here is the repo&lt;br&gt;
&lt;a href="https://github.com/TROJANmocX/-Auto-Commit-Desktop-App.git" rel="noopener noreferrer"&gt;https://github.com/TROJANmocX/-Auto-Commit-Desktop-App.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious question for you&lt;br&gt;
Do tools like this reduce discipline or reveal how fake our productivity metrics already are&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Most Developers Aren’t Bad. They’re Just Invisible.</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Mon, 05 Jan 2026 05:46:36 +0000</pubDate>
      <link>https://dev.to/trojanmocx/most-developers-arent-bad-theyre-just-invisible-31ab</link>
      <guid>https://dev.to/trojanmocx/most-developers-arent-bad-theyre-just-invisible-31ab</guid>
      <description>&lt;p&gt;Hot take skill is not the bottleneck anymore.&lt;br&gt;
There are incredibly capable developers with clean code strong fundamentals and real curiosity and nobody knows they exist. Not because they are unlucky but because they do not show their work.&lt;br&gt;
I was stuck in that loop for a long time. Building quietly improving privately waiting for the moment where everything felt ready.&lt;/p&gt;

&lt;p&gt;That moment never comes.&lt;/p&gt;

&lt;p&gt;Things changed when I started shipping publicly. Not perfect projects and not groundbreaking ideas. Just things that worked existed and could be seen.&lt;br&gt;
Feedback replaced guessing. Real problems replaced imaginary ones. Learning sped up because reality does not care about plans.&lt;br&gt;
Here is the part we do not say often enough.&lt;br&gt;
The internet rewards visibility before brilliance.&lt;/p&gt;

&lt;p&gt;That does not mean lowering standards. It means unfinished and shipped beats perfect and hidden every time.&lt;/p&gt;

&lt;p&gt;If you want opportunities do not wait to be impressive.&lt;br&gt;
Be visible. Improve in public. Let the work speak even if it stutters at first.&lt;/p&gt;

&lt;p&gt;What is something you have built that deserves to exist outside your local machine&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Five Projects, Carefully Unhinged and Fully Deployed</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sat, 03 Jan 2026 09:55:43 +0000</pubDate>
      <link>https://dev.to/trojanmocx/five-projects-carefully-unhinged-and-fully-deployed-2430</link>
      <guid>https://dev.to/trojanmocx/five-projects-carefully-unhinged-and-fully-deployed-2430</guid>
      <description>&lt;p&gt;I recently reviewed my Vercel dashboard and came to an unexpected conclusion: I appear to be speedrunning side projects as if it were a professional obligation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There’s &lt;strong&gt;&lt;a href="https://digital-guilt-trap.vercel.app" rel="noopener noreferrer"&gt;Digital Guilt Trap&lt;/a&gt;&lt;/strong&gt;, a minimalist experiment in user interaction that applies light emotional pressure via buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://the-checker.vercel.app" rel="noopener noreferrer"&gt;The Checker&lt;/a&gt;&lt;/strong&gt;, which attempts to analyze personality traits and then politely passes judgment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://quantum-weather-app.vercel.app" rel="noopener noreferrer"&gt;Quantum Weather&lt;/a&gt;&lt;/strong&gt;, where forecasts are technically accurate but emotionally questionable.&lt;/li&gt;
&lt;li&gt;A deliberately &lt;strong&gt;&lt;a href="https://useless-website2.vercel.app" rel="noopener noreferrer"&gt;Useless Website&lt;/a&gt;&lt;/strong&gt; that does almost nothing, yet still managed to require mobile bug fixes.
&lt;/li&gt;
&lt;li&gt;And my &lt;strong&gt;&lt;a href="https://arishali.vercel.app" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/strong&gt;, now tasked with explaining how all of the above are connected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these projects were built to chase virality. They were built to ship, deploy, and expose the realities of production environments rather than hypothetical perfection. Each one reinforced a familiar lesson: user experience is deceptive, mobile layouts are unforgiving, and committing code is more productive than overthinking it.&lt;/p&gt;

&lt;p&gt;If you are waiting for the perfect idea, consider not doing that. Build the imperfect one instead. Deploy it, improve it, and move forward. Momentum remains undefeated.&lt;/p&gt;

&lt;p&gt;Projects shipped. Lessons learned. Dashboard remains quietly judgmental.&lt;br&gt;
If you had one hour to improve any of these projects, where would you spend it?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>hireme</category>
    </item>
    <item>
      <title>I Know My Code Is Bad Because I Start Defending It</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sun, 28 Dec 2025 09:47:45 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-know-my-code-is-bad-because-i-start-defending-it-2gga</link>
      <guid>https://dev.to/trojanmocx/i-know-my-code-is-bad-because-i-start-defending-it-2gga</guid>
      <description>&lt;p&gt;There’s a moment when I know my code is bad. Not when tests fail. Not when something breaks. It’s when someone asks a simple question and I start explaining instead of pointing.&lt;/p&gt;

&lt;p&gt;That’s the smell.&lt;/p&gt;

&lt;p&gt;Good code doesn’t need a defense. Bad code comes with context, history, and a quiet “don’t touch that part.” At that point, you’re not documenting. You’re apologizing.&lt;/p&gt;

&lt;p&gt;I’ve noticed when code is clear, I’m calm. When it’s messy, I get defensive. I say things like “it works” or “we’ll clean it later.” Those aren’t explanations. They’re excuses.&lt;/p&gt;

&lt;p&gt;Now I use one test. If I came back to this code in a few months, would I trust myself touching it without fear? If not, it’s not done. It’s just shipped.&lt;/p&gt;

&lt;p&gt;What’s the best excuse you’ve ever made for bad code?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>fun</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Follow Web Dev Trends So Recruiters Don’t Have To</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sun, 28 Dec 2025 09:42:24 +0000</pubDate>
      <link>https://dev.to/trojanmocx/i-follow-web-dev-trends-so-recruiters-dont-have-to-576e</link>
      <guid>https://dev.to/trojanmocx/i-follow-web-dev-trends-so-recruiters-dont-have-to-576e</guid>
      <description>&lt;p&gt;Every few months, the web dev world collectively decides we’re all doing things wrong again.&lt;br&gt;
Right now it’s:&lt;br&gt;
AI everywhere&lt;br&gt;
Rust everywhere&lt;br&gt;
WebAssembly everywhere&lt;br&gt;
Low-code “replacing developers” everywhere  &lt;/p&gt;

&lt;p&gt;Recruiters see these words on resumes all day.&lt;br&gt;
So instead of listing them, I tried something radical.&lt;br&gt;
I asked: &lt;em&gt;What did these trends actually teach me as an engineer?&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Didn’t Turn Me Into a 10x Dev
&lt;/h2&gt;

&lt;h3&gt;
  
  
  It Turned Me Into a Better Reviewer
&lt;/h3&gt;

&lt;p&gt;AI can write code faster than I can.&lt;br&gt;
That’s fine.&lt;br&gt;
What it can’t do is explain &lt;em&gt;why&lt;/em&gt; the code is shaped the way it is.&lt;/p&gt;

&lt;p&gt;Using AI taught me three things fast:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If I can’t review it, I shouldn’t ship it
&lt;/li&gt;
&lt;li&gt;“It works” is not a quality bar
&lt;/li&gt;
&lt;li&gt;Bad systems + AI = faster disasters
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI didn’t replace my job.&lt;br&gt;&lt;br&gt;
It made thinking non-optional.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rust and WebAssembly Taught Me Humility
&lt;/h2&gt;

&lt;p&gt;Rust promised safety.&lt;br&gt;&lt;br&gt;
The compiler delivered emotional damage first.&lt;br&gt;
WebAssembly promised performance.&lt;br&gt;&lt;br&gt;
Tooling reminded me reality exists.&lt;/p&gt;

&lt;p&gt;What I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance is useless if users don’t feel it
&lt;/li&gt;
&lt;li&gt;Safety is great once you understand the cost
&lt;/li&gt;
&lt;li&gt;Shiny tech doesn’t save unclear design
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trends are fun.&lt;br&gt;&lt;br&gt;
Shipping is sobering.&lt;/p&gt;




&lt;h2&gt;
  
  
  Low-Code Didn’t Kill My Skills
&lt;/h2&gt;

&lt;h3&gt;
  
  
  It Killed My Excuses
&lt;/h3&gt;

&lt;p&gt;Low-code removed the boring parts.&lt;br&gt;
Which meant I couldn’t hide behind boilerplate anymore.&lt;/p&gt;

&lt;p&gt;What was left?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture decisions
&lt;/li&gt;
&lt;li&gt;Data flow
&lt;/li&gt;
&lt;li&gt;Edge cases
&lt;/li&gt;
&lt;li&gt;Things breaking at 2 AM
Low-code didn’t reduce my value.
It raised the bar.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Actually Optimize For Now
&lt;/h2&gt;

&lt;p&gt;Instead of chasing tools, I optimize for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code someone else can understand
&lt;/li&gt;
&lt;li&gt;Systems that survive change
&lt;/li&gt;
&lt;li&gt;Decisions that age well
&lt;/li&gt;
&lt;li&gt;Fewer “we’ll fix it later” moments
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still learn new tech.&lt;br&gt;
I just don’t confuse novelty with progress.&lt;/p&gt;




&lt;h2&gt;
  
  
  For Recruiters (HEYYYYYYY)
&lt;/h2&gt;

&lt;p&gt;Anyone can list stacks.&lt;/p&gt;

&lt;p&gt;What teams really need are engineers who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn fast without breaking things
&lt;/li&gt;
&lt;li&gt;Ask annoying but important questions
&lt;/li&gt;
&lt;li&gt;Think in systems, not snippets
&lt;/li&gt;
&lt;li&gt;Can explain their code without sweating
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the kind of engineer I’m trying to be.&lt;/p&gt;

&lt;p&gt;If that sounds useful, we’ll probably get along.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>devops</category>
      <category>whoishiring</category>
    </item>
    <item>
      <title>My Code Worked. The System Didn’t</title>
      <dc:creator>TROJAN </dc:creator>
      <pubDate>Sun, 28 Dec 2025 09:38:23 +0000</pubDate>
      <link>https://dev.to/trojanmocx/my-code-worked-the-system-didnt-4hnl</link>
      <guid>https://dev.to/trojanmocx/my-code-worked-the-system-didnt-4hnl</guid>
      <description>&lt;p&gt;My code ran.The tests passed. The demo looked clean.&lt;br&gt;
And yet the project felt wrong.&lt;br&gt;
Not broken.&lt;br&gt;&lt;br&gt;
Not buggy.&lt;br&gt;&lt;br&gt;
Just heavy. Like every new change was dragging a growing pile of invisible debt behind it .At first, I ignored the feeling. That’s what we do. If it compiles, it ships. If it ships, it’s fine. Right?&lt;br&gt;
Wrong. Quietly wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Lie We Tell Ourselves&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We tell ourselves that working code is success.&lt;br&gt;
But “working” is a low bar. A suspiciously low bar.&lt;/p&gt;

&lt;p&gt;Code can work and still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be hard to reason about
&lt;/li&gt;
&lt;li&gt;Fight you every time you touch it
&lt;/li&gt;
&lt;li&gt;Punish you for adding one small feature
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s exactly what happened.Every new feature took longer than the last.  Every fix created two new problems.Refactors felt scary instead of satisfying.The system wasn’t broken.It was fragile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Moment It Clicked&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The realization didn’t come during a big failure.It came during a tiny change.Something that should’ve taken an hour.Instead, I spent the entire evening asking myself one question.“If I change this… what else explodes?”. That’s when it clicked.If you’re afraid to touch your own code, the problem isn’t the code.It’s the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features Aren’t the Villain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s the uncomfortable truth.&lt;br&gt;
I wasn’t really building features.&lt;br&gt;&lt;br&gt;
I was stacking decisions I didn’t fully understand.&lt;br&gt;
I optimized for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed
&lt;/li&gt;
&lt;li&gt;Shipping
&lt;/li&gt;
&lt;li&gt;Momentum
&lt;/li&gt;
&lt;li&gt;“I’ll clean this later”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every choice made sense in the moment.But systems remember.They remember every shortcut, every assumption, every temporary hack that quietly became permanent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Bug&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The bug wasn’t technical. It was mental.I treated architecture like something you do after the product exists.&lt;br&gt;&lt;br&gt;
Like a luxury.Like premature optimization. Turns out architecture isn’t about perfection.&lt;/p&gt;

&lt;p&gt;It’s about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making the next change cheaper
&lt;/li&gt;
&lt;li&gt;Making failure predictable
&lt;/li&gt;
&lt;li&gt;Making understanding possible
And I didn’t do that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I’m Learning Now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Good systems don’t feel clever. They feel calm.&lt;/p&gt;

&lt;p&gt;You don’t ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Will this break everything?”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Where does this belong?”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When that question is hard to answer, you’re already in trouble.&lt;/p&gt;

&lt;p&gt;I’m still unlearning bad instincts.I’m still fixing things I shipped too fast.But I don’t measure success by “it works” anymore.I measure it by this.Does this system fight me, or does it work with me?&lt;/p&gt;

&lt;p&gt;Your turn.&lt;br&gt;
At what point does “just ship it” turn into self-sabotage?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
