<?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: BlurBisht</title>
    <description>The latest articles on DEV Community by BlurBisht (@blurbisht).</description>
    <link>https://dev.to/blurbisht</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%2F4096666%2Fe01feccd-dbac-48ac-b53c-450413d5910e.jpg</url>
      <title>DEV Community: BlurBisht</title>
      <link>https://dev.to/blurbisht</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blurbisht"/>
    <language>en</language>
    <item>
      <title>I Built a Speedrun Math Game in Python (Terminal Edition)</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Sun, 30 Aug 2026 17:18:48 +0000</pubDate>
      <link>https://dev.to/blurbisht/i-built-a-speedrun-math-game-in-python-terminal-edition-4al3</link>
      <guid>https://dev.to/blurbisht/i-built-a-speedrun-math-game-in-python-terminal-edition-4al3</guid>
      <description>&lt;p&gt;I built a terminal-based Speedrun Math game in Python using the curses library. The goal is simple: answer as many quick math problems as you can before time runs out. Every correct answer shrinks the time you get for the next one, so the pressure ramps the deeper you go.&lt;/p&gt;

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

&lt;p&gt;A terminal game usually means typing a number and pressing Enter for every single answer. That kills the "speedrun" feel. The curses library gives you raw key input, so the player can type digits live, hit backspace to fix a mistake, and lock the answer with Enter only when ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the game works
&lt;/h2&gt;

&lt;p&gt;The core loop is just three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate a problem.&lt;/li&gt;
&lt;li&gt;Read the typed answer without spamming Enter.&lt;/li&gt;
&lt;li&gt;Score it, then shrink the timer and raise the difficulty.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The model-ready approach
&lt;/h3&gt;

&lt;p&gt;The game logic lives in a MathGame class, separate from the UI. That makes the rules testable on their own. I verified 50 generated problems by re-evaluating them with the operator module, and every answer came out correct.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difficulty ramps
&lt;/h3&gt;

&lt;p&gt;Levels 1-2 stick to addition of two small numbers. Levels 3-4 introduce subtraction and multiplication. Level 5 and up bring in harder multiplication, subtraction, and even modulo. The time allowed per problem also shrinks by 0.25 seconds with each correct answer, down to a 1.5 second floor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scoring
&lt;/h3&gt;

&lt;p&gt;A correct answer is worth 10 points plus 2 per streak point. Streaks reset on a wrong answer. That rewards speed and consistency over just answering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading input without Enter spam
&lt;/h2&gt;

&lt;p&gt;The helper builds the answer digit by digit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On a digit key, append it to the buffer.&lt;/li&gt;
&lt;li&gt;On backspace, drop the last digit.&lt;/li&gt;
&lt;li&gt;On Enter, finalize the answer.&lt;/li&gt;
&lt;li&gt;On q or escape, quit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cursor stays hidden and the read is non-blocking, so the screen keeps updating.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Raw input handling changes how a game feels. The same math game with Enter per answer feels slow; with curses it feels like an actual speedrun.&lt;/li&gt;
&lt;li&gt;Time pressure is the whole game. Shrinking the timer adds tension without adding any extra code.&lt;/li&gt;
&lt;li&gt;Keeping logic separate from the UI makes testing trivial. I could unit test the problem generator without ever touching the terminal.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;Clone and play:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/BlurBisht/game-logic.git" rel="noopener noreferrer"&gt;https://github.com/BlurBisht/game-logic.git&lt;/a&gt;&lt;br&gt;
cd game-logic&lt;br&gt;
python speedrun_math.py&lt;/p&gt;

&lt;p&gt;It is MIT licensed, free to use and modify. I am building this as Day 4 of a one-project-a-day challenge, alongside a Minecraft toolchain and other small projects. Follow along and build something every single day.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/BlurBisht" rel="noopener noreferrer"&gt;https://github.com/BlurBisht&lt;/a&gt;&lt;br&gt;
Portfolio: ms.blurbisht.fun&lt;/p&gt;

