Journal Entries By Tag: #web

(Page 1 of 3)

Assorted journal entries with the tag #web.


My first WebToy - the BPS (Bill Paxton Soundboard)

TL;DR — I've written a small HTML5 Soundboard themed around the late actor, Bill Paxton.

👓 3 minutes

Ever since the early days of JavaScript (remember document.layers?), Iā€™ve been interested in building web applications, from the complex to the trivial. In that time, Iā€™ve built more signature generators, magic 8-balls, and die rollers than I care to mention. But, apart from the tools at Planar Vagabond, most of these #WebToys are lost to time (or sitting on some 3/4 full hard drive waiting to be rediscovered).

Until now!

Iā€™ve decided to start archiving them here, in my lightly-tended digital garden, under the heading of WebToys (a moniker chosen based on their dubious utility). And the first #WebToy is a project Iā€™ve had in mind for over 25 years, but that Iā€™ve just finally put the 4-ish hours in to complete: .

The BPS (Bill Paxton Soundboard)

Back when I was in college (circa 1997), a friend of mine and I would often discuss ideas for ā€œfunā€ (and typically useless) computer programs. One night, one of us suggested a virtual See-and-Say themed around quotes from the great character actor, the late Bill Paxton. Of course, writing such a program wasnā€™t worth the effort (especially circa 1997), so we just kind of chuckled and forgot about it.

Fast-forward to 2024: the company I work for has a ā€œUI Developers Guildā€ (for those interested in bettering their development skills), and they recently started running coding challenges, both to drive engagement with the guild and to give the coders a chance to do something non-work related. This particular challenge had 3 simple rules (copied verbatim below):

  1. Play some kind of music / sound
  2. Be viewable
  3. Donā€™t work over 4hrs!!!

After briefly contemplating what to offer as my entry for the challenge, the idea from college bubbled back to the front of my brain, and I thought, ā€œthis is my chance!ā€

The rest, as they say, is history.

Work Breakdown

  • One hour thinking through the concept and writing the rough draft player.js and main.js modules;
  • One hour to turn draft into MVP, addressing layout and audio issues;
  • One hour to add images and expand the audio selection; and
  • One final hour[1] to add mobile support and some light documentation.

Now, this is obviously not the first Bill Paxton soundboard on the #interwebs, nor is it the most comprehensive. But, unlike the ones in the App or Play stores, mine doesnā€™t require any scary permissions, and wonā€™t track you relentlessly. And, unlike other web-based soundboards, mine has no advertising, andā€¦ wonā€™t track you relentlessly. So maybe mine is better, at least in some ways. šŸ˜„

Plus, releasing it here doubles as my entry into the aforementioned coding challenge, so win-win!

With a few more hours work, Iā€™d probably turn it into a PWA and add full offline support (caching the sounds and images in localstorage), or maybe disable the buttons until the previous sound is done, butā€¦ thatā€™s for another day.

I suspect Iā€™ll wind up creating (or finding) other similar small #WebToys in the future, and when I do, Iā€™ll add them here. In the meantime, Iā€™m open to suggestions: what other tiny, useless programs does the world need more of?


  1. Of course, it took an additional couple of hours to move it to my website and actually get it out on the web, but those steps were technically outside the scope of the original project, which only required a codepen, so I donā€™t count that. ā†©ļøŽ


Case In Point

TL;DR — A short post about the recent site outage and the new fan I acquired for the server.

👓 2 minutes

Last Sunday evening, quite out of the blue, the web server that hosts this site started making a horrible whining noise. A quick finger-check determined it was the fan making the noise. I tried to clean the unit (and the Pi4 beneath it) with some compressed air, but alas, the damage to the fan had been done.

My Pi4 webserver, heimdallr, in its original glory.
Top view of heimdallr, so you can see both the pins and the fan that would fail.
A slightly-blurry bottom view of heimdallr, from back when it had 4 screws AND 4 little rubber feet.

Thanks to the magical delivery gnomes, a replacement case arrived the very next day (well, technically it was the following night, which was unfortunately about 2 hours too late for Monday Nightā€™s session of Planar Vagabond, but close enough). So, Tuesday morning, I started swapping the old case for the new one, and 15 minutes later, it was back online.

After some looking around, I went with a ā€œICE Tower Coolerā€ by GeeekPi. It was relatively inexpensive, easy enough to put together, and the LED in the fan adds a distinctive, #cyberpunk vibe to the machine (particularly compared to the somewhat professional-but-pedestrian original case).

The updated heimdallr, showing off its new LED powers.
Another view of the updated heimdallr and its color-changing fan.
Rear-view of the updated heimdallr, proving it looks just as cool from the back.
Video of the updated heimdallr booting up.

Site Updates - Now with More Magic and LibreJS Validation!

