Journal Entries By Tag: #code

(Page 1 of 2)

Assorted journal entries with the tag #code.


2025 - A Year in Review

TL;DR — Taking a look back at the the things I fiddled with in 2025.

👓 4 minutes

So, 2025 has obviously been a doozy of a year. I’ll let future historians put it into its proper context, but being in the middle of it wasn’t always easy, and sometimes it felt like the best thing to do was just to stay busy.

However, in this push to stay busy, it appears that I forgot to post anything here at all for over 365 days.

So now, on this, the final day of this banner year, I thought I’d share a brief rundown of the various things I’ve been fiddling with since the year began.

  • The year started out with the publication of the beta version of my RPG website, PlanarVagabond.com, featuring updated rules with aa unified skill check mechanic and the addition of a metric tonne of new content (something I would continue to add as the year progressed).
  • About the same time, I ended our Isle of Dread mini-campaign (or rather, the players did, by killing and/or gaining control over the big baddies and finding the means to rule the island and/or return home).
  • In the spring, I started my first truly collaborative (mini?) campaign, set at the prestigious Hexhall, Royal Academy of Faerie Arts and Arcane Sciences, a school which exists in both the material plane and the Faewolde. It’s also a special campaign to me, as it’s both the first in-person game I’ve run since the pandemic, and the players are my son, my daughter, and my daughter-in-law (a first-time player).
  • Also this spring, at the suggestion of my son, I picked up a lightly-used Backbone mobile controller. Combined with a “spare” Galaxy S23 (which I loaded with emulators) and a pair of Raycon headphones he gave me for Father’s Day, it’s been my game system of choice ever since.
  • In June, as part of a code challenge for my employer, I wrote and released Maze of the Minotaur, a web game which also stands as my first my first (and, to date, only) Android release.
  • Also in June, I started running some players through the classic D&D module, Tomb of Horrors. Although it was intended to be a one-shot, we’re now up to 3 sessions, no one has died (yet), and there’s still a good bit left of the crypt, so… it’s turning into a mini-campaign after all. Who knew? 🤷
  • This July brought an update to Camp Happy Island Massacre as I migrated its web runtime to js-dos, enabling it to run more smoothly, and on more machines.
  • In late summer, I finally completed a long-running, off-again/on-again project, and (briefly) launched the Deus Reloaded BBS. Unfortunately, I ran into some technical issues which made it effectively useless, and I shut it down shortly after launching it (I might go into the story a bit deeper in the future).
  • Fall brought a new obsession: the humble twtxt.txt file, a decade-old “decentralised, minimalist microblogging service for hackers.” The simplicity of the concept really inspired me, and I started working on several iterations of both my own twtxt.txt file, as well as utilities to read, write, process, and display those files:
    • TwtKpr: A small node application to view, edit, and update a twtxt.txt file (pronounced “TweetKeeper”, still WIP).
    • TwtStrm: A small node application to load, parse, and display the content from all of the twtxt.txt files followed by a single source file (pronounced “TweetStream”[1], also still WIP).
    • fluent-dom-esm: a small client-side JS library (published via jsr.io) that provides a fluent, jQuery-like interface to the modern browser DOM.
  • In early November, I ran my third annual (and likely final) rendition of the Halloween one-shot, One Night in Ravenloft, this time played with a twist of cosmic horror via the introduction of Neurovores (aka creatures that Flay Minds). Also, I had enough players for two sessions this year, with both ending in defeat for the forces of evil once again.
  • Earlier this month, I participated in the Advent of Code. I ran out of steam about 2/3 of the way through, but I fully intend to finish my solutions as time permits (maybe even over the remaining holidays).
  • Finally, concurrent with the release of this post, I made a few small updates to this site, adding links to my twtxt.txt file to several pages, updating my /now page, and adding a Code Page to collect my libraries and code-related links together.

So, what about 2026? What projects might see the light of day before the calendar turns again?

  • I’d really like to finish (and release) TwtKpr and TwtStrm: both are fully functional, albeit somewhat rough in terms of user experience, so with a bit of polishing, I hope to have them ready to turn loose in the next year.
  • I’m also close to finishing a long-simmering project: an actual Planar Vagabond’s Guide to the Multiverse zine! I’ve got issue #1 mostly laid out and ready, but I’d really like to at least get started on a couple more issues before I release anything (just so I can keep things organized over the long-term).
  • I’ve been playing with the fantastic A-Frame library a bit on the side, trying to create immersive experiences inspired by my hazy recollections of 90s VR (and VRML, in particular), so maybe something will come out of that which is worth sharing…
  • I’m working on some fairly major updates for Planar Vagabond, introducing a series of classes with a unified, roll-to-cast, freeform magic system, along with (maybe, hopefully, finally) publishing rules for summoning and binding elementals (including demons).
  • I plan to run a few one-shots this year, including possibly writing a new halloween one-shot (based on my experiences with the previous Ravenloft games).
  • Finally, I hope to start up another mini-campaign, potentially set somewhere other than a medieval-fantasy world (maybe something modern supernatural, or post-apocalyptic cyberpunk, or even post-post-apocalyptic science fantasy 😮).

