Day 14: Live on Twitch, and doing it for myself
Date: October 10, 2026 (Day 14 is dated October 11, 2026) Contributor: Claude Code Direction: Roman
The night
Roman went live on Twitch and did three things in the same night:
- coded the Day 14 page,
- built a 3D PS2 model,
- mixed music.
Day 14 opens that page: Live on Twitch. It uses the RawmWare.OS ScriptLog animation (two white-bordered windows typing code on black) to type out the log of the night and the reasons behind it.
Why the ads
In Roman's words, the point of all of it:
The goal isn't to sell ads. The goal is to use ads so people see my art. Even when times are hard, never give up.
A lot of advertising is a trick to get people to pay for something. Roman is paying for Instagram ads for a different reason: so the people who would actually care about the work can find it. That means clothing brands, designers, game makers and other artists he respects. Even if they don't love a given project, they should come away knowing he can help with whatever they need: graphic design, motion design, 3D, websites and music.
Business inquiries: Roman@rawmware.com. Instagram DMs to @rawmware work too.
He is not pitching himself as a programmer. He's a creative who is good with a computer and likes making things on it.
Doing it for myself
The original plan was to call small businesses and offer to fix their marketing. Picture a dentist office with 121 Instagram followers: where is the ad money going, and why isn't it working?
Roman flipped it. Everything he was going to do for other people, he is doing for himself, in public. Day 14 is the first round of that work on rawmware.com.
What changed on the site
Search and sharing basics that the site did not have before:
- robots.txt and sitemap.xml. Search engines now get a list of every public page: the desktop, the 365 Days archive, each project hosted on RawmWare, the store, Experiments and every journal entry. The private buyer library and the APIs stay out of search.
- Titles and descriptions that say what's here. The homepage was titled "RawmWare — Home". It now names Roman and the work (graphic design, motion design, 3D, creative code) so people searching for that can find it.
- Link previews. Open Graph and Twitter card tags on the homepage, the archive, every project hosted on RawmWare, Experiments, the journal and Day 14, so links shared in DMs, Discord, X or iMessage show a title, description and image instead of a bare URL. Day 14 and the site have their own 1200×630 share images.
- Structured data. JSON-LD tells search engines who Roman is (name, RawmWare, business email, Instagram, Twitch, GitHub), that Day 14 and journal entries are articles, and how pages sit inside the site.
- Canonical URLs. Each page names its one true address, so search engines do not split it across duplicates.
- The daily viewer is not indexed.
/365-days/day?day=Nis one shared page for 365 dates, and most of those dates are still empty. It is nownoindex, follow, so search engines index the real project pages it links to instead of hundreds of thin copies. - llms.txt. A short plain-text summary for AI search tools explaining who Roman is, what RawmWare is and where to look.
- Twitch everywhere. A Twitch icon on the desktop, a Twitch item in the menu, and the desktop companion now answers questions about Twitch, hiring and design work.
Limits
- No analytics are installed, so traffic is not measured on the site yet. Instagram ad results show in Instagram's own insights.
- Search engines take days to weeks to crawl new pages. Submitting the sitemap in Google Search Console and Bing Webmaster Tools speeds that up and requires Roman's own accounts.
- Twitch has no self-serve ad dashboard for promoting a channel. Ads that run on Twitch are set up through Twitch and Amazon Ads sales teams. Pointing Instagram ads and clips at the Twitch channel or this page is the practical route.
Verification (October 10, 2026, local)
node verify-day-014.cjs: all 24 sitemap pages load, name themselves as canonical, have a title, a description and valid JSON-LD, and are indexable; every share image they reference exists; the daily viewer isnoindex, follow. Day 14 types in both windows, pauses on request, shows the whole first file with reduced motion, links to Twitch, Instagram DMs and Roman@rawmware.com, and has no sideways scrolling from 320 to 1440 px. The archive card and/365-days/day?day=14open Day 14. The desktop shows the Twitch and Work with me icons, the menu has Twitch, and hello.exe answers "Can I hire Roman?" and "Is Roman on Twitch?". No page errors.node verify-store.cjsandnode verify-project-launch.cjspass after updating expectations that had gone stale before this change: Day 12 now opens its own project, Day 2 is published, and the challenge index is fetched with a?v=query that the tests' network mock did not match, so they were reading the live index instead of the mock.verify-challenge.cjsandverify-release.cjsstill describe the launch-era site (zero entries) and were not run.- Not yet checked on rawmware.com: this goes live when the pull request is merged.
For the next session
- Day 14 is a hand-written static page:
dist/365-days/projects/day-014.html. Its archive entry is indocs/challenge.json. node build-seo.cjsregeneratessitemap.xml,robots.txtandllms.txtfromdocs/challenge.jsonanddocs/blog.json, and adds a markedrawmware-seoblock (canonical, preview tags, JSON-LD) to hosted project pages that have no canonical of their own. Run it after publishing a day, copying in a project build, or adding a journal entry.node build-og.cjsre-renders the share images indist/assets/og/with Playwright.- The archive and journal builders (
build-challenge.cjs,build-blog.cjs) now write canonical, Open Graph and JSON-LD tags themselves, so rebuilding keeps them.