<?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: Rocky</title>
    <description>The latest articles on DEV Community by Rocky (@nichetools).</description>
    <link>https://dev.to/nichetools</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%2F4172593%2F7002f8e8-236b-42d3-8c6f-fb02c350626e.png</url>
      <title>DEV Community: Rocky</title>
      <link>https://dev.to/nichetools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nichetools"/>
    <language>en</language>
    <item>
      <title>I stopped writing guides for a co-op game and built solvers instead</title>
      <dc:creator>Rocky</dc:creator>
      <pubDate>Sat, 10 Oct 2026 06:10:35 +0000</pubDate>
      <link>https://dev.to/nichetools/i-stopped-writing-guides-for-a-co-op-game-and-built-solvers-instead-5840</link>
      <guid>https://dev.to/nichetools/i-stopped-writing-guides-for-a-co-op-game-and-built-solvers-instead-5840</guid>
      <description>&lt;p&gt;I play BOMBANANA! with two friends. It's a three-player co-op bomb-defusal game, and its entire design premise is that no player can verify anyone else's information. The three roles are labeled Blind, Deaf and Mute — one player can't see the panel, one player can't hear the sequence, one player can't say anything out loud.&lt;/p&gt;

&lt;p&gt;We lost seven runs in a row on the same module. Not because we didn't understand it. We understood it completely. We were each reading our own version of it, differently, and by the time we agreed on what it said the panel had already moved on.&lt;/p&gt;

&lt;p&gt;That's the moment I stopped writing guide pages.&lt;/p&gt;

&lt;p&gt;A guide page assumes the problem is knowledge. You don't know how the module works, so you read about it, then you apply it. That model breaks here, because all three of us already knew how the module worked. The problem was that the three of us were holding three different fragments of the same puzzle, with no shared place to put them.&lt;/p&gt;

&lt;p&gt;A guide can't fix that. A tool can.&lt;/p&gt;

&lt;p&gt;So I built the site the other way around: instead of explaining each module, it resolves each one into a single action. You count the cables, read the LED, get the exact wire to cut. You combine the raised Braille number with the light color and get one arrow. The output is never a paragraph — it's one instruction, because that's the only thing that survives the moment of panic.&lt;/p&gt;

&lt;p&gt;A few things I got wrong on the way, in case you're building something similar.&lt;/p&gt;

&lt;p&gt;A static site was the right call, but not for the reason I expected. I picked it for cost and speed, which was fine, but the real win was that there's no account and no install. The defuser has one hand free and about four seconds. Anything with a login screen is already too slow.&lt;/p&gt;

&lt;p&gt;The page that got used the most wasn't the clever one. I built a resolver that collapses a whole module into one action, and I was proud of it. But the page people actually sit on is a drill for reading Braille digits. The resolver assumes you can already read the input. Most of our failures were in the reading, not the resolving.&lt;/p&gt;

&lt;p&gt;Sharing needs to be built in from the start. The drill pages accept a seed in the URL, so the same set of prompts can be replayed by someone else, and the result can be copied as a short challenge line. Without that, nobody has any reason to send the page to a teammate — and a tool nobody sends is a tool nobody finds.&lt;/p&gt;

&lt;p&gt;The manual changes between patches, and that is the actual maintenance problem. Lookup tables go stale. I'd rather be corrected than be confidently wrong, so every page carries a note asking to be told when something is off.&lt;/p&gt;

&lt;p&gt;If you're building for a game with asymmetric information, the shape I'd reach for is: same inputs as the game, one output, no accounts, shareable state. The content you'd normally put in a guide is still useful — put it next to the tool, not instead of it.&lt;/p&gt;

&lt;p&gt;The tools are at &lt;a href="https://bombananaguide.xyz/tools/" rel="noopener noreferrer"&gt;https://bombananaguide.xyz/tools/&lt;/a&gt; — the module resolvers are there, and the Braille drill I mentioned is linked from that hub.&lt;/p&gt;

