<?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: Julius</title>
    <description>The latest articles on DEV Community by Julius (@julius_3831ac1d72bae74b8d).</description>
    <link>https://dev.to/julius_3831ac1d72bae74b8d</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%2F4245986%2Facc43d63-8d70-48f9-908d-8392b9a02fc3.jpg</url>
      <title>DEV Community: Julius</title>
      <link>https://dev.to/julius_3831ac1d72bae74b8d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/julius_3831ac1d72bae74b8d"/>
    <language>en</language>
    <item>
      <title>Turning Coding Practice into Real-Time 1v1 PvP Duels</title>
      <dc:creator>Julius</dc:creator>
      <pubDate>Sun, 15 Nov 2026 13:35:32 +0000</pubDate>
      <link>https://dev.to/julius_3831ac1d72bae74b8d/turning-coding-practice-into-real-time-1v1-pvp-duels-15ob</link>
      <guid>https://dev.to/julius_3831ac1d72bae74b8d/turning-coding-practice-into-real-time-1v1-pvp-duels-15ob</guid>
      <description>&lt;p&gt;Check out our official Devpost submission here: &lt;a href="https://devpost.com/software/codewatch-wm83fl" rel="noopener noreferrer"&gt;https://devpost.com/software/codewatch-wm83fl&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Inspiration
&lt;/h1&gt;

&lt;p&gt;The fastest way to improve as a programmer is through high-stakes competition—whether that is technical interviews, demanding engineering roles, or competitive programming contests. However, all of these share one major flaw: waiting.&lt;br&gt;
Weekly contests only happen once a week, major competitions happen monthly or annually, and beginners breaking into the field rarely get daily interview practice. Inspired by the fast-paced matchmaking of Overwatch, we wanted to eliminate the wait time and let developers sharpen their skills on demand.&lt;/p&gt;

&lt;h1&gt;
  
  
  Our Philosophy: Blue vs. Red
&lt;/h1&gt;

&lt;p&gt;Great code isn't written in isolation; it's proven through competition. Programming is about thinking faster, adapting smarter, and staying calm under pressure. We built CodeWatch around a core visual and competitive rivalry:&lt;/p&gt;

&lt;p&gt;• The Blue Character (You): Represents intelligence, precision, creativity, and clean code. Blue embodies the developer who anticipates edge cases and outsmarts the competition.&lt;/p&gt;

&lt;p&gt;• The Red Demon (Your Opponent): Represents chaos, unexpected challenges, and the constant threat of being outperformed. Red is always lurking, waiting to exploit a bug or pull ahead.&lt;/p&gt;

&lt;p&gt;Victory comes down to pure skill. Don't just write code—compete with it, outsmart your opponent, and win the duel.&lt;/p&gt;

&lt;h1&gt;
  
  
  What CodeWatch Does
&lt;/h1&gt;

&lt;p&gt;CodeWatch brings instant, on-the-spot matchmaking to coding:&lt;/p&gt;

&lt;p&gt;• 1v1 Coding Duels: Players queue up and immediately face off against another developer in a real-time coding battle.&lt;/p&gt;

&lt;p&gt;• The Cyber-Range: For developers interested in cybersecurity, the Cyber-Range lets players write defensive code designed to withstand attacks. If your defenses hold, you earn rewards. If another player breaks through your code, they steal your resources.&lt;/p&gt;

&lt;p&gt;Instead of waiting days or weeks for the next scheduled contest, developers can jump into live matches whenever they want to practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  More details
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1v1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this mode, players can combat one another to submit working and efficient code. Behind the scenes, JudgeO helps deals with the judging on submission, while a custom system is placed that rates speed - scope - and how effective of your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2v2 - 3v3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These upcoming modes are 1v1 but with extra teammates. Once you built your team, you can pick the respective option based on your team size. Matches are longer and consist of similar to harder questions. Users cannot enter matches if they do not meet the requirements; though if players are truly that cracked and want the challenge, it may be reversed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4v4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;4v4 is different compared to the previous mentioned. 4v4 is an upcoming mode where 4 players find a full stack challenge to compete for then submit when ready. Each team has a week to complete each challenge. Challenges have objectives, for instance build a gamified engine - full stack medicine tracker - etc., which the team with a more balanced and effective set up has an advantage to victory. Speed is not a factor for scoring; therefore, a team who submitted once in the first 3 days or hour doesn't have an advantage compared to a team who submits an hour before the challenge deadline. In 4v4, we care more about reason - hardships - and team work rather than how quick it's published. In summary, 4v4 is a sprint hackathon with 2 teams of 4 players.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;prompt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a world of AI, the number of tokens you consume can either hinder or progress through the workforce. With Gemini, users compete to use the least about of tokens to fix a prompted issue. Users who fixes the underlying issues while using the minimal amount of tokens are favored, and more than likely to win the match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cyber range&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As AI makes it easier for malicious code to be injected, as-well making deployed code more vulnerable, the security field is seeing massive growth. Cybersecurity holds the same amount of importance and impact as any other field. In the Cyber-range, players can create their own defensive barrier which attackers (other players) try to destroy. If the defender's tactic is proved worthy, they gain points for each attack. However, if exploited successfully by an attacker, they lose points while the attacker takes the rest. With Cyber-range, we want players to improve their defensive skills; additionally, platform organizers or those interested to build applications can see what works, and what doesn't; helping both sides build stronger skills and further understanding in cyber-protection.&lt;/p&gt;

