Today was one of those days where life quietly shifted direction without asking permission first. Nothing dramatic happened. No major announcement. No singular defining event. Yet by the end of the night, things somehow felt different.
Dreamy Audio
Yesterday had been long, and I woke up this morning feeling groggy and disconnected. I had an odd dream lingering in my head. It was the kind that feels meaningful for about five minutes before reality dissolves it away. Before it faded completely, I grabbed my phone and recorded myself talking about it. Maybe someday I’ll reboot Dreamy Audio. I’m not sure yet, but I wanted to preserve the feeling while it was still fresh.
Canceled Meeting
Not long after waking up, I saw that a meeting I was supposed to attend at the lodge had been canceled. Oddly enough, I felt relieved. The schedule around here has been relentless lately, and suddenly having a pocket of unexpected free time felt like someone had cracked open a window in a stuffy room.
1970’s Music & Video Jukebox

A little later, the director at Stone Branch Center for the Arts sent me a Facebook Marketplace listing for a jukebox she was picking up that afternoon. Her question was simple: could something like this be modernized with a Raspberry Pi?
Absolutely.
I replied that it was definitely possible, and that something like Plex could probably be integrated for streaming media. Then curiosity took over and I started researching the machine itself.
The listing barely identified it. One front-facing photo. A short description:
“1970’s Jukebox. Spins but doesn’t play. Would need to be looked at but otherwise in good condition.”
The front panel read:
“Welglein Musick Machine”
“200 Video & Record Selections”
That word “Video” instantly grabbed my attention.
Video? In the 1970s? What exactly was this thing playing?
I ran into problems searching for “Weglein Musik Machine,” so I focused on the “200 Video & Record Selections”. The deeper I dug, the stranger and more fascinating it became. Eventually, I narrowed it down to a Rowe AMI R-91 Music Video Jukebox. It looks like someone added the “Weglein Musik Machine” sign to make up for a lack of selections. There is a 13 x 8 grid of selections, with four items missing in the bottom center row, for a total of 100 selections, or 2 per cell. Apparently, these things were enormous. Multiple people online described them as unbelievably heavy, which turned out to be very accurate later in the day.
I also found a video in which someone modernized the R90 model using a Raspberry Pi. They wired the jukebox selection buttons into a keyboard encoder board so the machine essentially acted like a giant arcade controller. That immediately clicked with me because I had done almost the exact same thing years ago with my mini bar top arcade cabinet.

It’s funny how technology loops back around sometimes. The same tricks used to make arcade buttons emulate keyboard presses can suddenly breathe life into a forty- or fifty-year-old jukebox.
I think the “Video” part of the jukebox is probably a later addition. I’ll have to take a closer look at the exact model number and what is inside to get a better idea of what it is exactly.
Sons of the American Revolution & Lego Users Group
Not long after that, a friend messaged me asking what the Sons of the American Revolution was doing on May 23rd. I sent over the brief notes I had: we would be at Dogs of War and then in Front Royal afterward.
Dogs of War is usually held at the humane society each year. Even before joining SAR, I regularly attended events organized by Skip Rogers. I’ve always had a love for dogs, especially highly trained working dogs.
At the same time, we were realizing that the second event conflicted with our monthly LEGO Users Group meeting at the library. We ultimately decided to reschedule the meeting for later in the afternoon, and thankfully the library was able to help move the room reservation around.
Honestly, I’ve felt a little guilty lately about not taking the reins and driving the club forward as aggressively as I once did. But between the exhibit, volunteer work, websites, meetings, research, community events, and everything else, my friends keep reminding me that I need to learn how to say “no.”
Maybe delegation is healthy.
Maybe stepping back gives other people room to step forward.
Part of me also wants to be careful because of my role at the library. I never want the club to receive preferential treatment because of my connections there. Having others take more ownership helps create a healthier balance, and I’m hopeful this shift gives my friend more of a leadership role while still allowing me to assist whenever needed.
A few minutes later he confirmed the library had successfully rescheduled the room, and not long afterward I saw the update appear in the Facebook group as well.
Accordion Troubleshooting
I cracked open the accordion that the director of Stone Branch gave me. It took a while, but I found that I had to pull our four pins from the sides to look inside the bellows. Three of the reeds had detached from the bottom. From the looks of it, they hadn’t detached recently, but were already loose, and some of the felt on other reeds were missing, allowing air to play through them in both directions. I saw many things that were concerning, but I also had an idea to make it programmable, with a roll of punched holes sliding across the top holes.