&lt;p&gt;It's a fan-made site for a game I just play badly. If a lookup table is wrong for your patch, tell me and I'll fix it the same day.&lt;br&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%2F3c4153iiahq5k56haz8d.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%2F3c4153iiahq5k56haz8d.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>gamedev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>What actually mattered building a small SEO site from scratch</title>
      <dc:creator>Rocky</dc:creator>
      <pubDate>Fri, 09 Oct 2026 06:10:15 +0000</pubDate>
      <link>https://dev.to/nichetools/what-actually-mattered-building-a-small-seo-site-from-scratch-2ed</link>
      <guid>https://dev.to/nichetools/what-actually-mattered-building-a-small-seo-site-from-scratch-2ed</guid>
      <description>&lt;p&gt;For the last few weeks I've been building a fan wiki for a three-player co-op game — nine pages, English, no backend, no accounts, no CMS. It exists for one reason: when someone gets stuck and searches for the answer, this should be the thing that shows up.&lt;br&gt;
I'm a developer, not an SEO person, so I wrote down what actually seemed to matter. Some of it is obvious in hindsight. Some of it surprised me.&lt;br&gt;
A static site is not a compromise for this&lt;br&gt;
The whole thing is static HTML on a CDN. I generate the pages in a build step and push a directory. There is nothing to scale, nothing to keep warm, and the pages load before anyone can decide to leave.&lt;br&gt;
The reason I'd pick it again isn't speed, though. It's that there is nothing standing between the reader and the answer. No login wall, no cookie interstitial, no modal asking for an email. If a page exists to answer one question, then every click you add before the answer is a click that costs you the visit.&lt;br&gt;
Structured data was the highest-leverage hour of the project&lt;br&gt;
I added JSON-LD before I had a single visitor, which felt premature at the time. It wasn't.&lt;br&gt;
Most of a page is written for a person. Structured data is the only part written for a machine, and if you don't write it, a machine has to guess what your page is about. It will guess worse than you would.&lt;br&gt;
The other half is that almost nobody fills it in properly. That's not an advantage you have to be clever to earn — it's the one you get for doing the boring thing your competitors skipped.&lt;br&gt;
For a page describing a game, that meant marking up the game itself, the organization behind the site, and the questions as questions — not as a heading that happens to end in a question mark.&lt;br&gt;
Title, description and heading order are most of the work and none of the fun&lt;br&gt;
Every page needs a title written for a search result, a description written to be clicked, and exactly one H1. This is unglamorous, and it is the bulk of the actual effort.&lt;br&gt;
The one rule I'd pass on: write the outline before you write the page. If you can't list the H2s, you don't know what the page is about yet, and no amount of prose will fix that afterwards.&lt;br&gt;
The surprise: being late didn't mean the topic was closed&lt;br&gt;
We started about two weeks after the game launched. When I looked at the results page there were already a dozen sites covering it, several of them far bigger than us. My first instinct was that we'd missed it entirely.&lt;br&gt;
Then I actually read the top results. Most of them answered the same first question and stopped. Sitting right next to it was a second question nobody had written up.&lt;br&gt;
Being late to a topic is not the same as being late to every question inside it. A small site doesn't win the head term. It wins the sentence nobody else bothered to finish.&lt;br&gt;
Tools get linked to. Pages don't.&lt;br&gt;
This is the part that changed how I plan content.&lt;br&gt;
A guide page, however good, is something people read and close. A tool is something people keep open, and occasionally send to a friend. If pages are your only asset, search is your only distribution. If you have one small useful tool, you get a second and weaker channel — people passing the thing around.&lt;br&gt;
So I stopped planning more pages and started planning things that do something. The smallest interaction that turns "I think it says five" into "it says five".&lt;br&gt;
What I don't know yet&lt;br&gt;
I want to be clear that this is a process report, not a results report. The site has almost no visibility right now and I genuinely don't know whether any of it will work.&lt;br&gt;
What I can say is that the checklist turned out to be short and unexciting. Static pages. One clear question per page. Real structured data. An outline before prose. Something interactive that's worth keeping open. Then wait.&lt;br&gt;
There's no trick in there. That was the part I wasn't expecting.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>astro</category>
      <category>cloudflarechallenge</category>
    </item>
  </channel>
</rss>
