<?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: aierkuite</title>
    <description>The latest articles on DEV Community by aierkuite (@aierkuite).</description>
    <link>https://dev.to/aierkuite</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%2F3994107%2Ff3c0d570-c229-489a-bf2c-ca410175bc5a.png</url>
      <title>DEV Community: aierkuite</title>
      <link>https://dev.to/aierkuite</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aierkuite"/>
    <language>en</language>
    <item>
      <title>I built a pixel museum for my anime merch — and made you gamble to see it</title>
      <dc:creator>aierkuite</dc:creator>
      <pubDate>Mon, 13 Jul 2026 05:28:12 +0000</pubDate>
      <link>https://dev.to/aierkuite/i-built-a-pixel-museum-for-my-anime-merch-and-made-you-gamble-to-see-it-43jd</link>
      <guid>https://dev.to/aierkuite/i-built-a-pixel-museum-for-my-anime-merch-and-made-you-gamble-to-see-it-43jd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Museum of My Obsession&lt;/strong&gt; is a tiny pixel-art museum for three things I love beyond reason: a Hiten illustration artbook, an Arcueid Brunestud body pillow, and a Mélusine 1/7 scale figure.&lt;/p&gt;

&lt;p&gt;But you do not simply browse my collection. That would be too easy, and nothing about collecting is ever quite that easy. You &lt;strong&gt;summon&lt;/strong&gt; it.&lt;/p&gt;

&lt;p&gt;The museum has a gacha pool where those three treasures are the only SSRs. The rest of the pool contains the true everyday relics of a collector's life: a shipping cardboard box, a silica gel packet, an instruction manual, and an empty wallet — “the true cost of passion.” There is a hard pity at 10 pulls, a ten-pull flip-card grid, summon history, unlockable curator titles, and a DEX that tracks both silhouettes and the current pity count. Collect all three SSRs and a secret final exhibit appears: &lt;strong&gt;The Curator&lt;/strong&gt; — me, the most obsessed item in the building.&lt;/p&gt;

&lt;p&gt;The whole museum begins in pixel art. When an SSR is revealed, its pixels dissolve tile by tile into a full illustration on a quiet ivory gallery wall, beside a first-person curator's note and a museum-style obsession stats plate.&lt;/p&gt;

&lt;p&gt;That transition is the point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To everyone else, this is pixels. To me, it renders in HD.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone else may see paper, fabric, or plastic. I see the anticipation before a package arrives, the memory attached to a shelf, and the strange clarity that passion gives an ordinary object.&lt;/p&gt;

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

