<?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>Forem: Samuel Jonathan JOSEPH</title>
    <description>The latest articles on Forem by Samuel Jonathan JOSEPH (@josephsamijona).</description>
    <link>https://forem.com/josephsamijona</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%2F3155869%2F19cbdde9-d3b5-44d6-9d2e-ad6aab101b8f.jpeg</url>
      <title>Forem: Samuel Jonathan JOSEPH</title>
      <link>https://forem.com/josephsamijona</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/josephsamijona"/>
    <language>en</language>
    <item>
      <title>Dev Journal: Architecting a Universe Before Writing a Single Line of Code</title>
      <dc:creator>Samuel Jonathan JOSEPH</dc:creator>
      <pubDate>Fri, 25 Jul 2025 18:53:21 +0000</pubDate>
      <link>https://forem.com/josephsamijona/dev-journal-architecting-a-universe-before-writing-a-single-line-of-code-1mi5</link>
      <guid>https://forem.com/josephsamijona/dev-journal-architecting-a-universe-before-writing-a-single-line-of-code-1mi5</guid>
      <description>&lt;p&gt;The starting gun for the Code with Kiro Hackathon has fired, and the excitement is palpable. Like many others, I'm eagerly awaiting approval to get my hands on the Kiro IDE, a tool I believe will fundamentally change how we translate ideas into reality. But is waiting a delay? Not at all. It's an opportunity. An opportunity to do the most critical work upfront: thinking, planning, and architecting.&lt;/p&gt;

&lt;p&gt;While I wait for my development environment, I've poured all my energy into building the universe of my game, INFINITY WARS, on paper. I haven't just been idle; I've been architecting. The result is a comprehensive game design document and, more importantly, a complete technical blueprint for a functional prototype. The foundation is laid, and every brick is in its place, waiting for the code to bring it to life.&lt;/p&gt;

&lt;p&gt;The Concept: INFINITY WARS - Where Math Becomes a Weapon&lt;br&gt;
At its heart, INFINITY WARS is a strategic card game with a revolutionary core concept: what if you could weaponize the very idea of infinity? Players start with simple, finite mathematical sets—like {1, 2, 3}—as their units. But the entire strategic depth of the game revolves around a single, dramatic goal: achieving mathematical infinity.&lt;/p&gt;

&lt;p&gt;A card transformed into ℵ₀ (Aleph-naught) becomes a god on the battlefield, immune to all finite attacks. It’s a moment of transcendence that shifts the balance of power completely. This isn't just about having a stronger monster; it's about creating a unit that operates on a different plane of reality. The game is a tense, 15-minute duel of resource management, strategic sacrifice, and knowing the perfect moment to make the leap into the infinite.&lt;/p&gt;

&lt;p&gt;The Blueprint: A Modular, Event-Driven Engine&lt;br&gt;
To build a game with rules this complex, a robust architecture is non-negotiable. My goal was to design a game engine so decoupled and logical that adding new cards with bizarre, reality-bending effects would be trivial. The entire system is built on a few core principles:&lt;/p&gt;

&lt;p&gt;Data-Logic Separation: The CardDatabase knows what a card is (its stats, its cost). The EffectLibrary knows what a card does (its executable logic). They never mix.&lt;/p&gt;

&lt;p&gt;Single Source of Truth: The GameStateManager holds the entire state of the game. It doesn't know the rules; it only knows the current reality of the board.&lt;/p&gt;

&lt;p&gt;The Judge and The Executioner: The RuleValidator is a library of pure functions that only returns true or false ("Is this action legal?"). If the answer is yes, the ActionExecutor is called to actually change the game state.&lt;/p&gt;

&lt;p&gt;Event-Driven Communication: The engine is not a monolith. When an action occurs, the ActionExecutor simply broadcasts an event, like CardPlayed. Other modules, like the UIManager or passive card effects, listen for these events and react accordingly. This keeps every component independent and focused on its one job.&lt;/p&gt;

&lt;p&gt;Here’s a glimpse into that architecture with some pseudocode.&lt;/p&gt;

&lt;p&gt;Pseudocode: The Anatomy of a Card&lt;br&gt;
A card isn't just one object. It's a static definition and a dynamic instance. This separation is key.&lt;/p&gt;

