Journal Entries

(Page 1 of 9)

Assorted journal / blog entries.

One Night, on White Plume Mountain...

TL;DR — An overview of a recent one-shot RPG I ran, based on the classic module.

👓 8 minutes

A few weeks ago, I had the good fortune to run a one-shot version of Lawrence Schick’s classic AD&D adventure White Plume Mountain for some friends and family, and I thought I do a bit of a post-mortem on it here.


For context, this was my second attempt at running a classic module in a single session, the first one being my Halloween game from last year, One Night in Ravenloft. In that game, a party of adventurers (mostly made up of my old 5E group) practically strolled through Strahd’s castle, slaughtering everything that tried to stop them, before steamrolling the vampire lord himself. Heck, the automaton fighter “Gus the Party Bus” even stole a piece of Strahd’s iconic organ to give himself a “toot-toot” horn. It was a cakewalk.

So it was that mostly the same group signed up for One Night in White Plume Mountain. The idea was to run a 4-5 hour version of the module where the PCs have been hired to retrieve the 3 lost items from the wizard’s dungeon. Then, to put an extra time pressure on the game, I made the volcano somewhat more active than usual, intimating that they needed to get out before it blows (intended to happen at the “hard stop” time for the session, about 4.5 hours from the intended start time).

As per usual for my games, I ran it in Roll20 (with voice chat / memeposting via Discord), and since I had already purchased them, I used the excellent maps from the Tales from the Yawning Portal pack. Also as per usual, we used my custom B/X-inspired heartbreaker ruleset, HOSR.

I made several changes to the base module, “renaming” (and lightly re-theming) several of the named NPCs (ex: Burket the fighter became Bur-Ket the barbarian, Snarla the werewolf magic-user became Snar’la the werewolf bloodmage). I also changed the missing artifacts slightly, rebuilding them based on some ideas I’d been toying with from my astral campaign (I don’t particularly care for the “classic” rules for sentient weapons, but using elementals…). Of course, none of it got used in the actual session, but how was I to know…

One issue the first game ran into was not having all of the characters ready by the start time, so the session started early for those that still needed to finish their character builds. As we were using HOSR, the character creation was pretty quick, so by the start time (4.5 hours until deadline), all of the characters were ready with the exception of their GM gift: a random magic item culled from various sources (primarily OSE Advanced Fantasy). I usually have the list ready ahead of time, but it was one of the parts I hadn’t gotten around to yet, so… 30 minutes burned before we even started. 🤦

Finally, with just 4 hours left on the clock, the adventurers stepped into the dungeon.

Entering the Dungeon

To start out, I filled them in on some backstory, both from the adventure (the poem) and with my own twists on top. The fire priests warned of the impending eruption, and the white plume was turning yellow, so the eruption ws well-telegraphed. Additionally, they were blessed by one of the priests of Kud (the dwarven god of law associated with the missing hammer, Wylm, the Eternal Rest), who told them “as long as one remains, the quest may continue”, and gave them a bag of holding loaded with healing potions and scrolls (most of which they never used).

Their first stop was the (rather soggy) gynosphinx in area #2. Unfortunately for them, their reaction roll with her was a 3, which usually means a combat encounter, but since she was just “doing a job” (and based on some suggestions I found online), I played her as the most disinterested teenager I could, giving the party zero help (despite their frequent attempts at RP-ing something out of her). After much hemming-and-hawing, they chose the central hallway.

