<?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: Juan Allo Ron</title>
    <description>The latest articles on DEV Community by Juan Allo Ron (@juan_allo).</description>
    <link>https://dev.to/juan_allo</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%2F3908261%2F0c392d32-8ead-4d71-931a-7f624e175718.png</url>
      <title>DEV Community: Juan Allo Ron</title>
      <link>https://dev.to/juan_allo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juan_allo"/>
    <language>en</language>
    <item>
      <title>Solstice Vigil: a solo RPG narrated by Gemma 4 in your browser</title>
      <dc:creator>Juan Allo Ron</dc:creator>
      <pubDate>Mon, 22 Jun 2026 05:44:06 +0000</pubDate>
      <link>https://dev.to/juan_allo/solstice-vigil-a-solo-rpg-narrated-by-gemma-4-in-your-browser-1jp1</link>
      <guid>https://dev.to/juan_allo/solstice-vigil-a-solo-rpg-narrated-by-gemma-4-in-your-browser-1jp1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;SOLSTICE VIGIL&lt;/strong&gt; is a solo narrative RPG. The sun stopped setting at the June solstice, and you are the wanderer trying to keep day and night from tipping over completely.&lt;/p&gt;

&lt;p&gt;Each choice moves a balance meter between the Long Day and the Hush of Night. Push too far and the vigil ends. There is no boss fight, just a count of how many days you held the wheel, what you became along the way, and which strange things you stumbled into.&lt;/p&gt;

&lt;p&gt;I wanted it to feel like an old manuscript you could actually play: mythic, a little lonely, not very chatty.&lt;/p&gt;

&lt;p&gt;What you can do in the game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Balance day and night. The meter drives phase, mood, and how close you are to tipping over.&lt;/li&gt;
&lt;li&gt;Get scenes narrated on your own device. Gemma 4 (E2B) runs in Chrome through Google AI Edge LiteRT-LM and WebGPU. No server, no API key, nothing leaving the machine.&lt;/li&gt;
&lt;li&gt;Earn identities instead of picking a class. Titles like &lt;em&gt;Ember Saint&lt;/em&gt; or &lt;em&gt;Moon Herald&lt;/em&gt; show up after your choices pile up.&lt;/li&gt;
&lt;li&gt;Find rare encounters. Fifteen of them, with a codex, eligibility rules, and cards worth sharing.&lt;/li&gt;
&lt;li&gt;Roll a d20 on bold choices. Sometimes the solstice pushes back.&lt;/li&gt;
&lt;li&gt;Turn on speech narration if you want the scene read aloud. &lt;/li&gt;
&lt;li&gt;Try demo mode if you do not want to download the ~2 GB model. The full loop works with hand-written scenes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Play it here: &lt;a href="https://solstice-vigil.vercel.app/" rel="noopener noreferrer"&gt;https://solstice-vigil.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;Desktop (full walkthrough):&lt;/p&gt;



&lt;p&gt;I recorded automated walkthroughs of the prototype and the final build. The demo covers the premise, on-device Gemma loading, an identity reveal, a rare encounter, a d20 roll, and demo mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/juanallo/solstice-vigil" rel="noopener noreferrer"&gt;https://github.com/juanallo/solstice-vigil&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%2F1ozja2rx5zr6m252p9ck.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%2F1ozja2rx5zr6m252p9ck.png" alt="SOLSTICE VIGIL architecture — JS owns game state; Gemma 4 narrates on-device" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The diagram is the important part. JavaScript owns the game: balance, endings, identities, encounters, dice. Gemma gets structured context and returns JSON. It does not hold save state and it does not decide outcomes.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/juanallo/solstice-vigil" rel="noopener noreferrer"&gt;github.com/juanallo/solstice-vigil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Places to start reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/components/game/SolsticeVigil.tsx&lt;/code&gt; — game loop, on-device LLM, UI states&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/prompt.ts&lt;/code&gt; — narrator prompt and turn context&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/identity.ts&lt;/code&gt; / &lt;code&gt;src/data/identities.ts&lt;/code&gt; — inferred wanderer titles&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/encounters.ts&lt;/code&gt; / &lt;code&gt;src/data/encounters.ts&lt;/code&gt; — rare wonders&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/lib/dice.ts&lt;/code&gt; — d20 resolution&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tests/&lt;/code&gt; — Playwright unit + E2E (demo mode for CI)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The tech
&lt;/h3&gt;

&lt;p&gt;I built this because I wanted to try Gemma 4, and Chrome's on-device LLM path made that possible without standing up a backend.&lt;/p&gt;

&lt;p&gt;The game loads &lt;code&gt;@litert-lm/core&lt;/code&gt; from a CDN, pulls the Gemma 4 E2B &lt;code&gt;.litertlm&lt;/code&gt; file from Hugging Face, caches it with the Cache API, and streams scene JSON over WebGPU. Save state lives in &lt;code&gt;localStorage&lt;/code&gt;. The model narrates; JavaScript decides.&lt;/p&gt;

&lt;p&gt;Astro + React was the shell. Static delivery, React island for the game, room to grow if the vigil ever becomes more than one page.&lt;/p&gt;

&lt;p&gt;View Transitions handle screen and scene changes. Phase flips and identity reveals feel less like hard cuts that way.&lt;/p&gt;

&lt;p&gt;I also went looking for newer CSS worth using. &lt;code&gt;border-shape&lt;/code&gt; gives the notched manuscript frames; clip-path covers browsers that do not have it yet.&lt;/p&gt;