&lt;p&gt;// From types.ts - The definition of what a card IS&lt;br&gt;
interface CardData {&lt;br&gt;
  id: string;&lt;br&gt;
  name: string;&lt;br&gt;
  cost: number;&lt;br&gt;
  // ... other static properties&lt;br&gt;
  effectId?: string; // A key to look up its effect in the library&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// An instance of a card in play, with its own unique state&lt;br&gt;
interface CardInstance {&lt;br&gt;
  uniqueId: string; // To track this specific card&lt;br&gt;
  data: CardData;   // Reference to its static definition&lt;br&gt;
  isTapped: boolean;&lt;br&gt;
  currentAttack: number;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Pseudocode: The RuleValidator as Gatekeeper&lt;br&gt;
Before any action is taken, we consult the "judge." This prevents illegal states and keeps the core loop clean.&lt;/p&gt;

&lt;p&gt;// From RuleValidator.ts&lt;br&gt;
function canPlayCard(player: PlayerState, card: CardData, gameState: GameState): boolean {&lt;br&gt;
  if (player.finitude &amp;lt; card.cost) {&lt;br&gt;
    return false; // Not enough Finitude&lt;br&gt;
  }&lt;br&gt;
  if (gameState.currentPhase !== GamePhase.MAIN) {&lt;br&gt;
    return false; // Can't play cards now&lt;br&gt;
  }&lt;br&gt;
  if (player.ensembleZone.isFull()) {&lt;br&gt;
    return false; // No space on the board&lt;br&gt;
  }&lt;br&gt;
  return true; // All checks passed!&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Pseudocode: Action, Consequence, and Event&lt;br&gt;
Here is the flow when a player plays a card. Notice how each module has a distinct role.&lt;/p&gt;

&lt;p&gt;// From InputHandler.ts - The player clicks a card&lt;br&gt;
function onCardClick(card: CardData) {&lt;br&gt;
  // 1. Ask the judge&lt;br&gt;
  if (RuleValidator.canPlayCard(player, card, gameState)) {&lt;br&gt;
    // 2. If legal, command the executioner&lt;br&gt;
    ActionExecutor.playCard(player, card);&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// From ActionExecutor.ts - The action is performed&lt;br&gt;
function playCard(player: PlayerState, card: CardData) {&lt;br&gt;
  // 3. Modify the game state&lt;br&gt;
  player.finitude -= card.cost;&lt;br&gt;
  GameStateManager.moveCard(card, 'Hand', 'EnsembleZone');&lt;/p&gt;

&lt;p&gt;// 4. Announce what just happened&lt;br&gt;
  EventManager.broadcast('CardPlayed', { cardId: card.id, playerId: player.id });&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Ready to Build with Kiro&lt;br&gt;
This deep architectural work has been incredibly rewarding. I now have a complete, logical map of the entire game. When I finally get access to the Kiro IDE, I won't be asking it "How do I start?". I'll be telling it: "Here is the blueprint. Let's build this universe, together." I'm convinced that pairing this level of detailed, spec-driven design with an AI partner like Kiro is the future of development. The interesting problems are already solved; now comes the joy of bringing them to life.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>hookedonkiro</category>
      <category>kirodotdev</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>The Flame to Conquer, The Desire to Create: Using Kiro IDE to Turn Mathematical Infinity into a Video Game</title>
      <dc:creator>Samuel Jonathan JOSEPH</dc:creator>
      <pubDate>Wed, 23 Jul 2025 18:07:15 +0000</pubDate>
      <link>https://forem.com/josephsamijona/the-flame-to-conquer-the-desire-to-create-using-kiro-ide-to-turn-mathematical-infinity-into-a-m53</link>
      <guid>https://forem.com/josephsamijona/the-flame-to-conquer-the-desire-to-create-using-kiro-ide-to-turn-mathematical-infinity-into-a-m53</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey dev.to community! 👋&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's a famous saying: "Mathematics is the alphabet with which the universe was written." This idea has always captivated me. It made me wonder: what if we used that alphabet to play, to compete, and to master its most powerful "words"?&lt;/p&gt;

&lt;p&gt;For this hackathon, I don't just want to code an app. I want to tackle a monster: abstraction. My goal is to turn one of math's most mind-bending concepts—the different sizes of infinity—into a tangible, strategic, and above all... addictive card game mechanic.&lt;/p&gt;

&lt;p&gt;**&lt;br&gt;
The Concept:** A Game Where Infinity Changes All the Rules&lt;br&gt;
I'm working on a prototype for a card game (codename: Project Aleph-Zero) where the goal isn't just to beat your opponent, but to break the very foundations of the game's logic.&lt;/p&gt;

&lt;p&gt;Imagine a duel that starts conventionally, with finite-value cards. The strategies feel familiar. Then, a player manages to do the unthinkable: they summon ℵ₀ (Aleph-zero)—the first infinity—onto the field.&lt;/p&gt;

&lt;p&gt;This is the game's "WOW" moment.&lt;/p&gt;

&lt;p&gt;Suddenly, all "finite" attacks become useless, absorbed by this new, overwhelming power. The opponent's strategy is shattered. They have to rethink everything, because the rules of the world have just changed.&lt;/p&gt;

&lt;p&gt;And that's just the gateway. What happens when even larger infinities enter the game? Or when a Paradox card is played, disrupting the duel's logic itself? This is what I want to explore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Partner in this Quest:&lt;/strong&gt; Kiro, the AI Agent&lt;br&gt;
A project this wild can't be built with just an IDE. It needs a creative partner, an oracle. That's where Kiro comes in. While I'm waiting for my invitation, here's how I plan to collaborate with this AI agent:&lt;/p&gt;

&lt;p&gt;**🧠 The Strategic Brain: **I plan to use Kiro to simulate thousands of games. How do you balance a card that is, by definition, "infinitely" stronger than the others? Kiro will help me find the answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔮 The Idea Generator:&lt;/strong&gt; Asking it to draw from obscure mathematical theorems to propose unique card mechanics. "Kiro, design a card based on the Banach-Tarski paradox. What would it do?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✍️ The Narrative Architect:&lt;/strong&gt; Using the AI to generate lore and flavor text for the cards, turning abstract concepts into epic legends.&lt;/p&gt;

&lt;p&gt;Current Status &amp;amp; Call to the Community&lt;br&gt;
Right now, I'm in the most exciting phase: the drawing board, where rules are taking shape and the first cards are being sketched out. The prototype will be developed in Node.js for its speed, which is perfect for an MVP.&lt;/p&gt;

&lt;p&gt;The name INFINITY WARS is a working title, but I'm convinced there's something more original out there.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;So I'm asking you:&lt;br&gt;
*&lt;/em&gt;&lt;em&gt;What mind-bending mathematical concept would you love to see turned into a legendary card?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading! I'm excited to share my progress on this journey into infinity with you all.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>buildwithkiro</category>
      <category>gamedev</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