&lt;h1&gt;
  
  
  How We Built It
&lt;/h1&gt;

&lt;p&gt;We combined modern web frameworks with real-time code execution tools to handle matchmaking, sessions, and live judging:&lt;/p&gt;

&lt;p&gt;• Frontend: Built with React and TypeScript for a responsive, game-like user interface.&lt;/p&gt;

&lt;p&gt;• Backend &amp;amp; Database: Powered by Python (FastAPI) and Node.js. FastAPI handles our core routes, rate limits, and compiling logic while communicating with Node to read submission data. We used SQLModel alongside SQLAlchemy to manage concurrent match sessions, user sessions, and judge sessions, paired with JWT for authentication and database state handling.&lt;/p&gt;

&lt;p&gt;• Code Execution: Integrated Judge0 and external APIs to serve problem sets and deliver reliable, real-time execution feeds to both players during a match.&lt;/p&gt;

&lt;p&gt;• Infrastructure &amp;amp; AI Tooling: Deployed on DigitalOcean using Docker. We also leveraged Claude AI and Claude Code throughout the hackathon to rapidly prototype frontend iterations, debug server configurations, and accelerate feature development.&lt;/p&gt;

&lt;h1&gt;
  
  
  Challenges We Ran Into
&lt;/h1&gt;

&lt;p&gt;• WSL2 &amp;amp; Judge0 Compatibility: Running Judge0 locally on a Windows machine using WSL2 caused system-level restrictions that blocked execution logic. Moving our testing environment onto a dedicated DigitalOcean server resolved the bottleneck and allowed us to properly test live PvP matches.&lt;/p&gt;

&lt;p&gt;• Recursive Matchmaking Bugs: Our JavaScript player-finder queue initially suffered from a bug where the matchmaking function recursively called itself twice, hitting execution limits and abruptly dropping players from the queue. Refactoring the queue state fixed the loop and stabilized matchmaking.&lt;/p&gt;

&lt;p&gt;• Start up failures: With each deployment, there's risk of failure. For instance, deploying our new Agent Prompt feature, a use-minimal-tokens competition, we had to migrate our server to fit its needs. Additionally, the prompt feature didn't work for some commits, which we thankfully fixed by connecting both the local and server's database to the Agent.&lt;/p&gt;

&lt;p&gt;• Scope: To avoid overengineering our project, the teams decided to implement our ideas but note them as "coming soon" (or "incomplete"). For instance, the game modes that are 2v2 or higher are behind this wall. However, this choice is to showcase the plans we have for this application after the event.&lt;/p&gt;

&lt;h1&gt;
  
  
  Accomplishments We're Proud Of
&lt;/h1&gt;

&lt;p&gt;Getting Version 1 live and watching two players successfully match, write code, and get judged in real time on our DigitalOcean server was a huge milestone. Our team also divided responsibilities cleanly across frontend, backend, and infrastructure, making code integration and debugging much smoother than expected.&lt;/p&gt;

&lt;h1&gt;
  
  
  What We Learned
&lt;/h1&gt;

&lt;p&gt;This was our first time building a gamified developer platform. Along the way, we gained hands-on experience with real-time app deployment, Docker containerization, collaborative Git workflows, and managing concurrent session states under pressure.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's Next for CodeWatch
&lt;/h1&gt;

&lt;p&gt;During our research, we were surprised to find that an instant-queue, 1v1 PvP coding platform like this didn't really exist yet. Based on the momentum from our initial build, we plan to open-source CodeWatch so developers across software engineering and cybersecurity can contribute new game modes, problem sets, and features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it here:&lt;/strong&gt; &lt;br&gt;
&lt;a href="https://codewatch.us/" rel="noopener noreferrer"&gt;https://codewatch.us/&lt;/a&gt;&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%2Fum2dn7og4cd7sr65vsoz.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%2Fum2dn7og4cd7sr65vsoz.png" alt="Quick look at the dashboard" width="799" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mlhacks</category>
      <category>python</category>
      <category>react</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