&lt;p&gt;🏛️ &lt;strong&gt;&lt;a href="https://aierkuite.github.io/museum-of-my-obsession/" rel="noopener noreferrer"&gt;Enter the live museum&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the intended 60-second experience, turn the sound on and follow this route:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SUMMON ×10 → click or tap the rainbow SSR → watch pixels become HD → leave a flower → visit DEX&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ten-pull guarantees that there is an SSR to discover. The rainbow card is the doorway to the site's signature pixel-to-HD reveal.&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%2Fraw.githubusercontent.com%2Faierkuite%2Fmuseum-of-my-obsession%2Fsubmission-assets%2Fpress%2Fmuseum-gameplay.gif" 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%2Fraw.githubusercontent.com%2Faierkuite%2Fmuseum-of-my-obsession%2Fsubmission-assets%2Fpress%2Fmuseum-gameplay.gif" alt="A ten-pull summon reaches the rainbow SSR reveal" width="720" height="405"&gt;&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%2F347l8x3jgbx3neyevp5x.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%2F347l8x3jgbx3neyevp5x.png" alt="The ten-pull reveal with an SSR ready to inspect" width="800" height="450"&gt;&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%2Fomj6lz55dt5wld07atob.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%2Fomj6lz55dt5wld07atob.png" alt="An exhibit resolving from pixels into the HD appreciation room" width="800" height="450"&gt;&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%2F6x8sepol5i3iggwabdm8.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%2F6x8sepol5i3iggwabdm8.png" alt="The summon results with the DEX entry and pity counter visible" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you leave a flower at an exhibit, the museum remembers it locally in your browser. There is no account, backend, analytics service, or external API watching the visit.&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/aierkuite" rel="noopener noreferrer"&gt;
        aierkuite
      &lt;/a&gt; / &lt;a href="https://github.com/aierkuite/museum-of-my-obsession" rel="noopener noreferrer"&gt;
        museum-of-my-obsession
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Museum of My Obsession&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A tiny pixel-art museum for the things I love — built for the dev.to Weekend
Challenge (Passion Edition, July 2026).&lt;/p&gt;
&lt;p&gt;Summon an exhibit from the summon circle, watch the rarity stars light up, and
step into the appreciation room to read the curator's notes. There's a gacha
with a pity system, a ×10 summon, a collection dex, and a secret exhibit for
those who collect every SSR.&lt;/p&gt;
&lt;p&gt;🏛️ &lt;strong&gt;Live museum&lt;/strong&gt;: &lt;a href="https://aierkuite.github.io/museum-of-my-obsession/" rel="nofollow noopener noreferrer"&gt;https://aierkuite.github.io/museum-of-my-obsession/&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The 60-second route&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;SUMMON ×10 → tap the rainbow SSR → watch pixels become HD → leave a flower → visit DEX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Short on time? Use &lt;strong&gt;QUICK TOUR&lt;/strong&gt; for a state-safe signature reveal that never
changes your real pity, summon history, collection progress, titles, or flower
counts.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Vite + vanilla JavaScript + CSS, with hash-routed views and no backend&lt;/li&gt;
&lt;li&gt;Original SVG sprites for the pixel museum and original HD exhibit art&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/aierkuite/museum-of-my-obsession" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;I gave myself one rule for the weekend: everything visual had to be original. The site uses no official artwork, game screenshots, scans, or product photography. Every pixel sprite and HD illustration is a hand-authored SVG interpretation. Character and creator names appear only in the prose; the visuals deliberately avoid copying official designs.&lt;/p&gt;

&lt;p&gt;The stack is &lt;strong&gt;Vite + vanilla JavaScript + CSS&lt;/strong&gt;, with one small runtime dependency: &lt;code&gt;canvas-confetti&lt;/code&gt; for an SSR celebration. There is no framework and no backend. The pixel font is hosted locally, and every sound is synthesized at runtime with the Web Audio API, including an original eight-bar chiptune loop scheduled with an absolute-time lookahead so it can repeat without a gap.&lt;/p&gt;

&lt;p&gt;Some implementation details I especially enjoyed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The gacha engine&lt;/strong&gt; is a pure logic module with injectable random-number generation and storage. It uses weighted tiers, hard pity at 10, ten-pull safeguards, duplicate SSR handling, summon history, and local DEX progression.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The summon ceremony&lt;/strong&gt; is a canvas particle system. Roughly 190 additive-glow particles spiral into a tilted rotating ring, contract, and collapse into a flash. Blue, gold, and rainbow lighting reveal the tier before the card appears.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The pixel-to-HD dissolve&lt;/strong&gt; uses a randomized 12 × 9 mosaic grid. It is a small effect, but it carries the emotional thesis of the entire project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The collection is local-first.&lt;/strong&gt; Pity, history, DEX progress, titles, and flowers live in &lt;code&gt;localStorage&lt;/code&gt;; none of them leave the visitor's browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motion is optional.&lt;/strong&gt; Particles, mosaic reveal, confetti, typewriter text, and parallax all respect &lt;code&gt;prefers-reduced-motion&lt;/code&gt;, and the layout remains usable at a 375 px viewport.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Data Behind the Displays
&lt;/h2&gt;