I now know the problem. I can glue the parts back together, but I’m unsure of the correct placement for some of them. There is also an issue of missing flaps for many of the reeds that I would need to address. For now, I just set the instrument aside and work on other things. I want to understand what’s going on and whether it’s a simple fix.
Graphical Website Template
With one of my meetings canceled, I suddenly had more uninterrupted time at home to continue working on Restoring the Signal’s website.
Today’s work mostly revolved around visual structure and interface design.
I built a secondary framed panel system with alternate border styles and added a decorative horizontal divider that visually blends into the borders instead of looking like a traditional horizontal rule. Underneath, the code is deceptively simple:
<hr class="split">
But the CSS behind it is doing a lot of work. The ::before and ::after pseudo-elements use decorative imagery to connect the divider into the surrounding frame design so it feels more architectural than functional.
.card.secondary > hr.split::before, .card.secondary > hr.split::after { background-image: url("images/card-secondary-border-middle-right.png"); width: 17px; height: 23px; content: ""; position: absolute; right: -1px; top: 0; background-position: center; background-size: contain; display: block;}.card.secondary > hr.split::before { left: 0px; position:relative; z-index: -2; transform: scaleX(-1); right: unset;}.card.secondary hr.split { height: 23px; background-image: url("images/card-secondary-border-middle.png"); background-repeat: repeat-x; background-position-y: 10px; background-size: auto; left: -10px; right: 10px; width: calc(100% + 20px); position: relative; border: none; margin-block-start: 0.5rem; margin-block-end: 0;}
I also started reusing some of my existing icons throughout the secondary card layouts. Instead of displaying the original graphics normally, I reduced them in size and applied masking techniques so they appear more like silhouettes.
<h1 class="center"> <span class="icon microphone"></span> Recent Contributions</h1>
.card.secondary h1 { text-transform: uppercase; font-size: 0.7222rem; margin-block-start: 0; margin-block-end: 0; display: flex; align-items: center; gap: 0.4em;}.center { text-align: center; justify-content: center;}.icon { --icon-image: none; --icon-width: 0; --icon-height: 0; display: inline-block; flex: 0 0 auto; background-repeat: no-repeat; background-position: center; background-size: contain; width: var(--icon-width); height: var(--icon-height); background-image: var(--icon-image);}.icon.microphone { --icon-image: var(--icon-microphone); --icon-width: var(--icon-microphone-width); --icon-height: var(--icon-microphone-height);}.card.secondary h1 .icon { background-image: none; background-color: #070604; mask-image: var(--icon-image); mask-repeat: no-repeat; mask-position: center; mask-size: calc(var(--icon-width) * 0.6842) calc(var(--icon-height) * 0.6842);}
What fascinates me lately is how much CSS has evolved.

I remember when selectors, hover effects, and animations felt cutting-edge. Now we have variables, calculations, masking, layered effects, dynamic sizing, pseudo-elements, and increasingly complex layout systems. CSS no longer feels like simple styling instructions. It’s starting to feel like an actual programming language designed entirely around visual behavior.
After the borders and dividers, I shifted focus toward bulleted lists.
I didn’t want every list item to use the same bullet. That felt sterile. Instead, I created five separate bullet graphics and alternate between them for longer lists to create subtle variation.
Then came the dot leaders.
Once I finally solved the positioning puzzle for the dot leaders, everything else started falling into place. Suddenly I could create layouts that resembled a table of contents, complete with aligned values on the right side. For a traditional contents page, those values might be page numbers. For my “Recent Contributions” section, it displays how long ago something was posted.
That eventually pushed me toward converting parts of the site into APIs.
I wrote a PHP endpoint that returns the five most recent contributions, using shortened titles when available and falling back to the original filename if necessary. After that came a generic JavaScript helper function for making API calls and gracefully handling failures, followed by another function that dynamically populated the table structure.
async function api(path, options = {}) { const { method = "GET", data = null, files = null, headers = {}, } = options; const url = `/api/${String(path).replace(/^\/+/, "")}.php`; const fetchOptions = { method, headers: { Accept: "application/json", ...headers, }, }; if (data || files) { const formData = new FormData(); if (data) { for (const [key, value] of Object.entries(data)) { formData.append(key, value); } } if (files) { for (const [key, value] of Object.entries(files)) { if (value instanceof FileList || Array.isArray(value)) { for (const file of value) { formData.append(key, file); } } else { formData.append(key, value); } } } fetchOptions.body = formData; } try { const response = await fetch(url, fetchOptions); const text = await response.text(); let result; try { result = text ? JSON.parse(text) : {}; } catch { result = { success: false, error: "The server returned an invalid JSON response.", raw: text, }; } if (!response.ok) { return { success: false, status: response.status, error: result.error || response.statusText || "Request failed.", result, }; } return result; } catch (error) { return { success: false, error: error.message || "Network request failed.", }; }}
Progress on the website has been painfully slow, but at least it continues moving forward.
Somewhere in the middle of all this, I had to leave the house to pick up burgers for an event at the lodge because the brother cooking them didn’t have time to stay and transport them himself.
By the time I arrived, I could smell the burgers but couldn’t actually find them anywhere.
I checked my phone and discovered another brother had already picked them up and delivered them to the school.
So off I went toward E. Wilson Morrison Elementary School.

I ended up arriving a little too early while parents were still lining up to pick up their children, so I drifted over toward the Warren Heritage Society to see what was happening at Ivy Lodge.
Everyone there was preparing for the Corks and Chords event on Friday.
From there, I wandered up Main Street and stopped at Garcia & Gavino for a quick bite to eat. Their coffee machine wasn’t working, so instead I ended up with a strawberry soda, a breakfast burrito, and a cupcake.
While I was eating, I heard back from the director at Stone Branch.
They had picked up the jukebox.
Apparently it took four men to get it out of the basement.
It was also still full of records.
Honestly, I probably would have removed the records first just to reduce the weight alone.
They managed to get it loaded onto a tiny trailer, and she mentioned they had already tested some of the sound output through old RCA radios.
Even half-functional, that machine already sounds magical.

Breakfast
As I was finishing my meal, I struggled unsuccessfully with the bottle cap on my soda until I awkwardly asked for a bottle opener. Meanwhile, new customers kept walking in and asking for coffee, only to hear the same answer I had gotten earlier.
That poor employee probably repeats “the coffee isn’t working” dozens of times a day.

Memorial Day Program
Afterward, I headed back to the school for the Memorial Day observance organized by the children in the Early Act program.
Throughout the event I found myself quietly panicking because I hadn’t seen the brother with the burgers or any sign of them being distributed like in previous years.
One of the children from church recognized me and walked over carrying a flag before handing it to me.
I noticed a few familiar faces in the audience, though not as many as I remembered from prior years. The mayor, town council members, and supervisors were notably absent. I did recognize a former supervisor and his wife, both of whom regularly attend community events around town.
The Bobcat Chorus performed a couple of songs, and at one point, my pastor — who is also a teacher — looked around and jokingly pointed out that he had instructed the children to hand flags to everyone, but only about five kids had actually done so. He expressed his appreciation for military dogs, as his father had extensive experience with them and had lost a few. It was interesting to talk to someone else about them in the morning and to hear about my pastor’s family’s relationship with them.
Eventually, all the children went to grab flags and began planting them across the lawn.
The little boy I knew found a flag lying on the ground and picked it up. He then struggled to push his flag into the ground, so I knelt down and suggested pushing closer to the base for better leverage. He managed to get it started, but the soil was stubborn and packed tight. When I tried it myself, it took a surprising amount of force before the ground finally gave way just enough for the flag to stand upright on its own.
After the ceremony, all the children started grabbing hamburgers and water bottles, and I, along with many others, took that as our cue to head out.
Lunch at On Cue
I headed over to On Cue Sports Bar & Grill because I needed an actual meal by then.
The waitress greeted me almost immediately by asking if I wanted a root beer along with a menu.
I agreed to both.
I ordered a buffalo chicken sandwich with fries, and somehow also ended up adding soft pretzels to the order. She asked about my dog Teddy, as she had seen me walking around with him on Family Fun Day. A few years ago, everyone knew me as the guy who walked around town with a corgi. After starting my own business, I found I couldn’t take him with me to most places I needed to go, and he has been getting out less and less over the years.
During this time, I mentioned to the director at Stone Branch that Front Royal could be an ideal place for a small, hands-on science and technology center that demonstrates simplified versions of both older and modern technologies to the public.
Both of us have spent decades around computers and technology. We’ve watched entire eras come and go. There’s something deeply satisfying about preserving older technology not as static museum pieces, but as functioning systems people can touch, hear, and interact with.
She seemed genuinely excited by the idea.
Siesta & Work
Eventually I made it home, took a nap, woke up, and immediately returned to working on the exhibit website again.
Throughout the day, I kept checking for a news article about the exhibit in The Northern Virginia Daily, hoping it would appear online rather than only in print. If not, I’ll probably stop by the library and browse the recent physical issues myself.
I also heard back from the artist regarding the murals at Mac’s Roller Rink. Or at least I heard back from the mail server. The artist’s mailbox was apparently full.

Tomorrow is already shaping up to be another long day.
I’ll be starting the morning at the senior center, helping serve lunch before the cycle begins all over again. I’ll probably skip the Corks & Cords event and work on the website.

One response to “CSS, Jukeboxes, and Flags”
[…] Warren County Senior Center, I dropped by Stone Branch Center for the Arts to take a look at the Juke Box. The director had purchased it from Facebook Marketplace the day prior for […]