Of course, these a just the ideas I have right now - who knows what new depravities will seize my crazed imagination as the year unfolds?

I guess we’ll have to wait and see.


  1. Although, during testing, it was occasionally referred to as “TweetStorm” by those who were spammed by it, which I again apologize for. 😃 ↩︎


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.


The Mythic Wars Have Begun!

TL;DR — My new card game has been published, so I wrote a card database for it.

👓 2 minutes

TL;DR - I made a game and got it published, so I made an app to help people play the game, and published that, too.

ICYMI, the card game I designed and ran a Kickstarter for was finally published a few months ago.

<gratuitous-plug> It’s called Mythic Wars: Clash of the Gods, and it’s available now at many fine gaming stores, or directly from either the Excalibre Games website or Amazon! </gratuitous-plug>

I had alot of fun designing and playtesting the game, and I’m quite pleased with the finished product. While I admit that I found the entire Kickstarting and publishing process to be somewhat less fun (and quite eye-opening), overall, the fact that I can now hold my game in my hands (and see it for sale at my friendly local game store) makes me enormously happy.

My game, on a shelf, AT A STORE!

Since I am a code monkey by trade (and a web developer by choice), I wanted to complement the game’s publication with the release of a simple, searchable database of all of the cards available for it. Taking inspiration from the Gatherer, the official database for Magic: the Gathering cards (the best example of such an application that I’m aware of), I mocked up something over the course of weekend, tweaked it over the course of a couple more weekends, and soon, The Codex Mythica was born.

It’s my first publicly-available Node / Express application, so the code’s kinda ugly, but I think it has some neat features, like a responsive layout designed to work well on different screens and devices, and a category-based searching / filtering system for sorting and selecting cards (along with the obligatory word search functionality). Plus, each card has links to both its art and to the Wikipedia entry for the its subject (or the Lovecraft wiki entry, in the case of some of the Outer Gods and their minions).

It also (finally) gave me an excuse to share something on GitHub! You can find it at https://github.com/ItsEricWoodward/codex-mythica

<gratuitous-plug> So, if you like games about gatherings of mages, ascended beings, or worlds where war is crafted, check out Mythic Wars: Clash of the Gods, available now at many fine gaming stores, or directly from either the Excalibre Games website or Amazon! </gratuitous-plug>

(Sorry, I’m contractually obligated to get in one more of those.)

Anyways, if you have any suggestions for The Codex Mythica, feel free to open an issue on GitHub or drop me a line (I can’t guarantee I’ll implement it, but I always appreciate the suggestions).


Fatigue and Mastery

👓 less than 1 minute

Tero Parviainen has a nice piece about Overcoming Javascript Framework Fatigue, but don’t let the title fool you - much of the advice can be applied those who work (and live) in most any rapidly-evolving field. Plus, it contains one of the best quotes from Rich Hickey (the creator of Clojure) about what skills a developer really needs to have (and those skills have nothing to do with preferred language or framework):

Programming mastery has little to do with languages, paradigms, platforms, building blocks, open source, conferences etc. These things change all the time and are not fundamental. Knowledge acquisition skills allow you to grok them as needed. I’d take a developer (or even non-developer!) with deep knowledge acquisition and problem solving skills over a programmer with a smorgasbord of shallow experiences any day.

Via JavaScript Weekly


Smartphone Cryptogeddon

👓 2 minutes

After yesterday’s Senate committee hearing on encryption, wherein both FBI Director James Comey and New York County District Attorney Cyrus Vance Jr. made some pretty nasty comments about strong encryption on smartphones and the apocolyptic-problems it could bring, I thought it might be a good idea to remind everyone of what Representative Ted Lieu of California said back in April about why some users wanted smartphone encryption in the first place:

Why do you think Apple and Google are doing this? It’s because the public is demanding it. People like me: privacy advocates. A public does not want an out-of-control surveillance state. It is the public that is asking for this. Apple and Google didn’t do this because they thought they would make less money. This is a private sector response to government overreach.

[T]o me it’s very simple to draw a privacy balance when it comes to law enforcement and privacy: just follow the damn Constitution.

And because the NSA didn’t do that and other law enforcement agencies didn’t do that, you’re seeing a vast public reaction to this. Because the NSA, your colleagues, have essentially violated the Fourth Amendment rights of every American citizen for years by seizing all of our phone records, by collecting our Internet traffic, that is now spilling over to other aspects of law enforcement. And if you want to get this fixed, I suggest you write to NSA: the FBI should tell the NSA, stop violating our rights. And then maybe you might have much more of the public on the side of supporting what law enforcement is asking for.

Then let me just conclude by saying I do agree with law enforcement that we live in a dangerous world. And that’s why our founders put in the Constitution of the United States—that’s why they put in the Fourth Amendment. Because they understand that an Orwellian overreaching federal government is one of the most dangerous things that this world can have.

It might be worth point out that Rep. Lieu is one of four House members with computer science degrees, is a Lieutenant Colonel in the United States Air Force Reserves, and served for four years as a member of the Judge Advocate General’s Corps, making him (IMHO) someone knowledgeable in this area.

And it just so happens that fourteen of the world’s top computer security experts agree with him, but who’s counting.