<?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: Stuart S</title>
    <description>The latest articles on DEV Community by Stuart S (@57u).</description>
    <link>https://dev.to/57u</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%2F4063058%2F9f71939e-7505-4154-91c5-ab1a187cae24.jpg</url>
      <title>DEV Community: Stuart S</title>
      <link>https://dev.to/57u</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/57u"/>
    <language>en</language>
    <item>
      <title>Every track since 1994</title>
      <dc:creator>Stuart S</dc:creator>
      <pubDate>Mon, 12 Oct 2026 17:23:15 +0000</pubDate>
      <link>https://dev.to/57u/every-track-since-1994-5hah</link>
      <guid>https://dev.to/57u/every-track-since-1994-5hah</guid>
      <description>&lt;p&gt;I've made music as theverychap since 1994. It started on an Amiga A1200 with OctaMED, and the earliest stuff is likely what you'd expect from that: breakbeats, samples galore, and jungle and techno tunes. The bulk of it comes from 1996 to 2001, when I was making music pretty much all day and night. There's a bit of a gap after 2008, and since 2021 I've been at it again (during &lt;em&gt;that&lt;/em&gt; period we all went through).&lt;/p&gt;

&lt;p&gt;There are over 150 tracks on 20-odd (rough) collections, and for years they sat on my old site as a list. Lists are fine if you already know what you're after, but nobody does with someone else's "back catalogue".&lt;/p&gt;

&lt;h2&gt;
  
  
  Six ways in
&lt;/h2&gt;

&lt;p&gt;So... I rebuilt &lt;a href="https://theverychap.com" rel="noopener noreferrer"&gt;theverychap.com&lt;/a&gt; around different ways of exploring the same music. The Sonic Atlas places every track by how it sounds, tempo against brightness, energy, or dynamics, and if you turn on Drift, the player follows the closest-sounding track you haven't heard yet. The Timeline lays everything out in the order it was made, each strip drawn from the track's own waveform. The Tuner is an FM dial where every track is a station, always on air. The Mood mixer gives you faders for tempo, brightness, energy, and era, and plays the closest match. The Crate lets you flip through records, each one previewing its most energetic stretch. And the Gallery is there for anyone who just wants a tracklist.&lt;/p&gt;

&lt;p&gt;All of that depends on knowing how each track sounds, so every one was analysed for tempo, energy, brightness, and dynamics. Tempo came from Essentia, and where it wasn't confident I checked by ear. The site runs on Laravel, React, and Inertia, with a Filament admin for the releases and tracks.&lt;/p&gt;

&lt;p&gt;The descriptions came across from the old site as I wrote them at the time. "A pretty rubbish remix of a Justin Robertson tune done for the sake of it one night" survived the move, and so did "socks on tape", a release of tunes originally recorded to tape (like most!). I'll be tagging and labelling them further. It's nice for me to be able to explore what I made back in the day, and hopefully for anyone that's interested also... Maybe it's not the music that excites - maybe it's the beautiful UIs!&lt;/p&gt;

&lt;p&gt;If you've got an archive and structured data of anything, I'd say give it more than one way of being explored. Someone who'd never scroll a tracklist might well turn a radio dial!&lt;/p&gt;

</description>
      <category>music</category>
      <category>webdev</category>
      <category>laravel</category>
      <category>react</category>
    </item>
    <item>
      <title>From Dope Wars to Spice Wars</title>
      <dc:creator>Stuart S</dc:creator>
      <pubDate>Mon, 12 Oct 2026 14:25:13 +0000</pubDate>
      <link>https://dev.to/57u/from-dope-wars-to-spice-wars-ha9</link>
      <guid>https://dev.to/57u/from-dope-wars-to-spice-wars-ha9</guid>
      <description>&lt;p&gt;Spice Wars started as a love letter to Dope Wars, the little trading game where you bought low in one part of town, sold high in another, and hoped nothing went wrong on the way. Throw in a bit of Taipan! as well. Go somewhere, buy something, sell it somewhere else for more, repeat. It's a tiny loop, and I've always thought it was one of the best in games.&lt;/p&gt;

&lt;p&gt;So that's where it began: a fantasy spice world, a few towns, and a market in each. It has grown a fair way since.&lt;/p&gt;

&lt;h2&gt;
  
  
  What there is to do now
&lt;/h2&gt;

