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.
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 exchangequestions 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.
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: .
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):
Play some kind of music / sound
Be viewable
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?
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) MTGCardBuilder.com, 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.
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).
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.
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).
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.
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).
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]
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.
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.
Conclusion
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.
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.
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).