&lt;p&gt;The stats plates are personal context, not accounting records. I intentionally publish honest approximations rather than pretending that years-old purchase memories are exact facts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Hiten artbook&lt;/strong&gt; cost about &lt;strong&gt;CNY 320&lt;/strong&gt;. I acquired it in &lt;strong&gt;2022&lt;/strong&gt;, waited roughly &lt;strong&gt;24 days&lt;/strong&gt;, and its journey covered over &lt;strong&gt;2,000 km&lt;/strong&gt;. The decision took under &lt;strong&gt;10 minutes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Arcueid body pillow&lt;/strong&gt; cost about &lt;strong&gt;CNY 650&lt;/strong&gt;. I acquired it in &lt;strong&gt;2023&lt;/strong&gt;, waited over &lt;strong&gt;60 days&lt;/strong&gt;, and it travelled over &lt;strong&gt;1,500 km&lt;/strong&gt;. I thought about it for roughly &lt;strong&gt;two days&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Mélusine figure&lt;/strong&gt; cost about &lt;strong&gt;CNY 1,400&lt;/strong&gt;. I acquired it in &lt;strong&gt;2024&lt;/strong&gt;, waited nearly &lt;strong&gt;300 days&lt;/strong&gt;, and it travelled over &lt;strong&gt;2,000 km&lt;/strong&gt;. The decision took about &lt;strong&gt;three seconds&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those fuzzy numbers tell a clearer story than a sterile inventory table: over a year of combined waiting, thousands of kilometres travelled, and a decision-time range from two days to three seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building With AI
&lt;/h2&gt;

&lt;p&gt;I built this project solo over one weekend with AI-assisted pair programming. AI helped me explore interaction ideas, draft and review code, refine English copy, and test edge cases. I made the product decisions, selected the personal stories and honestly approximate data, reviewed the implementation, and kept every shipped visual asset original to this project. The public repository history is the development diary.&lt;/p&gt;

&lt;p&gt;The most useful thing AI did was not “generate a website.” It helped me keep asking whether each technical flourish supported the same emotional idea. Gacha, pity, the DEX, synthesized audio, and the dissolve effect all had to lead back to one line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To everyone else, this is pixels. To me, it renders in HD.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Regrets: &lt;strong&gt;0&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Thanks for visiting. Leave a flower.&lt;/em&gt; 🌸&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>How a non-coder shipped a camera + voice AI toy — the AI wrote the code, I made the calls</title>
      <dc:creator>aierkuite</dc:creator>
      <pubDate>Sat, 20 Jun 2026 13:01:10 +0000</pubDate>
      <link>https://dev.to/aierkuite/how-a-non-coder-shipped-a-camera-voice-ai-toy-the-ai-wrote-the-code-i-made-the-calls-2421</link>
      <guid>https://dev.to/aierkuite/how-a-non-coder-shipped-a-camera-voice-ai-toy-the-ai-wrote-the-code-i-made-the-calls-2421</guid>
      <description>&lt;h1&gt;
  
  
  I can't code, but I used AI to build a toy that cosplays a character — go ahead and roast it
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Heads up: this is just a toy demo I built for fun. Most of the code was written by AI; my job was deciding what to build, making the trade-off calls, and stepping on the rakes. I'm posting it to ask the community how I could make it better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live demo (playable WebGL intro + recorded walkthrough): &lt;a href="https://aierkuite-ai-sight.pages.dev" rel="noopener noreferrer"&gt;https://aierkuite-ai-sight.pages.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source on GitHub: &lt;a href="https://github.com/aierkuite/aierkuite-AI_Sight" rel="noopener noreferrer"&gt;https://github.com/aierkuite/aierkuite-AI_Sight&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How it started: I wanted a dumb little toy
&lt;/h2&gt;

&lt;p&gt;I can't really code. One day I got an itch to build a small toy — you point it at something and ask a question, and the AI looks at the camera feed and answers you in Japanese, in a character's voice, so it feels like you're actually talking to the character.&lt;/p&gt;