&lt;p&gt;You still travel and trade, but the towns have filled up. There are buildings to visit, and goods to stash for later. Events and encounters crop up as you go, some in your favour and some not. You have a camp where you grow and harvest your own crops, then blend them into something worth more. Traders hand out commissions, and every town keeps its own opinion of you, so you arrive a stranger and earn the reputation that opens doors. The bank, for one, won't lend you anything until you've proved yourself.&lt;/p&gt;

&lt;p&gt;There's a casino and a daily lottery for when you're feeling lucky, shops selling items that raise your stats, training that improves your attributes for good, and a long list of achievements to work through. On top of all that are the challenges, dotted through the week: some twice a week, some at weekends, and more on the way, such as a timed run in the old Dope Wars style, with local, global, and per-challenge leaderboards to top.&lt;/p&gt;

&lt;p&gt;The market is what ties it together. Every player in a town trades against the same prices, so when someone else sells a cartload of cinnamon, you see the price fall on your screen as it happens. Under the hood it's Laravel and React, the world itself is drawn in Three.js, and the live prices arrive over WebSockets through Laravel Reverb and Echo. That's what lets the market move while you're looking at it.&lt;/p&gt;

&lt;p&gt;It's now in public beta at &lt;a href="https://spicewars.net" rel="noopener noreferrer"&gt;spicewars.net&lt;/a&gt;. Anyone can play, with one caveat: progress resets when it properly launches. I'm still adding to it, with more buildings, more challenges, and plenty of tweaks, so if something feels off, I'd like to hear about it.&lt;/p&gt;

&lt;p&gt;If there's a lesson in it, it's that a small loop is worth building on. The one at the heart of Dope Wars still works, and everything I've added hangs off it.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>laravel</category>
      <category>react</category>
      <category>threejs</category>
    </item>
    <item>
      <title>When your best work is behind a login</title>
      <dc:creator>Stuart S</dc:creator>
      <pubDate>Mon, 17 Aug 2026 20:10:24 +0000</pubDate>
      <link>https://dev.to/57u/when-your-best-work-is-behind-a-login-31ig</link>
      <guid>https://dev.to/57u/when-your-best-work-is-behind-a-login-31ig</guid>
      <description>&lt;p&gt;For years my &lt;a href="https://sillitoe.co.uk/projects/" rel="noopener noreferrer"&gt;projects page&lt;/a&gt; was a wall of text. Names, dates, a line each. Accurate, and completely forgettable - you can't tell a dashboard I'm proud of from a site I've half-forgotten when they're both one grey sentence.&lt;/p&gt;

&lt;p&gt;So I rebuilt it around screenshots. It now leads with a few case studies - a hero shot, a strip of thumbnails, the story beside it - then a fuller catalogue you can open a line at a time. Click any image and it opens full-size; arrow or swipe through the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The best work is the hardest to show
&lt;/h2&gt;

&lt;p&gt;Here's the snag, and it's the interesting bit: most of my best work is internal. The backoffice a whole casino runs on, the tool that publishes artwork across twelve thousand games - nobody outside ever sees them, and I can't hand you a login. For a long time that's exactly why the page stayed a list. If you can't show it, why try?&lt;/p&gt;

&lt;p&gt;The answer was to show it anyway, honestly: screenshots of the internal tools with the sensitive data blurred, the games that are public, the side projects that aren't finished yet, and a plain "type-only" line where something genuinely can't be shown. "I built this, and here's what it looked like" beats "I built this" every time, even when there's no URL to click.&lt;/p&gt;

&lt;p&gt;Under the hood it discovers its own screenshots - drop an image in a folder, it appears, no lists to maintain - and the page still scores 100 on Lighthouse. But the lesson wasn't technical. If your best work lives behind a login, don't let that argue you out of a portfolio. Show what you can, say plainly what you can't, and let the pictures make the case.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>portfolio</category>
      <category>showdev</category>
    </item>
    <item>
      <title>My CV, as a dashboard</title>
      <dc:creator>Stuart S</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:16:39 +0000</pubDate>
      <link>https://dev.to/57u/my-cv-as-a-dashboard-1m5c</link>
      <guid>https://dev.to/57u/my-cv-as-a-dashboard-1m5c</guid>
      <description>&lt;p&gt;The real version of my CV is a quiet, paper-white page. Then there is the &lt;a href="https://sillitoe.co.uk/board/" rel="noopener noreferrer"&gt;Board&lt;/a&gt;: the same career, gamified. A heads-up display, ticker, KPI tiles, trophy cabinet, and a 3D reactor of my skill set.&lt;/p&gt;