&lt;p&gt;On top of that: Web Speech for optional narration, Gemini for the two soundtrack pieces (&lt;em&gt;The Wheel of Sediment&lt;/em&gt;, &lt;em&gt;Vigil of the Still Valley&lt;/em&gt;), and Playwright + TDD because agent-written code looks fine until you actually click through it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using AI
&lt;/h3&gt;

&lt;p&gt;Most of this was built from my phone. I am a full-time dad, so "can I keep working while away from the desk" was not a bonus constraint. It was the whole point.&lt;/p&gt;

&lt;p&gt;I started with a version of my &lt;a href="https://juanmanuelalloron.com/post/my-current-ai-workflow-for-building-apps/" rel="noopener noreferrer"&gt;grill-me&lt;/a&gt; skill in ChatGPT. What is the loop? Why would anyone share a run? Why solstice, specifically? That argument became the PRD.&lt;/p&gt;

&lt;p&gt;Then I moved to Zo Computer and got the first playable prototype working away from my desk: balance meter, phase flip, on-device Gemma, local save. The production app came after that proof.&lt;/p&gt;

&lt;p&gt;Watch the prototype demo:&lt;/p&gt;



&lt;p&gt;For visuals I used Google Stitch and ChatGPT to try directions fast. Dense or spacious? Dashboard or manuscript? Gold day or blue night? The spec in &lt;code&gt;docs/design.md&lt;/code&gt; is what survived that round.&lt;/p&gt;

&lt;p&gt;Desktop Cursor was the one part I could not do on my phone. Once the direction was clear, I ran several implementation plans in parallel. &lt;/p&gt;

&lt;p&gt;Same shape as the workflow I wrote up in &lt;a href="https://juanmanuelalloron.com/post/my-current-ai-workflow-for-building-apps/" rel="noopener noreferrer"&gt;My Current AI Workflow for Building Apps&lt;/a&gt;: argue the idea first, prototype early, design before you let agents run loose, ship in small slices, test the behavior for real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Google AI Usage
&lt;/h3&gt;

&lt;p&gt;Gemma 4 (E2B) through Google AI Edge LiteRT-LM is the game loop, not decoration. Every live scene is generated on-device in Chrome. The model gets game state, story memory, identity context, and encounter history, then returns JSON the engine can parse.&lt;/p&gt;

&lt;p&gt;Gemini wrote the soundtrack. Google Stitch helped me pick a UI direction before I started coding.&lt;/p&gt;

&lt;p&gt;The part I care about most: the LLM is a narrator, not a game master. Balance, endings, identity tiers, encounter eligibility, and dice outcomes are plain JavaScript. That split is why on-device generation feels playable past the first few scenes instead of falling apart.&lt;/p&gt;




&lt;p&gt;Thanks for playing. The wheel turns. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>AI gives you advice. But is it good advice?</title>
      <dc:creator>Juan Allo Ron</dc:creator>
      <pubDate>Sat, 02 May 2026 00:03:37 +0000</pubDate>
      <link>https://dev.to/juan_allo/ai-gives-you-advice-but-is-it-good-advice-21j6</link>
      <guid>https://dev.to/juan_allo/ai-gives-you-advice-but-is-it-good-advice-21j6</guid>
      <description>&lt;p&gt;Most AI conversations go the same way: you ask a question, get an answer, maybe ask a follow-up. It's helpful, but it's not rigorous.&lt;br&gt;
What if you could force the AI to see all angles before recommending?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Freeform AI Advice
&lt;/h2&gt;

&lt;p&gt;AI is amazing at generating options. It's less amazing at systematically tearing them apart. You get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"It depends" answers&lt;/li&gt;
&lt;li&gt;Confirmation of what you already think&lt;/li&gt;
&lt;li&gt;Nice lists of pros and cons that don't actually help you decide
## Enter: The Six Hats Method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edward de Bono's Six Hats is a structured thinking framework. Each "hat" represents a different perspective:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hat&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;White&lt;/td&gt;
&lt;td&gt;Facts and data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;td&gt;Emotion and gut feelings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yellow&lt;/td&gt;
&lt;td&gt;Upside and benefits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black&lt;/td&gt;
&lt;td&gt;Risks and objections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;Alternatives and creativity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blue&lt;/td&gt;
&lt;td&gt;Synthesis and moderation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  I Built a Skill That Runs This Automatically
&lt;/h2&gt;

&lt;p&gt;Just tell the agent: "Run a six hats debate on [your decision]."&lt;br&gt;
It runs 3 rounds, then outputs a markdown file with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Final recommendation (Blue Hat)&lt;/li&gt;
&lt;li&gt;Key agreements&lt;/li&gt;
&lt;li&gt;Unresolved tensions&lt;/li&gt;
&lt;li&gt;Next steps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real Example
&lt;/h2&gt;

&lt;p&gt;"Should I stay in frontend tooling or move to an AI company?"&lt;br&gt;
The debate went through 3 rounds and concluded:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Phased optionality — not an immediate pivot. Ship a small AI UI experiment, run exploratory interviews, talk to your current employer about AI-adjacent growth, then judge any offer on team and day-to-day work rather than the 'AI company' label."&lt;br&gt;
That's a real recommendation, not generic advice.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Clone: &lt;a href="https://github.com/juanallo/six-hats-skill" rel="noopener noreferrer"&gt;github.com/juanallo/six-hats-skill&lt;/a&gt;&lt;br&gt;
Add it to your agent skills folder and try: "Run a six hats debate on [your decision]"&lt;/p&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