&lt;p&gt;Pure self-entertainment, but it got addictive, and that's how this thing came to be: &lt;strong&gt;AI Vision Chat Assistant (AI Sight)&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;In one line: &lt;strong&gt;point your camera and ask; the AI looks at the frame, answers in Japanese, and reads it out loud in a cloned voice.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Breaking the toy down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visual Q&amp;amp;A&lt;/strong&gt;: every question sends the current camera frame along, so the model answers based on what it actually sees, not guesswork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice / text input&lt;/strong&gt;: push-to-talk live transcription, or just type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming replies&lt;/strong&gt;: the model streams token by token — no waiting for the whole block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloned voice + Japanese narration&lt;/strong&gt;: the reply is synthesized into Japanese speech in a cloned character voice (I'll stay vague on whose — you know the type).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cinematic intro&lt;/strong&gt;: a full-screen, page-flipping WebGL opening animation; if your device has no WebGL or you've turned on "reduce motion," it gracefully falls back to a 2D background instead of a blank screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One detail I'm weirdly proud of — &lt;strong&gt;wait-then-play&lt;/strong&gt;: I wait until the &lt;em&gt;entire&lt;/em&gt; audio clip is synthesized, then reveal the text and start playback at the same time. At first I didn't, and the subtitles would pop up while the voice lagged behind — the character looked possessed. Syncing them feels so much better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heads up&lt;/strong&gt;: the live demo page does &lt;strong&gt;not&lt;/strong&gt; call the backend or a GPU in real time — you can only play the intro animation and watch my recorded walkthrough. To try a full conversation you currently have to run it locally — which is exactly one of the things I want to ask about below.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a non-coder cobbled this together
&lt;/h2&gt;

&lt;p&gt;Honest truth: &lt;strong&gt;most of the code was written by AI.&lt;/strong&gt; My half of the work was the other half — figuring out what to build, breaking it into small tasks, making the technical trade-offs, and judging whether the AI's solution was actually right or about to step on a rake.&lt;/p&gt;

&lt;p&gt;A "me making the call" example is that wait-then-play thing. The AI's first take was "stream the text, play the audio whenever it's ready." Technically fine, but the experience was off. I'm the one who said no, not good enough — that kind of product-feel judgment is the steering wheel I keep my hands on, while the AI turns my calls into code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm stuck on — two things I'd love advice on
&lt;/h2&gt;

&lt;p&gt;The real reason I'm posting. Two pretty concrete questions:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Where could the concept / gameplay go next?
&lt;/h3&gt;

&lt;p&gt;Right now it's pure self-entertainment — point a camera, get Japanese back, have a chuckle. But this "look at the scene + answer in a character voice" combo — beyond "anime companion chat," what real or fun scenarios could it land in? Is it worth taking further, or is this about as far as it should go?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. How do I lower the barrier for others to try it?
&lt;/h3&gt;

&lt;p&gt;To run the whole thing today you need your own vision-model API &lt;strong&gt;plus&lt;/strong&gt; GPT-SoVITS running on a local GPU — that's a steep wall that scares off passersby. Are there lighter deployment options / alternatives so someone walking by could actually try it cheaply?&lt;/p&gt;

&lt;p&gt;Honest sign-off: the code is rough, and there are bits I don't fully understand myself. Roast away — go easy or go brutal, I'll take it.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Live demo (intro + video): &lt;a href="https://aierkuite-ai-sight.pages.dev" rel="noopener noreferrer"&gt;https://aierkuite-ai-sight.pages.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source on GitHub: &lt;a href="https://github.com/aierkuite/aierkuite-AI_Sight" rel="noopener noreferrer"&gt;https://github.com/aierkuite/aierkuite-AI_Sight&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo video (on Bilibili): &lt;a href="https://www.bilibili.com/video/BV1Hij66ZEGR" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1Hij66ZEGR&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading this far — hoping for some pointers.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