Finding the drain room (area #9), they decided to cast light on the party’s sole automaton, the thief Dungeon Ken. This turned out to be a good move on their part, as he continued to glow brightly over the rest of the session, serving as the requisite illumination for all of the darkvision-less party members. They found and turned the crank, starting the long process of draining, before continuing down the hallway.

The next room was the kelpie pool (area #10), which, to my mind, has to be one of the oddest encounters in the adventure: a pair shape-shifting seaweed women who can each cast charm only once per day and who use this ability to lure adventurers into the water so they can drown themselves. As far as I can tell, in the adventure-as-written, if said adventurer fails a lone Save vs Spells, they jump in the water and immediately start drowning (2d10 damage per round). This seemed… unfair, to say the least. So when Tarin, the dwarven thief, failed his roll and jumped in, I decided to treat it like a death save: he had to make Save vs Death each round to prevent himself from drowning (taking 1d8 damage per round).

The other weird thing about the kelpies is that there’s only two of them. In an adventure designed for 6-11 players, having at most 2 PCs cursed in such a way just seemed like an odd decision (almost as odd as not even giving them a simple claw attack or something to fall back on). Still, with one PC drowning and most of the rest afraid to jump in the water (lest they drown as well), this sequence took a while before mercifully coming to end (although the still-glowing Dungeon Ken was useful for finding the kelpies’ treasure).

With 2 hours left to go, the party reached the Spinning Cylinder of Doom (room #11). On a whim, Dungeon Ken ran and slid across the tunnel, safely landing on the other side, and encouraging others to do the same. This meant that, by time Bur-Ket tried to fire his flaming arrow, he already had 3 adventurers right next to him, including the tea-obsessed dwarven mystic Iroh, who (thanks to the Sword of Quickness obtained as a pre-game GM gift) managed to leap in front of the flaming arrow, preventing it from setting the rest of the group aflame.

As the rest of the party slid across the tunnel, those who had already made the trip picked the lock on the door to area #12 and busted in, taking on the bloodmage and her barbarian boyfriend. Tarin managed a critical hit with his dual light hammers, and before long, Bur-Ket was dead. This enraged his girlfriend, who promptly turned into a werewolf. Unfortunately for her, she was stopped by Kallor Zeph, the party’s nihilistic human cleric of Xar’Kos, who cast darkness on her eyes, blinding her, and giving the rest of the party ample time to finish her off.

Searching the dead couple’s inner sanctum in area #13, the party was disheartened to find only gems and coins, and no trace of any of the weapons they had come for. They knew time was running out (only about 45 minutes remained until the end of the session), so they rushed through the double doors (which had already been somewhat explored by Kallor, the human wizard Okalis “Okey” Baker, and the giantkin barbarian Olive), and headed into battle with the Beast of the Boiling Lake in area #17.

The party (mostly) tried to draw the Huge Giant Crab ™ away from the treasure in hopes that one of them could go grab it. Olive, in particular, took the beast head-on, wounding it some, but taking 3 claw hits in quick succession for her trouble, dropping her to 1 HP. At this point, Dungeon Ken decided to cast Wall of Stone from a scroll he had received as a pregame GM gift, wrapping the HGC in a 2’ solid stone wall. As we were already 5 minutes past the cut-off time, the party grabbed the trident Wha’yve, the Flood just as the volcano came to life, so they ran back down the hallway, headed back out the way they came, and made it out of the volcano with one of the three artifacts.

Or did they? I’ll get back to that.


So, how did they fair overall? If I had to award XP for their misadventures, I’d say:

  • They solved the sphinx’s riddle: 650 XP (for bypassing her)
  • They beat the kelpies and found their treasure: 175 x 2 (kelpies) + 600 (gold) + 2000 (necklace) = 2950 XP, and that doesn’t include the suit of chain mail +3 that no one wanted (and thus they intended to sell).
  • They defeated both Bur-Ket and Snar’la, and took their treasure: 175 (Bur-Ket) + 1250 (Snar’la) + 500 (gold) + 1300 (gems) = 3225 XP
  • They trapped the Huge Giant Crab ™ and took its treasure, including the trident: 1350 (HGC) + 1000 (gold) + 11,000(!) (gems) = 13,350 XP, and that doesn’t count the magical goodies they would have gotten:
    • Ring of Infravision (60’),
    • Luckstone,
    • Wand of Frost, and
    • Wha’yve, the Flood: a magical trident with an elemental bound to it, and one of the three main artifacts they were looking for.

That brings it to 19,525 XP, divided among 6 PCs = approximately 3300 XP each.


Looking back on the adventure, here are some key takeaways for me:

  • As much as it pains me to admit it, it seems that running games with more than 4 or 5 players on Discord / Roll20 is prohibitively difficult (at least for me). Between the long pauses, talking over each other, and waiting to see who’s going to make the first move, it took over 3 hours just to clear the first handful of rooms. I mean, I love getting everyone together like that, and some games work better for it than others, but I can’t see trying to run another online RPG like this for more than 5, and might even aim for 4 on my next one (possibly running it multiple times for different groups, if there’s enough interest).
  • I should definitely have had some pre-rolled magic items. I probably could even have used Necrotic Gnome’s own magic item generator just to figure out options, as that ate a full 30 minutes out of the game - at least enough time for them to start on another hallway (and get to know Wha’yve a bit, which they didn’t really).
  • Because of how my last few months of games have lined up, I haven’t run a good, old-fashioned #dungeoncrawl in quite some time. I forget sometimes that this is where the older systems really shine, exploring darkened (and flooded) corridors room-to-room, listening at doors while checking for locks and traps and secrets…

As soon as we were done, some of the players expressed an interest in going back in and trying to grab the other 2 items. Part of me wants to do that, but since the volcano exploded at the end, I feel like it’s not really a viable option without some type of “magical intervention”, so I guess it’s a good thing it’s a mad wizard’s dungeon

I’m thinking about treating it like Groundhog’s Day or Happy Death Day scenario: once they entered the dungeon, they got locked in a time-loop, and the only way to get out of it is to collect all 3 relics. Or maybe defeat the mad wizard Khyr-Aptis himself. Or maybe both! 😄

But, yeah, I could definitely see running this adventure again, possibly with a few more (slight) tweaks.

If nothing else, I think I’ll do another one of these types of adventures soon. As I mentioned before, I have the Tales from the Yawning Portal pack, and it includes maps for several iconic modules, so doing a One Night in the Forge of Fury (or the Sunless Citadel) might be an option… Or maybe even the dreaded Tomb of Horrors?

Anyways, I’d like to thank my players (as always) for putting up with me, my inane rulings, bizarre ruleset requirements (and exclusions), and other GM-ing idiosyncrasies.

Until next time…

Site Update: Welcome to the Grid!

TL;DR — Some details around the recent addition of a scrolling background grid to the site.

👓 2 minutes

Recently, I decided to try my hand at some CSS shenanigans, and spent a few hours replacing this site’s long-serving background image with a scrolling grid background.

I’ve been obsessed with digital grids ever since I first saw the movie Tron (presumably during its initial HBO release, when I was around 6). Tron and Flynn were some of my first heroes (they fought for the users), and I remember being blown away not just by the movie, but by being able to play the same game they play in the movie via the incredible Tron arcade cabinet. I distinctly remember going to the Chuck E. Cheese’s near our house and playing it, complete with the special blue joystick, and just like the movie, it was amazing. And it was all grids.

Tron Arcade Machine by Darth-Wiki-Man, used under CC-BY-SA
Lightcycle game, screenshot from Tron by Bally Midway

So that’s the “why”, as for the “how”…

The capabilities of #web rendering engines (AKA #browsers) have improved immensely over the last few years, particularly in the area of CSS effects. A link to a link to a link lead me to a couple of stack exchange questions and a collection of fantastic synthwave-inspired CSS effects. The next thing I know, I’ve replaced the site’s static background image with a scrolling one.

Except… I know that not everyone likes moving background effects, so the only responsible way to add an effect like that is with a toggle that allows the site visitor to turn it on and off at will. And the only responsible way to add an interactive toggle like that is via progressive enhancement: visitors without JS enabled (or those whose browsers don’t support <script type="modules">) will get just a static background grid, but those who do have JS get both the scrolling grid AND the toggle, tying the presence of the feature to the ability to disable it.

If you want to know more specifics, check out the commit on my self-hosted git server, in particular the changes to the scripts.js and styles.css files.

Because I, too, fight for the users.

Update: 2024-04-27

Since posting this, I’ve come to realize that the CSS-based grid solution I described above had some problems - most notably, the scrolling-performance hit, particularly on long pages. The simple presence of the affect was causing clipping issues and serious scroll-lag all over the site (really, any page longer than one vertical screen). Plus, the animations themselves had a tendency to get super-janky the longer they went.

Not as “user”-empowering as I’d hoped. 😦

In the end, I wound up trading out my pure CSS solution for an implementation that uses a tiny SVG file, as it is much more performant, while still allowing for color customization (I wonder why… 🤔). It’s a little bit “flashy”, but it’s still a decided improvement.

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. ↩︎

The Missing Magic Cards for any Doctor Who Deck!

TL;DR — I made some new magic cards based on Doctor Who.

👓 3 minutes

Last year saw the release of the “Universes Beyond: Doctor Who” set for Magic: the Gathering, which included 188 new (and mechanically unique) cards based on various doctors, companions, villains, and other characters from the long-running TV show(s). As a lifelong Whovian[1], I thoroughly enjoyed the set and loved how they wrote each cards mechanics to be representative of the characters. Yet I couldn’t help but notice that a few characters were missing[2] (well, one for sure, the second only in a vaguely-related way, but I digress…). At the same time, I stumbled upon the highly-functional (if somewhat overly ad-encumbered), so I thought - why not make the missing cards myself?

Of course, unlike my usual custom card fair, I wanted something that would still be legally playable (or at least, legal in my weekly Magic game), so I decided to make them as Skinned Cards - that is to say, skinned version of other, legal (real) magic cards. This allows me to use them as proxies for other cards I already have in my collection.

In truth, both of these are also in my “15 Doctors / Tribal Timelords” deck (coming soon), and coming up with themed proxies just makes them fit better with the rest of the cards.

Jack Harkness, Torchwood Captain

First up is everyone’s favorite flirtatious immortal, Captain Jack Harkness. His omission was a grave mistake, IMHO, but making a proxy for him almost broke me. After sorting through the 683 legendary humans in the Gatherer (as of writing), I finally found the one that had just the right abilities (and subtypes):

Dr. Who, Eccentric Scientist

The second one came about a bit differently… I started working on (what would become) the 15 doctors deck about a month after the set dropped. It was basically the best cards from the Blast from the Past and Paradox Power decks, plus a handful of singles for the missing doctors and other Timelords, and next thing I knew, I had a 5-color deck full of Timelords and their companions… That is to say, legendary Timelords and their legendary companions… Hmmm…

So, who do you choose to lead a tribal legendary deck? Only the best commander the job, Jodah the Unifier[3]. But he’s a human wizard, how can I tie that in the any version of Doctor Who?

And that’s when I remembered the strange, Technicolor-saturated Peter Cushing “Dr. Who” movies of the 60s, wherein the good Doctor is actually a weird, whimsical, human inventor who fights off evil alien robots with his time machine, a description close enough to a “wizard” for me:

I hope someone enjoys these and finds them useful. If you do like them, you may also like my other custom magic cards. And a word of advice: if you want to get them printed at your nearest corporate print-shop, you’ll probably want to use the “self-service” copiers to avoid any uncomfortable conversations with the staff about copyright and fair use.

Oh, and while I was working on these, I went ahead and did another round of custom (and completely broken) Saturday Night Planeswalkers.

Until next time, share and enjoy!

  1. Back in the 80s, PBS used to run classic who episodes in 3-4 hour blocks which I distinctly remember watching with my father and being absolutely terrified of. Needless to say, I’ve loved the show ever since. ↩︎

  2. Most likely due to rights issues. ↩︎

  3. Really, how hasn’t he been banned yet? He’s so broken in Commander, but he’s too powerful not to use him for certain decks. ↩︎

My Cyberdeck

TL;DR — My custom "computer" from a future that never was...

👓 6 minutes

Posted: August 14, 2043

After spending the last few months collecting parts, I was finally able to piece together my new cyberdeck over this weekend, and I must say, I’m pretty pleased with the result. Most of the equipment I used is vintage (or, as some might call it, “outdated junk”), but it supports a number of different data formats and interaction modes, making it handy for a variety of uses.

The main unit is a Tec<Net Walkabout T4 portable terminal with an upgraded Sino-Logic 16 processor (replacing the original 12-core version). Additionally, I ripped out the old port interface module and replaced it with a new one from OdaCom that supports USB-6X, SimStims, about 12 different kinds of ISO-chips, TriD, and even HDMI-Classic (so I can plug it in to any of the old displays in my workshop). Unfortunately, the original display on the Walkabout was cracked, and since I wanted it to be portable, I had to replace the screen with a 20-year-old (pre-merger) Samsung Android that I hardwired into the display adapter. I mean, it’s only a Super AMOLED screen (so, only 2D content), but it’ll work for now (maybe I’ll have better luck the next time I go to the E-Cyc center).

The cyberdeck, running a shell.

Software-wise, I decided to stick with what I know, and that was EncomOS. I’ve been using that particular flavor of GNU/Linux since the Meta / Microsoft merger and the Zuckerberg Affair, and since I already had root access to the Walkabout, it was an easy update to make.

As I said, I’m very happy with the end result, but I honestly I don’t know if I’m finished yet. I was going to put a GPL Stealth Module in it, But I may wait until I actually need it (especially since the crypto-cops tend to hassle anyone carrying one anymore). Likewise, I could replace the display with a short-throw holoview, or even plug a set of Thompson Eye-Phones in to the Hub, but I’m comfortable enough in both shell and 2D GUI to get by without VR for most activities (plus, since the optical data cord is hot swappable, I can always plug in the Eye-Phones in when I want the full XR experience).

I’ve embedded some more images below, in case you want to see more. As I said, I’m quite happy with the finished product, and have already started thinking about what to add to the next version.

I’ll keep sharing updates on any future improvements I make to it.

The cyberdeck, booted into self-test mode.

OK, it obviously isn’t 2043 (yet), but the images above are real, and I really did “build” a cyberdeck (several years ago, in fact).

At present, the “brains” of the device is a Samsung Galaxy s23 smartphone, connected via USB-C to a hub. The hub, in turn, is connected to a TeckNet Heavy Duty back-lit keyboard via a USB cable and is physically attached to it via silicon and Sugru. A 2600 mAh power bank that I picked up cheap a few years ago is also glued to the keyboard, and a metal brace is attached to both the keyboard and power bank, giving it some stability, as well as a place for the phone mount to attach (via magnets).

Middle view showing power bank and USB modem.
Left side-view showing the modem’s phone jack.

The hub has 2 USB-3 ports (one of which is dedicated to the keyboard, but that’s OK), a TF card slot, an SD card slot, a USB-C charging port, and an HDMI port. Overall, the device is lighter than a notebook but more tactile than a glass screen, and sits very easily on my lap.

Right side-view showing USB hubs, one with an HDMI out, and the other with an ethernet port.

I had originally intended to attach both the USB hub and phone mount to the keyboard via some kind of tab-and-slot sliding mechanism (not unlike how Joy-Cons attach to the Nintendo Switch), but I couldn’t find the hardware I would need to implement it. Still, if I do another one, I’d like to explore that as an option, making the whole device more modular (being able to swap out different USB hubs for different needs, and maybe alternate mounts, so I could use a tablet instead of my phone).

I built it over the past couple of years, and actually went through several updates along the way (improving the hubs and phone holster).

Early prototype build.
WIP on the 'deck.

I’m sharing it now because I’m entering the Hackaday Cyberdeck contest (my entry). This post is mostly the same info that’s over there.

Of course, it’s not perfect - it’s not as durable as I’d like it to be, and it’s not exactly easy to carry. My hope had been to mount the whole thing to either some kind of metal frame or plate (a la a hiking backpack, but smaller), providing some much need structural support (and stable grips to hold on to), but I could never find what I was looking for. Plus, I built it before my current obsession with mechanical keyboards, so while the keyboard is nice, it doesn’t have quite the desired click.

But, all-in-all, it was a fun project to put together, and it’s come in handy more thana few times (when I was between machines, or waiting on repairs).

How well does it work?

Overall, I think it works well. Although the small screen limits some of its functionality, the relative simplicity of a phone-based system does lend itself to certain tasks, like journaling and shell-based interfaces (like MOSH), two things I like to use it for. A previous iteration of this design was powered by an S9 which even ran a web server (a virtual machine running nginx and nodeJS), and the keyboard was useful for direct access to the shell.

At the end of the day, the phone is a very powerful device in-and-of-itself, and the added functionality that comes fromt he hubs (whether for extra memory, peripherals, or even an external monitor

Plus, because it’s a Samsung phone, plugging it into a monitor activates DEX mode, a Desktop-like EXperience (see what they did there?) with multiple windows, background apps, and touchscreen controls (or support for an external mouse, if that’s your thing).

[picture of the keyboard hooked up to an external monitor, running dex]

Running DEX on the 'deck.

Of course, it still has some practical issues - running the external monitor drains the battery from the phone, even when plugged in.

But the overall experience, as far as I’m concerned, is quite #cromulent.

I even wrote most of this post on it.

Cyberdeck as writing machine.
WIP on this blog entry.

Does it support VR?

It does, or it did, sort of, but not for long.

Given that the phone is the brain of the “device”, any USB-C compatible phone can be plugged into it. The previous brains for the device were a Samsung Galaxy S9 and S10, each of which could plug into a Samsung Gear VR.

Unfortunately, Samsung discontinued it, so it doesn’t work with the s20 (the current brain) or later. I keep hoping that these devices will somehow get “opened up” with later non-standard firmwares and enable something like the failed Project DayDream to live up to it’s full potential.


In the end, I haven’t used it much - it’s too unwieldy to take anywhere, and if I’m honest, I don’t do alot of mobile computing where it would be useful. I had planned to address the first issue by mounting the device on a metal frame, and maybe I will if I ever work on a v2, but for now, it remains sans handle or reinforcing structure.

And so it mostly sits, collecting dust… just a souvenir from a future that never was.

Atari BASIC Colleen (an 8-Bit emulator) running on the cyberdeck.
Termux (a shell emulator) running on the cyberdeck.