</description>
      <category>python</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Day 3 of #100DaysOfCode: Released SpawnArchitect, a Minecraft Plugin with 100 Animated Spawn Templates</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Sat, 29 Aug 2026 18:31:58 +0000</pubDate>
      <link>https://dev.to/blurbisht/day-3-of-100daysofcode-released-spawnarchitect-a-minecraft-plugin-with-100-animated-spawn-1op4</link>
      <guid>https://dev.to/blurbisht/day-3-of-100daysofcode-released-spawnarchitect-a-minecraft-plugin-with-100-animated-spawn-1op4</guid>
      <description>&lt;p&gt;Day 3 of #100DaysOfCode and I shipped &lt;strong&gt;SpawnArchitect&lt;/strong&gt;, a Minecraft Paper/PaperMC plugin that packs &lt;strong&gt;100 animated spawn templates&lt;/strong&gt; into a single JAR.&lt;/p&gt;

&lt;p&gt;The thing that makes it different: every template animates in, building &lt;strong&gt;layer by layer&lt;/strong&gt; instead of pasting instantly. It can place up to 1000 blocks per tick, so builds look alive instead of just appearing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it includes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;100 spawn templates&lt;/strong&gt; broken into 4 tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20 Low (50-70 blocks)&lt;/li&gt;
&lt;li&gt;30 Original (80-120 blocks)&lt;/li&gt;
&lt;li&gt;25 Massive (165-200 blocks)&lt;/li&gt;
&lt;li&gt;25 Gigantic (280-300 blocks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;33 developer tools&lt;/strong&gt; via the &lt;code&gt;/sadev&lt;/code&gt; command (VersionGuard, EventInspector, DevStick and more).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100 fun effects&lt;/strong&gt; via the &lt;code&gt;/fun&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Animated layer-by-layer builds (not instant paste)&lt;/li&gt;
&lt;li&gt;OP-only permission (&lt;code&gt;spawnarchitect.admin&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;FAWE async building support&lt;/li&gt;
&lt;li&gt;PlaceholderAPI hook&lt;/li&gt;
&lt;li&gt;Low RAM mode (shrinks Gigantic 300 down to 150 blocks)&lt;/li&gt;
&lt;li&gt;Safe spawn teleport&lt;/li&gt;
&lt;li&gt;Hollow walls, auto-backup, preview&lt;/li&gt;
&lt;li&gt;YAML and .schem schematic support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Built for &lt;strong&gt;Paper 1.20.4&lt;/strong&gt;, &lt;strong&gt;Java 17&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;JAR is only &lt;strong&gt;392KB&lt;/strong&gt;, MIT licensed&lt;/li&gt;
&lt;li&gt;Drop it in &lt;code&gt;plugins/&lt;/code&gt;, restart the server, run &lt;code&gt;/spawns&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/BlurBisht/SpawnArchitect" rel="noopener noreferrer"&gt;github.com/BlurBisht/SpawnArchitect&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo video: &lt;a href="https://youtube.com/shorts/xBb1QKXCugs" rel="noopener noreferrer"&gt;youtube.com/shorts/xBb1QKXCugs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One project shipped every day. Day 4 is next.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfCode #Minecraft #Java #MinecraftPlugin #ShowDev
&lt;/h1&gt;

</description>
      <category>java</category>
      <category>showdev</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 2 Short is live: I built CLI Tools in Python 🛠️</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Fri, 28 Aug 2026 10:37:45 +0000</pubDate>
      <link>https://dev.to/blurbisht/day-2-short-is-live-i-built-cli-tools-in-python-4663</link>
      <guid>https://dev.to/blurbisht/day-2-short-is-live-i-built-cli-tools-in-python-4663</guid>
      <description>&lt;p&gt;The Day 2 #100DaysOfCode Short is live on YouTube.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch it here:&lt;/strong&gt; &lt;a href="https://youtube.com/shorts/OLr9ayEjitM" rel="noopener noreferrer"&gt;https://youtube.com/shorts/OLr9ayEjitM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built a menu-driven Python CLI app in one day with three tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Password Generator&lt;/strong&gt; — strong random passwords&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To-Do List&lt;/strong&gt; — add/manage tasks in terminal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temperature Converter&lt;/strong&gt; — Celsius ↔ Fahrenheit ↔ Kelvin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Code on GitHub: &lt;a href="https://github.com/blurbisht/cli-tools" rel="noopener noreferrer"&gt;https://github.com/blurbisht/cli-tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Day 3 tomorrow. What should I build next? Comment on the video.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfCode #Python #CLI #BuildInPublic
&lt;/h1&gt;

</description>
      <category>shorts</category>
    </item>
    <item>
      <title>Day 2 of #100DaysOfCode: Built CLI Tools</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Fri, 28 Aug 2026 07:45:50 +0000</pubDate>
      <link>https://dev.to/blurbisht/day-2-of-100daysofcode-built-cli-tools-5a1g</link>
      <guid>https://dev.to/blurbisht/day-2-of-100daysofcode-built-cli-tools-5a1g</guid>
      <description>&lt;p&gt;Day 2 done. Built a CLI Tools app: password generator, todo list, and temperature converter all in one menu-driven Python program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I built&lt;/strong&gt;&lt;br&gt;
Picked from a menu, use the tool, then back or quit. Covers loops, functions, and CLI menus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Password generator - random password of your chosen length&lt;/li&gt;
&lt;li&gt;To-Do list - add, list, delete tasks for your session&lt;/li&gt;
&lt;li&gt;Temperature converter - Celsius, Fahrenheit, Kelvin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway&lt;/strong&gt;&lt;br&gt;
Kept it small and shipped it. Also got Day 2 pushed to GitHub. One day at a time.&lt;/p&gt;

&lt;p&gt;Connect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter: &lt;a href="https://x.com/blurbisht" rel="noopener noreferrer"&gt;https://x.com/blurbisht&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/BlurBisht" rel="noopener noreferrer"&gt;https://github.com/BlurBisht&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>My first video hit 210 views</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Thu, 27 Aug 2026 17:29:41 +0000</pubDate>
      <link>https://dev.to/blurbisht/my-first-video-hit-210-views-9d1</link>
      <guid>https://dev.to/blurbisht/my-first-video-hit-210-views-9d1</guid>
      <description>&lt;p&gt;My video hit 210 views&lt;/p&gt;

&lt;p&gt;Small but real milestone. My first project video crossed 210 views and picked up my first subscriber.&lt;/p&gt;

&lt;p&gt;I'm 16 and I built this: a terminal Pong game in Python plus a server I run locally. Posting the work publicly instead of hiding it.&lt;/p&gt;

&lt;p&gt;Not stopping here. Day by day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>seo</category>
      <category>news</category>
    </item>
    <item>
      <title>Day 1 of #100DaysOfCode: Built My First Project</title>
      <dc:creator>BlurBisht</dc:creator>
      <pubDate>Thu, 27 Aug 2026 06:10:03 +0000</pubDate>
      <link>https://dev.to/blurbisht/day-1-of-100daysofcode-built-my-first-project-4hem</link>
      <guid>https://dev.to/blurbisht/day-1-of-100daysofcode-built-my-first-project-4hem</guid>
      <description>&lt;p&gt;Published: 27/08/2026&lt;br&gt;
&lt;strong&gt;The Setup&lt;/strong&gt;&lt;br&gt;
I'm 16 years old and starting my coding journey in 2026. After using Twitter, GitHub, and setting up my domain ms.blurbisht.fun, I decided to commit to #100DaysOfCode.&lt;br&gt;
&lt;strong&gt;The Project:&lt;/strong&gt; Pong Game CLI&lt;br&gt;
A terminal-based two-player Pong game built with Python's curses library. Demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object-oriented programming&lt;/li&gt;
&lt;li&gt;Game loops and input handling&lt;/li&gt;
&lt;li&gt;ASCII graphics animation&lt;/li&gt;
&lt;li&gt;Score tracking
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Key code snippet
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nf"&gt;ord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;left_paddle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;move_up&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why I Built It: To move beyond theory to actual shipping. My goals: learn Python → build AI agents → create multi-agent systems.&lt;br&gt;
What's Next: Day 2: &lt;strong&gt;Not Planned!!&lt;/strong&gt;&lt;br&gt;
Connect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter: &lt;a href="https://x.com/blurbisht" rel="noopener noreferrer"&gt;@blurbisht&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/BlurBisht" rel="noopener noreferrer"&gt;github.com/BlurBisht&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://ms.blurbisht.fun" rel="noopener noreferrer"&gt;ms.blurbisht.fun&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