TL;DR — I added some new content (including custom Magic and Illuminati cards, and an expanded blogroll) and did some JS housecleaning.

👓 less than 1 minute

A couple of website updates to announce:

While I was fixing the client code, I went and disabled my (already broken) concatentation and minification script, opting instead to serve up all 8(!) JS library files individually (and, thanks to HTTP/2, concurrently)

I mean, Iā€™m using minification for the libraries Iā€™m importing (Iā€™m not a monster), but I donā€™t use it for the (small) bit of code that ties those libraries together and makes the site work. This way, anyone can see how (and why) the site works the way it does, as it should be, and all without the added complexity of generating source maps or similar unnecessary complications.

And for those minified libraries, Iā€™ve provided a link to each libraryā€™s repo and added automated license info, so the LibreJS validator gives this site a āœ…. #FreeSoftwareWin !


Killing Thur

TL;DR — I've removed the "Thur" section of the website because I'm ashamed of some parts of it.

👓 2 minutes

After hosting it here for the better part of a decade, Iā€™ve decided to remove my RPG, Thur, from this site.

Thur was an RPG that I ran while I was in college, a custom system set on a world of my own design, full of all of the stuff that I thought was cool at the time (and still do, for the most part): Fremen, ninjas, Gunslingers, psychics, wizards, aliens, mutants, technomages, tears in the space-time continuum, a global economy (and shared culture) based on huge teleportation gates - all kinds of gonzo stuff.

I ran several adventures as 1-on-1 games with a former friend of mine, and ran a couple of sessions other friends, but eventually the demands of full-time work and parenting didnā€™t leave me with much RPG time, so I shelved it. I pulled it out about a decade ago when a friend was getting into Pathfinder. We played a couple of sessions, and that was when I published it here. However, since the rules were never really fully fleshed-out (and thanks to some bad writing on my part), the game fell kinda flat, and so was shelved again, where itā€™s remained since.

So, what changed? A few things.

As I said before, the rules were a hot mess, with the magic system in particular in shambles. Incomplete as it was, I probably should never have published it here in the first place.

Additionally, my thinking on rules has evolved over the years. Iā€™m now much more interested in simpler systems that donā€™t systematize flavor (thus leaving more of room for roleplaying). Iā€™m also more into tweaking existing rulesets over building entirely new ones, since itā€™s easier to introduce new players (and bring back old ones).

But honestly, the main reason I took it down is because Iā€™m genuinely ashamed of some of whatā€™s there. The version of me that wrote most of that was younger, dumber, and had a far-simpler (and naively incorrect) conception of the world at large. He was also far more casually racist, and for that, I am truly sorry.

So, I took it down.

It may come back, it may not. If it does, itā€™ll probably be in a very different format from what it was before, like an online zine for OSE (so others can play), but that wonā€™t happen until after Iā€™ve made it into something I can be proud of.


Web Site Re-Re-Re-Relaunch!

TL;DR — Website maintenance navel-gazing.

👓 2 minutes

Greetings, and welcome the bi-annual tri-annual periodic relaunch of my website!

Yes, after a few years of neglect, I finally got around to updating it again.

Like the last few versions, itā€™s mostly a static site generated by Javascript. The biggest change with this iteration is the lack of a central library for doing all of the heavy-lifting. No more harp or gulp - instead, Iā€™m using a hodge-podge of different, smaller libraries (like ejs and front-matter) which I string together via a series of fairly short js files, (mostly) all using modern async and await code to do things in the right order.

The end result is that itā€™s bad fast, taking the build time down from 10+ seconds to under 2 (although that may not be a fair comparison, as it doesnā€™t do everything the gulp version didā€¦ yet).

Some of the biggest changes under the hood:

  • I replaced marked and commonmark.js with the better fit (for me) markdown-it,
  • I simplified many of my templates, purging a number of unneeded partials,
  • I made each journal entry link to the two chronologically-nearest entires,
  • I upgraded most of my config files to use json5 (the self-proclaimed ā€œJSON for Humansā€), and
  • I added a now page (inspired by nownownow.com).

Once I get the source code cleaned up a bit more, Iā€™ll post it in a public git repo.

Iā€™ve got some more ideas for what to do next, like adding in-browser file editing, a homespun blogging engine, and expanded IndieWeb support (most likely via the IndieKit project) with an eye towards IndieAuth, MicroPub, and WebSub.

Itā€™s all part of my (continuing) attempt to rest control back of my social-media-life from the corporate silos.

Along the way, I hope to grow the content-side of this web presence as well, so keep on the lookout for more new stuff, like:

  • notes from my various RPG campaigns,
  • homebrew for D&D and OSR games,
  • my custom Magic cards,
  • some hardware stuff Iā€™ve been playing with,
  • and a whole lot more!

Thanks for stopping by!