&lt;h2&gt;
  
  
  None of it is necessary. That is rather the point.
&lt;/h2&gt;

&lt;p&gt;The one site you get to over-build&lt;br&gt;
I have spent most of my career building for other people, where the work has a real job to do and real people using it. That is the good part. A personal site is the one place where the brief is whatever I want it to be, so here it was simply this: take the CV data and go completely over the top with it, for the fun of it.&lt;/p&gt;

&lt;p&gt;So the skills became a reactor of stars you can spin, zoom, and lock onto a single galaxy. The roles and the stack plot themselves across one timeline. The achievements are trophies, and the current objective - the next move - is a not-very-subtle nudge to email me. It is my real career underneath - the same roles, the same numbers, nothing invented - just wearing a silly costume.&lt;/p&gt;

&lt;p&gt;The one rule I set myself was no cross-over. The plain CV has to stay fast and accessible, ATS friendly, full marks in Lighthouse, readable by a screen reader and by a recruiter in a hurry. So the Board's Three.js loads in its own chunk that the main site never pulls - all the spectacle, none of the weight on the pages that actually matter.&lt;/p&gt;

&lt;p&gt;It is not subtle. My own games are live at Bitsler for much the same reason: sometimes the honest move is to build the thing nobody asked for, just to keep the craft sharp.&lt;/p&gt;

&lt;p&gt;Have a look, have a play. Then &lt;a href="https://sillitoe.co.uk/" rel="noopener noreferrer"&gt;read the real one&lt;/a&gt; if you want to hire me.&lt;/p&gt;

</description>
      <category>cv</category>
      <category>ui</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>My career history in 3D</title>
      <dc:creator>Stuart S</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:14:16 +0000</pubDate>
      <link>https://dev.to/57u/my-career-history-in-3d-1fo6</link>
      <guid>https://dev.to/57u/my-career-history-in-3d-1fo6</guid>
      <description>&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%2F2polkxd3f5dmglpn2a3n.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%2F2polkxd3f5dmglpn2a3n.png" alt="My CV 3D Scene Loader" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://sillitoe.co.uk/source/" rel="noopener noreferrer"&gt;/source&lt;/a&gt; view of my site is a journey through the years: you scroll back through my career and fall through a different room for each era. 2021-now is a dark sportsbook control room, a wall of screens waking up. 2013-2021 is a pastel town at first light. 2003-2013 is an agency studio at blue hour. 1997-2004 is my actual bedroom studio - two desks, a CRT, a modem blinking mid-handshake. The same career, the same facts, wearing rooms instead of paragraphs.&lt;/p&gt;

&lt;h2&gt;
  
  
  A scene has to be somewhere
&lt;/h2&gt;

&lt;p&gt;Each room is a Three.js scene, and the rule they all run on is simple: a 3D scene has to be an actual place, not a flat panel. A glowing card floating in the dark reads as a slide; a room reads as somewhere you could stand. So every era is built like a real set - materials that catch the light, a lamp that throws a true shadow, screens that emit their own glow, and a floor, a ceiling, and a little dust. That is where the craft lives: not in the effects, but in making the light and the materials behave, so a place feels lived-in rather than drawn.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A flat panel reads as a slide. A room reads as a place. That gap is the whole job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The journey ends in 1997, the way that machine actually drew anything: the picture collapses to a single dot of phosphor, and the tube's electron beam traces my logo onto the glass in one stroke before it fades. It is the kind of flourish a client brief never has room for, which is exactly why a personal site earns it.&lt;/p&gt;

&lt;p&gt;And none of it touches the pages that matter. The real CV stays a fast, plain, accessible page; every bit of the Three.js loads in its own chunk the main site never pulls. On a phone, or with JavaScript off, /source itself serves a fast static version - the full ride is a desktop indulgence, by choice. Over-build the toy, protect the tool. If there is a principle worth keeping, it is that one: render a place properly, or not at all - a flat hint of one is worse than none.&lt;/p&gt;

</description>
      <category>threejs</category>
      <category>vue</category>
      <category>portfolio</category>
      <category>cv</category>
    </item>
  </channel>
</rss>
