{
  "authors": [
    {
      "avatar": "https://media.endgameviable.com/img/endgameviable-avatar.jpg",
      "name": "Endgame Viable"
    }
  ],
  "description": "Gaming, programming, writing, and cancer stories from UltrViolet aka. Thomas Krehbiel.",
  "feed_url": "https://endgameviable.com/index.json",
  "home_page_url": "https://endgameviable.com/",
  "icon": "https://media.endgameviable.com/img/endgameviable-avatar.jpg",
  "items": [
    {
      "content_html": "\u003cp\u003eMorning! I\u0026rsquo;m back with another live-written post on the morning of publishing day. I stopped doing this because it\u0026rsquo;s difficult and largely unfulfilling, but today I don\u0026rsquo;t have anything else readily available to post.\u003c/p\u003e\n\u003cp\u003eTo be honest, in my mind, I\u0026rsquo;ve fully left Blaugust behind and moved on to other things. These are just the vestigial death throes of habit, and not wanting to give up mere days before the end.\u003c/p\u003e\n\u003cp\u003eIn health news, I have radiation scheduled on the annoying spot of cancer in my pelvic bone starting the week after next, just after Labor Day. I expect it to be completely painless and have little effect on my life, other than having to drive out there every other day for two weeks.\u003c/p\u003e\n\u003cp\u003eIn television news, I stumbled on the show Last One Laughing UK seasons 1 and 2, which is a who\u0026rsquo;s who of UK comedians. I know UK comedians way better than I know American comedians for some reason. Are there any American comedians anymore? I really don\u0026rsquo;t see them. There\u0026rsquo;s no American version of Taskmaster, for example. Anyway, the show was quite funny.\u003c/p\u003e\n\u003cp\u003eOtherwise, I\u0026rsquo;ve been working on various aspects of my \u003ca href=\"/post/2026/08/reverse-engineering-my-old-music-projects/\"\u003esecret music production project\u003c/a\u003e, which has lost a bit of focus since the initial frenzied steps.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve been working to digitally transfer DAT tapes into REAPER projects. I got through 30 tapes or so, then my 30-year-old DAT deck started making very ominous, loud, electrical popping noises. ChatGPT thinks it might be the power supply dying.\u003c/p\u003e\n\u003cp\u003eI stopped, with about 15 tapes left to go. Luckily I deliberately ordered the tapes from most important to least important, so I\u0026rsquo;ve completed the ones I really wanted to get. The ones that are left, I honestly don\u0026rsquo;t know what\u0026rsquo;s on them.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m going to try the deck again today and hopefully that popping was just a one-time thing. Maybe it overheated and I should power it off between tapes from now on. I have little choice but to keep trying because it\u0026rsquo;s not like I can buy a new DAT player in 2026. The deck only has to last for another 15 tapes or so.\u003c/p\u003e\n\u003cp\u003eI previously mentioned I bought a \u003ca href=\"/post/2026/08/reviving-a-boss-dr660/\"\u003eused DR-660 drum machine\u003c/a\u003e, and it works. I also bought a used Roland Sound Canvas SC88pro, and it also works. The latest insane purchase is a used Yamaha TG77 tone generator I found on ebay. Like the Sound Canvas, it\u0026rsquo;s a Japanese model, so I\u0026rsquo;ll have to use a transformer. Fingers crossed that it will also work. That would be the last puzzle piece in restoring my old music tracks.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 27 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-27T08:33:52-04:00",
      "date_published": "2026-08-27T08:15:50-04:00",
      "id": "https://endgameviable.com/post/2026/08/vestigial-death-throes-of-habit/",
      "image": "https://media.endgameviable.com/img/stock/2026/08/secret-hyperfocusing-musician-openverse-99946f87-4b16-44fe-855f-42edd71f5228.webp",
      "summary": "Blaugust Day 27. Updates on health, television shows, and the progress of my DAT archiving project with a dying 30-year-old DAT deck.",
      "tags": [
        "Blaugust 2026",
        "Cancer Stories",
        "Music Production",
        "Television"
      ],
      "title": "Vestigial Death Throes of Habit",
      "url": "https://endgameviable.com/post/2026/08/vestigial-death-throes-of-habit/"
    },
    {
      "content_html": "\u003cp\u003eEverybody hold your breath, this post is about AI, but it has nothing to do with stealing artwork or data center overcrowding. It\u0026rsquo;s a practical guide to using agentic AI assistants, something I don\u0026rsquo;t see written down very often. Usually I only see AI written about as a nebulous malevolent force hiding behind a foggy shroud of distrust.\u003c/p\u003e\n\u003cp\u003eBy way of introduction, and as a way to shoehorn a different draft into this post, I pose the question: Is AI something new, or is AI merely this generation\u0026rsquo;s version of a profound technological advancement in productivity and convenience:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe washing machine replacing the need to pound clothes on a rock or whatever.\u003c/li\u003e\n\u003cli\u003eAutomobiles replacing horses.\u003c/li\u003e\n\u003cli\u003eSynthesizers and sequencers replacing musical instruments played by musicians.\u003c/li\u003e\n\u003cli\u003eDigital Audio Workstations (computers) replacing analog mixing consoles and tape machines in music production.\u003c/li\u003e\n\u003cli\u003eAutotune replacing the need to practice singing.\u003c/li\u003e\n\u003cli\u003eIntellisense replacing programming documentation.\u003c/li\u003e\n\u003cli\u003eSyntax highlighting replacing the need to format readable source code.\u003c/li\u003e\n\u003cli\u003eElectricity replacing gas and oil and steam.\u003c/li\u003e\n\u003cli\u003ePlumbing replacing walking down to the river with a bucket.\u003c/li\u003e\n\u003cli\u003eFirearms replacing crossbows.\u003c/li\u003e\n\u003cli\u003eSpellcheckers replacing the need to memorize vocabulary.\u003c/li\u003e\n\u003cli\u003eCalculators replacing the need to learn math.\u003c/li\u003e\n\u003cli\u003eGoogle replacing the need to remember facts.\u003c/li\u003e\n\u003cli\u003eDesktop publishing replacing the traditional paste-up process.\u003c/li\u003e\n\u003cli\u003eSteam engines replacing manual labor.\u003c/li\u003e\n\u003cli\u003eAccounting software replacing paper ledgers.\u003c/li\u003e\n\u003cli\u003eCell phones and tablets replacing desktop computers.\u003c/li\u003e\n\u003cli\u003eTouch screens replacing mice.\u003c/li\u003e\n\u003cli\u003eComputers and drawing tablets replacing canvases and paint brushes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMy current thinking puts AI in the same category as all of the things on that list. I may be wrong\u0026hellip; AI may well be different, but how? It\u0026rsquo;s not clear to me yet. And so I approach it as something new to learn.\u003c/p\u003e\n\u003cp\u003eAt home, I pretty much live in Google\u0026rsquo;s Antigravity IDE now, and at work, for software development, Claude Code is interwoven into everything we do. In other words, I use agentic AI assistance for development tasks pretty much every day.\u003c/p\u003e\n\u003cp\u003eWhen I say \u0026ldquo;agentic AI,\u0026rdquo; by the way, I\u0026rsquo;m not just talking about asking a chatbot some questions. I\u0026rsquo;m talking about a chatbot that \u0026ldquo;thinks.\u0026rdquo; (Airquotes because it doesn\u0026rsquo;t actually think.) It\u0026rsquo;s a chatbot that\u0026rsquo;s connected to your files and directories. You give it a goal, and it \u0026ldquo;figures things out\u0026rdquo; without having to be told what to do at every step. It either writes or runs the tools it needs to get the tasks done, while you sit back and watch.\u003c/p\u003e\n\u003cp\u003eBelow are some prompts that I find myself returning to over and over again, or have used before, to make my life easier.\u003c/p\u003e\n\u003cp\u003eCode-related prompts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReview this code to improve code clarity, reduce duplication, reduce complexity, improve ease of maintenance, and update legacy code style. (Often good to do a pass or two after AI itself writes some code.)\u003c/li\u003e\n\u003cli\u003eReview this code for leaks of configuration secrets (before committing to git).\u003c/li\u003e\n\u003cli\u003eDocument step-by-step instructions for how this code is deployed to a production environment.\u003c/li\u003e\n\u003cli\u003eDescribe and diagram the architecture and design choices of this code (useful when approaching a new code base, something I have to do at work all the time).\u003c/li\u003e\n\u003cli\u003eWrite unit tests for the new code I just added (I\u0026rsquo;m still developing strategies for prompting AI to write good unit tests, it usually brute-forces them; some folks at work are experimenting with test-driven AI development, where they get the AI to write the unit tests first before writing the code, which is a good idea I want to try someday).\u003c/li\u003e\n\u003cli\u003eReview this code for tightly coupled objects and suggest a plan to decouple them.\u003c/li\u003e\n\u003cli\u003eBuild a localstack test environment for this aws code.\u003c/li\u003e\n\u003cli\u003eLook at these log errors and find the root cause of the error and suggest a solution.\u003c/li\u003e\n\u003cli\u003eFetch the log lines related to request ID x and trace the end to end operation of the request.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNot-code related prompts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSearch these hundreds of photo files to find instances where there\u0026rsquo;s a break in the sequential numbering and rename any incorrect files, and update all references to those renamed files.\u003c/li\u003e\n\u003cli\u003eCreate a static web site generator to publish these hundreds of photos of an old World War 1 diary and the transcripts of each page, converting each RAW photo to a small web-friendly webp format.\u003c/li\u003e\n\u003cli\u003eImport the blog posts saved in this WordPress backup XML file as Markdown files for Hugo.\u003c/li\u003e\n\u003cli\u003eSearch these hundreds of Markdown blog post files for broken image links and correct them, using this directory of images downloaded from WordPress to match the missing images. And move those WordPress images to my S3 bucket directory, resize, and convert them to webp.\u003c/li\u003e\n\u003cli\u003eConnect to aws and download the raw access logs for my blog, then generate an HTML summary report of statistics. (Real-life example \u003ca href=\"/reports/statistics.html\"\u003ehere\u003c/a\u003e.)\u003c/li\u003e\n\u003cli\u003eCreate a new Hugo blog theme with a more modern web style that supports dark and light mode.\u003c/li\u003e\n\u003cli\u003eWrite a tool to use an api to transcribe the audio commentary track of these hundreds of videos as SRT files, and create a summary description of each video from each transcript. (I actually wrote most of that functionality before Antigravity, but this is how I\u0026rsquo;d do it now.)\u003c/li\u003e\n\u003cli\u003eGive me the steps to migrate my gotosocial instance and postgresql database from an unraid server on my local network to a VPS in the cloud.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you don\u0026rsquo;t know, what happens with Claude or Antigravity (and I assume all others) is that after entering a prompt like the ones above, the AI will generate a \u0026ldquo;plan,\u0026rdquo; which is a long document that describes what it\u0026rsquo;s going to do in step-by-step detail. It may ask you to clarify things. You look over the plan, find things you want to change or improve (there\u0026rsquo;s always something), tell the AI what to do different, review the new plan, repeat, and eventually approve the plan and watch it go.\u003c/p\u003e\n\u003cp\u003eIn my mind, I assume everyone who works in technology has already figured these kinds of prompts out, and probably better ones, and doesn\u0026rsquo;t need to be told any of this. But on the off chance that somebody out there still doesn\u0026rsquo;t know, or maybe hasn\u0026rsquo;t had a chance to approach agentic AI yet, this may spark some ideas of what is possible. You always have to start somewhere with new technology.\u003c/p\u003e\n\u003cp\u003eHere is \u003ca href=\"/page/antigravity/gotosocial-migration/\"\u003ean example session with Antigravity about migrating gotosocial\u003c/a\u003e that I copied into a page, if you want to see the conversational process in action.\u003c/p\u003e\n\u003cp\u003eWith those prompts, the agentic AI is usually being directed to work on files (e.g. source code, but it could just as easily be Markdown blog files or picture files or video files) in the current directory or git repository.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve done all of the things on those lists, so they are reflective of the kinds of things I\u0026rsquo;m using AI for.\u003c/p\u003e\n\u003cp\u003eThose are just samples to give you ideas. You will undoubtedly need to converse with the AI to get all the details exactly right for \u003cem\u003eyour\u003c/em\u003e situation. (See the gotosocial example above.)\u003c/p\u003e\n\u003cp\u003eHonestly the list of uses just goes on and on and on. I use it \u003cem\u003eall the time\u003c/em\u003e. I can barely remember what it was like to have to remember or lookup complex command or programming language syntax to do all those things by hand.\u003c/p\u003e\n\u003cp\u003eJust recently I used it to decode a MIDI timing sync audio signal from a recording from 1995, and generate timing information for a modern REAPER project.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t know what the future of AI holds, legally or ethically. All I know is, like many technical advancements of the past we now take for granted, like the IDE, or syntax highlighting, or Intellisense, it sure would suck to have to go back to doing general development tasks the hard and slow way.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 26 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-26T07:37:34-04:00",
      "date_published": "2026-08-26T07:18:51-04:00",
      "id": "https://endgameviable.com/post/2026/08/agentic-prompts-to-live-by/",
      "image": "https://media.endgameviable.com/img/stock/2026/07/head_conductors_digital_board.webp",
      "summary": "Blaugust Day 26. A practical guide and list of real-world prompts for using agentic AI assistants like Antigravity and Claude in daily software development.",
      "tags": [
        "AI",
        "Antigravity",
        "Development",
        "Blaugust 2026"
      ],
      "title": "Agentic Prompts To Live By",
      "url": "https://endgameviable.com/post/2026/08/agentic-prompts-to-live-by/"
    },
    {
      "content_html": "\u003cp\u003eI bought a used Boss DR-660 Dr. Rhythm drum machine (manufactured in 1989) on Reverb a while back, and it arrived. I originally bought one of these around the year 1992 or 1993. It was my main source of drum sounds throughout the 90s.\u003c/p\u003e\n\u003cp\u003eIt was packed well, so I was optimistic. I even got a nice note. Confusingly, and ominously, it came with a fresh coin battery.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260823_001512178.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eAfter unwrapping, the device was in excellent physical condition. It\u0026rsquo;s actually in better condition than the one I owned back in the 90s.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260823_002110956.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eHowever there\u0026rsquo;s one problem: It came with the wrong power supply. Not only isn\u0026rsquo;t it the original Boss BRA-120 adapter, it\u0026rsquo;s a third-party adapter that supplies the wrong power. The DR-660 requires 12V AC, but this adapter supplies 12V DC. Not only that, but the cable looked like it had been patched or repaired at some point.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260823_002306818.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eSo I didn\u0026rsquo;t plug it in immediately to see if it worked or not.\u003c/p\u003e\n\u003cp\u003eLuckily I was able to find a replacement power adapter on Amazon that supplies the correct power. It arrived several days later.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260825_101702666.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eOnce I was able to supply correct power, I eagerly turned it on and watched the display with anticipation. And immediately saw a \u0026ldquo;battery low!\u0026rdquo; message. Well, that explains why they sent a battery with it. I noted that wasn\u0026rsquo;t disclosed in the Reverb listing. Ah well.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260824_223428778.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eMost of the old gear of this type from the 80s and 90s has a little coin battery in them, and they\u0026rsquo;re all dying or dead now. If you\u0026rsquo;re lucky, the gear was designed so you can easily replace the battery. Otherwise, prepare to get out a soldering iron.\u003c/p\u003e\n\u003cp\u003eIf you\u0026rsquo;re looking to buy old gear like this, check the status of the battery.\u003c/p\u003e\n\u003cp\u003eAfter consulting ChatGPT, it was clear that the DR-660 had an easily replaceable battery. So I took the back cover off and beheld a rather significant obstacle.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260824_225539565.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eThere was a secondary circuit board, called a \u0026ldquo;jack board,\u0026rdquo; completely covering the spot where the battery was held. I could see the battery holder by shining a flashlight in between the two circuit boards, and there was no way to reach it without moving that jack board.\u003c/p\u003e\n\u003cp\u003eIt appeared there was nothing physically securing the jack board in place, except a couple of copper strips of tape, and the jacks themselves. So I set to work trying to pry the board loose from the back cover. It took a while, and a lot of careful prying with a small screwdriver, but eventually it popped loose.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260824_232039755.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eAnd there was the elusive battery holder.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260824_232118022.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eI replaced the battery with the one that came with the package and put everything back together. I powered the DR-660 on, watched it initialize and boot up again, and the \u0026ldquo;battery low\u0026rdquo; message was gone. Success!\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/dr660_20260824_233027003.webp\"width=\"1024\"height=\"771\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eI plugged in a MIDI cable, plugged the outputs into my audio interface, and ran a test with one of my old songs that I\u0026rsquo;d loaded into REAPER. It worked! The DR-660 received MIDI notes, played the samples, and I was able to record them in REAPER. There was no extraneous noise or hiccups.\u003c/p\u003e\n\u003cp\u003eI have substantial work ahead of me to reprogram it like I had it in the 90s. I used some rather unconventional drum kits which aren\u0026rsquo;t going to be in the factory programming, so I have to recreate them from memory and by examining my old MIDI files.\u003c/p\u003e\n\u003cp\u003eIncidentally, I was able to simulate a DR-660 in VSTi form using a TX16Wx software sampler and a set of DR-660 samples downloaded from the Internet. It works, but it\u0026rsquo;s a pain to setup, and it doesn\u0026rsquo;t quite sound right. So I\u0026rsquo;m glad to have the real thing.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 25 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-25T07:14:22-04:00",
      "date_published": "2026-08-25T07:03:42-04:00",
      "id": "https://endgameviable.com/post/2026/08/reviving-a-boss-dr660/",
      "image": "https://media.endgameviable.com/img/2026/08/dr660_20260824_233027003.webp",
      "summary": "Blaugust Day 25. Receiving a used Boss DR-660 with a low battery, navigating around a jack board to replace the battery and fix it.",
      "tags": [
        "Blaugust 2026",
        "Music Production",
        "Boss DR-660",
        "Hardware"
      ],
      "title": "Reviving A Boss DR-660 Drum Machine",
      "url": "https://endgameviable.com/post/2026/08/reviving-a-boss-dr660/"
    },
    {
      "content_html": "\u003cp\u003eTipa is one of the only people I see playing EverQuest Legends regularly: \u003ca href=\"https://chasingdings.com/2026/08/18/everquest-legends-theres-no-way-this-is-going-to-last/\"\u003eEverQuest Legends: There’s no way this is going to last. – Chasing Dings!\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAnd is EQL attracting many people who didn’t play it back in the day?\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI can only speak for myself, but no, no it isn\u0026rsquo;t.\u003c/p\u003e\n\u003cp\u003eI got to level 3 and I feel like I\u0026rsquo;ve already seen everything that the game will ever be, which I assume is this: Go to a spot, whack some seemingly random mobs to death, collect loot and XP, return to sell loot. While noting every polygon in the extremely triangular terrain.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s certainly a nice recreation of my memory of MMORPGs of the 90s. Back then, those game tasks were new and exciting and fired the imagination. Now not so much. I don\u0026rsquo;t really feel like I need that in my life anymore.\u003c/p\u003e\n\u003cp\u003eAm I compelled to race to level 50 and see what exciting adventure awaits at the endgame? Not really. Am I eager to take on the evil villain and save the townsfolk? Um, what villain? What town?\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve already concluded that there isn\u0026rsquo;t much story to see in EverQuest. So since the game itself doesn\u0026rsquo;t deliver any lore, I can just read whatever lore I need on the Internet without bothering to launch the game.\u003c/p\u003e\n\u003cp\u003eI have to imagine most of the stories that came out of OG EverQuest were stories of interactions with other players. Or stories of people selling their accounts. I remember a lot of those. Oh, and the classic: Stories of recovering a corpse.\u003c/p\u003e\n\u003cp\u003eThese days, I\u0026rsquo;m quite happy to play with no other players on the server at all. The novelty of Internet socializing from the 90s, when many of the people you met were the same societal outcasts as you, has long since soured.\u003c/p\u003e\n\u003cp\u003eAnyway I can\u0026rsquo;t imagine they intended EverQuest Legends to run for the next 20 years as their star property. It\u0026rsquo;s quite obviously a short-term cash infusion because surely Daybreak or whoever it is that still runs EverQuest and EverQuest II can\u0026rsquo;t possibly be very profitable.\u003c/p\u003e\n\u003cp\u003eI can\u0026rsquo;t even make decent videos out of the game. The combat is boring to watch, and there\u0026rsquo;s hardly any NPCs that say any meaningful dialog to read out loud in interesting ways.\u003c/p\u003e\n\u003cp\u003eSo yeah, I already cancelled my subscription. I played a total of maybe 3 hours? Not bad for a modern game launch, actually. Typically I\u0026rsquo;m bored with new games within the first hour.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 24 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-24T06:51:33-04:00",
      "date_published": "2026-08-24T06:33:36-04:00",
      "id": "https://endgameviable.com/post/2026/08/everquest-legends-sub-cancelled-already/",
      "image": "https://media.endgameviable.com/img/games/everquest_legends/everquest_legends_froglok_gukta_arrival.webp",
      "summary": "Blaugust Day 24. My brief three-hour journey in EverQuest Legends and the lack of pull for non-existent nostalgia.",
      "tags": [
        "Gaming",
        "Blaugust 2026",
        "EverQuest Legends",
        "EverQuest"
      ],
      "title": "EverQuest Legends Sub Cancelled Already",
      "url": "https://endgameviable.com/post/2026/08/everquest-legends-sub-cancelled-already/"
    },
    {
      "content_html": "\u003cp\u003eI don\u0026rsquo;t actually know if it\u0026rsquo;s still Creator Appreciation week in Blaugust or not, but I know I don\u0026rsquo;t have anything to talk about this morning so I\u0026rsquo;ve pulled up this previously-prepared post.\u003c/p\u003e\n\u003cp\u003eThis is a list of YouTube channels I regularly frequent. Some more regularly than others. In truth, I only frequent maybe five of these channels at any given time, since the algorithm tends to bury channels you haven\u0026rsquo;t watched in roughly the last 24 hours.\u003c/p\u003e\n\u003cp\u003eI tried to confine the list to more \u0026ldquo;independent\u0026rdquo; creators, though the definition of \u0026ldquo;independent\u0026rdquo; varies wildly.\u003c/p\u003e\n\u003ch3 id=\"comedy\"\u003eComedy\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UC1F-zG3V5_yS1Znad-MBrSw\"\u003eJudge John Hodgman\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCHftakrJ61qs2UkUfoczqew\"\u003eMitchell and Webb\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UC9Kq-yEt1iYsbUzNOoIRK0g\"\u003ePitch Meeting\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCh9IfI45mmk59eDvSWtuuhQ\"\u003eRyan George\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCMjLiIEOPEfDl8WShEgPR2g\"\u003eRyan George Extra Plus!\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCY30JRSgfhYXA6i6xX1erWg\"\u003eSmosh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCJ2ZDzMRgSrxmwphstrm8Ww\"\u003eSmosh Games\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCYJPby9DRCteedh5tfxVbrw\"\u003eSmosh Pit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCEyodonqP_80YrDvattntmw\"\u003eSmoshCast\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCT5C7yaO3RVuOgwP8JVAujQ\"\u003eTaskmaster\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCx9l0FfNQ3G79_9SBxkhR9g\"\u003eTaskmaster International\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCchBatdUMZoMfJ3rIzgV84g\"\u003eViva La Dirt League\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"history\"\u003eHistory\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCN5TIBm-idJXOa6BUh3sjuA\"\u003eFascinating History\u003c/a\u003e *\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UC3Wn3dABlgESm8Bzn8Vamgg\"\u003eSideprojects\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCnZJt7yQw5IztVwe-Dscd-Q\"\u003eThe Operations Room\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCUYK0BJZF3yNb2fw1EdAXUQ\"\u003eThe Rest Is History\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"macabre\"\u003eMacabre\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCZdWrz8pF6B5Y_c6Zi6pmdQ\"\u003eDecoding the Unknown\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCFXad0mx4WxY1fXdbvtg0CQ\"\u003eFascinating Horror\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCwpHKudUkP5tNgmMdexB3ow\"\u003eMentour Pilot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCoftW9U27KfkNz5jFES7htg\"\u003eMentour\u0026rsquo;s Black Box\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCsE8PTncfn2Vga48jH46HnQ\"\u003eOceanliner Designs\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCBeZYVlqOeSSlrBSXl4aTig\"\u003ePilot Debrief\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCvbdscGfp1_KTWHu0tZhxRw\"\u003eThe Raven\u0026rsquo;s Eye\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"movies\"\u003eMovies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCCqEeDAUf4Mg0GgEN658tkA\"\u003eChris Stuckmann\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"music\"\u003eMusic\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCOwSCdQi9YRIVq6H2iX3qWg\"\u003eProfessor of Rock\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCEHCXnggyvkw1uaTChZ_kuA\"\u003eWings of Pegasus\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"podcasts\"\u003ePodcasts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCwqN4YHuG4fwGXSgexeujnQ\"\u003eIt\u0026rsquo;s a Thing Podcast\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCjp5QN8e3nk2f4u9JdcpAgQ\"\u003eMythfits Podcast\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"politics\"\u003ePolitics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCX2k4JxsCQ0R2Fi9KaXBIig\"\u003ePolitics Politics Politics\u003c/a\u003e *\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCG4Hp1KbGw4e02N7FpPXDgQ\"\u003eThe Bulwark\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCUuTy3hH35Acidy8Zzy35PQ\"\u003eThe Political Orphanage\u003c/a\u003e *\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCsufaClk5if2RGqABb-09Uw\"\u003eThe Rest Is Politics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCII84rxnNkEjtk1zC3qTtbg\"\u003eThe Rest Is Politics US\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCg3hvCXDzFq6ZwSNcmZ62YA\"\u003eThe Rest Is Politics: Leading\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCQlJ7XpBtiMLKNSd4RAJmRQ\"\u003eThe Weekly Show with Jon Stewart\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCx3lLuiNvqjjVhqrDZbLDEQ\"\u003eWe\u0026rsquo;re Not Wrong\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"pop-culture\"\u003ePop Culture\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCYJpsKWYfZU8kOHZf_tUzQw\"\u003eThe Rest Is Entertainment\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"skepticism\"\u003eSkepticism\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCpeGBKn0axOJAcPHkcPiXcg\"\u003eTheSkepticsGuide\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"space\"\u003eSpace\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ\"\u003eNASA\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"sports\"\u003eSports\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCew5br5cO1ZKO7Z_F1WA8Bg\"\u003eThatsGoodSports\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"technology\"\u003eTechnology\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCCd3-JX7e8uGZx00i5646jg\"\u003eDaily Tech News Show\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"ttrpgs\"\u003eTTRPGs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCC8AgO4FbP11n_WBdFai7DA\"\u003eBob World Builder\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCpXBGqwsBkpvcYjsJBQ7LEQ\"\u003eCritical Role\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UC3qtZRMtWNaD2Q96STxgOrA\"\u003eHigh Rollers DnD\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCQs8-UJ7IHsrzhQ-OQOYBmg\"\u003eSeth Skorkowsky\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UC83CJFLyDe72XgkKBd5a9IA\"\u003eThe Glass Cannon Network\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/channel/UCjYN7wKo-y3T6rMMyS5p2wQ\"\u003eViva La Dirt League D\u0026amp;D\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e* These channels use what looks like AI-generated thumbnails or B-roll illustrations from time to time, if that\u0026rsquo;s something that matters to you. I don\u0026rsquo;t \u003cem\u003eknow\u003c/em\u003e if it\u0026rsquo;s AI-generated, mind you, it\u0026rsquo;s just a suspicion. In any case, it doesn\u0026rsquo;t detract from the content.\u003c/p\u003e\n\u003cp\u003eP.S. Speaking of AI disclosures, I used Antigravity to fetch my list of subscriptions from the YouTube API and format it in Markdown, because manually going through a big list of subscriptions and writing down their links is for the birds. So a portion of this post was technically \u0026ldquo;AI-generated.\u0026rdquo; However, I did go through and re-order and categorize the list by hand.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 23 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-23T07:54:49-04:00",
      "date_published": "2026-08-23T07:40:34-04:00",
      "id": "https://endgameviable.com/post/2026/08/youtube-channels-i-follow/",
      "image": "https://media.endgameviable.com/img/stock/2026/08/youtube-channels-i-follow-openverse-3f124966-544a-4f84-a950-359fc00d06ee.webp",
      "summary": "Blaugust Day 23. For Creator Appreciation, a list of YouTube channels I follow.",
      "tags": [
        "Blaugust 2026",
        "YouTube",
        "Antigravity"
      ],
      "title": "YouTube Channels I Follow",
      "url": "https://endgameviable.com/post/2026/08/youtube-channels-i-follow/"
    },
    {
      "content_html": "\u003cp\u003eHoo boy did I fall deep down a rabbit hole. Nothing else in life matters now but this.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/post/2026/08/retiring-old-wordpress-sites/\"\u003eParking my Promise Table web site\u003c/a\u003e reminded me that I have an assortment of music I wrote and recorded in the mid- to late-90s just sitting around doing nothing, and I wondered what I should do with it.\u003c/p\u003e\n\u003cp\u003eIn my old age, I feel like most of my historical \u0026ldquo;content\u0026rdquo; should be available online, whether it has any value or not. With my blog and my YouTube channel I\u0026rsquo;m quite used to \u0026ldquo;putting things out there\u0026rdquo; and getting at best a polite golf clap, at worst a deafening apathy, so the idea of publishing my music\u0026ndash;the artistic endeavor that I slave over more than anything else\u0026ndash;doesn\u0026rsquo;t bother me too much anymore. I fully expect people \u0026ldquo;won\u0026rsquo;t get it\u0026rdquo; and that\u0026rsquo;s fine.\u003c/p\u003e\n\u003cp\u003eThere\u0026rsquo;s basically no chance of profiting from all that work (the music industry and consumer habits being what they are, the odds of any independent musician making money from music is vanishingly small these days\u0026ndash;as are the odds of making money from \u003cem\u003eany\u003c/em\u003e artistic endeavor\u0026ndash;thanks \u0026ldquo;democratization of content\u0026rdquo;), so I just want to put them somewhere on the Internet where anyone can click on them and listen.\u003c/p\u003e\n\u003cp\u003eSo the goal is to publish my old music. But how?\u003c/p\u003e\n\u003cp\u003eOne problem I can\u0026rsquo;t quite overcome is I still have a strong interest in retaining the \u003cem\u003erights\u003c/em\u003e to my music. Artists have very few rights anymore, and copyright is one of them. Even if I make no money from my art, I still have rights to my art, and I should behave like a professional rights holder no matter what.\u003c/p\u003e\n\u003cp\u003eMany years ago, I registered all my songs with the U.S. Copyright Office. I want to distribute this music in a way that doesn\u0026rsquo;t completely undermine my rights. It would be foolish to expect anything good to happen, but it would be even more foolish not to plan for the one in a billion chance that someone slaps one of my songs on a TikTok video that gets 500 million views.\u003c/p\u003e\n\u003cp\u003eMy first thought was to create a BandCamp account and upload my songs there. I have an assortment of 16-bit 44khz master WAV files I can upload.\u003c/p\u003e\n\u003cp\u003eLater I came to realize that I could fairly easily create a static web site that is essentially a player for my music, and I didn\u0026rsquo;t really need BandCamp or SoundCloud.\u003c/p\u003e\n\u003cp\u003eBut I soon encountered a major problem. Back in the 90s, I judiciously used samples recorded from television, or downloaded from random sources on the Internet, and I didn\u0026rsquo;t keep track of where they came from or whether I \u003cem\u003ecould\u003c/em\u003e use them or not. They\u0026rsquo;re littered in my master recordings. They aren\u0026rsquo;t in \u003cem\u003eevery\u003c/em\u003e song, but they\u0026rsquo;re in the good ones.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eNow\u003c/em\u003e I know better, and would never do that. So I can\u0026rsquo;t just drop those songs out there as-is, even though I have the master WAV files. I need to figure out how to creatively edit those mixes and masters to work around those samples.\u003c/p\u003e\n\u003cp\u003eFor some songs, I can take the original mixdowns and cut and paste around the problem samples. For others, they\u0026rsquo;re buried deep in the mix and there\u0026rsquo;s no editing around it. I\u0026rsquo;d need to do a remix from scratch.\u003c/p\u003e\n\u003cp\u003eThere\u0026rsquo;s another problem, though. Almost all of my old home studio gear is long gone, so recreating the environment in which I mixed a song from, say, 1995-1999, is nearly impossible.\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg src=\"https://media.endgameviable.com/img/2026/08/recording_studio_1995_diagram.png\"width=\"3961\"height=\"2755\"loading=\"lazy\"\n    /\u003e \n\u003c/figure\u003e\n\u003cp\u003eFrom that diagram of my ~1995 setup, here in 2026, I only have the Sequencer Project Files, the Recorded Vocal/Guitar Tracks, and the Master Mixdown DAT Tapes.\u003c/p\u003e\n\u003cp\u003eIn 2013, I digitally transferred the recorded vocal and guitar tracks from the original ADAT digital audio tapes into REAPER projects. No problem there. Well, it\u0026rsquo;s mostly raw data files, so there\u0026rsquo;s a ton of organizational and synchronization work that still needs to be done\u0026hellip; but the data is there.\u003c/p\u003e\n\u003cp\u003eHowever, back in the 90s, we didn\u0026rsquo;t have DAW workstations where we could easily record hundreds of digital audio tracks inside our computers. We (specifically I) had an 8-track ADAT synchronized with MIDI gear, and mixdowns happened by playing the projects live and recording the mix by moving dials and faders around.\u003c/p\u003e\n\u003cp\u003eBut I don\u0026rsquo;t have any of that MIDI gear anymore. Or the rackmount effects units I used. Or any of the mixers or time synchronization devices or anything, really.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s an interesting logistical problem that engages my problem-solving engineering brain.\u003c/p\u003e\n\u003cp\u003eI have the project files containing all of the MIDI notes sent to those MIDI devices, which is the most important part, but I don\u0026rsquo;t have any recordings of the \u003cem\u003esounds\u003c/em\u003e those MIDI devices made, other than what you can hear on the masters.\u003c/p\u003e\n\u003cp\u003eSo it\u0026rsquo;s a daunting task to try to reverse engineer, remix, and remaster these old songs to remove potentially infringing samples, even in today\u0026rsquo;s DAW world where mixing and mastering music is a breeze compared to what it was in the 90s.\u003c/p\u003e\n\u003cp\u003eSome songs I can reconstruct easier than others, but some songs are going to require starting from scratch. Some songs I want to remix just because I did a rotten job of it back in the 90s.\u003c/p\u003e\n\u003cp\u003eIt all starts with finding and loading all of the old project files. In the 90s I used Cakewalk products (Cakewalk Pro Audio was the first DAW for Windows, as far as I was aware), so it\u0026rsquo;s all Cakewalk files. Luckily for me, there\u0026rsquo;s still a free download of \u003ca href=\"https://www.cakewalk.com/sonar\"\u003eCakewalk SONAR\u003c/a\u003e that is available from BandLab, so I can still read those project files.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t want to \u003cem\u003ework\u003c/em\u003e in SONAR anymore, though. I use REAPER now. So there is a step of exporting those old projects and importing them into REAPER.\u003c/p\u003e\n\u003cp\u003eBut the lack of MIDI devices is a big problem. Reverse engineering those older songs back to a point where I can work with them today, in a modern DAW context, is, well it\u0026rsquo;s already been said\u0026hellip; daunting. But not impossible!\u003c/p\u003e\n\u003cp\u003eMy rabbit hole project is starting down the road to recovering those songs and recreating my old recording environment in REAPER.\u003c/p\u003e\n\u003cp\u003eI set out to find VST plugins to emulate all those missing MIDI devices. The complete list of devices is: A Yamaha TQ5 tone generator, a Yamaha SY77 keyboard, a Roland SC-88 tone generator, and a Boss DR-660 drum machine. And there\u0026rsquo;s also an Alesis NanoPiano, but I actually still have that one.\u003c/p\u003e\n\u003cp\u003eThere used to be a Roland Sound Canvas SC-88 VST plugin made by Roland, and I had it, and it was great, but they discontinued it and I failed to get the lifetime unlock license in time. Maybe there\u0026rsquo;s a pirate version out there somewhere.\u003c/p\u003e\n\u003cp\u003eChatGPT told me about a VST plugin called \u003ca href=\"https://strydeaudio.com/swayed\"\u003eSwayed\u003c/a\u003e which purportedly emulates a Yamaha SY77, including SysEx compatibility. I shall endeavor to try it.\u003c/p\u003e\n\u003cp\u003eChatGPT told me about another VST plugin called KQ Trixie which purportedly emulates a Yamaha TQ5, including SysEx compatibility. Music I made with a TQ5 is very, very, shockingly old, and probably not suitable for public distribution anyway. But it would be nice to recover them just for my own amusement. (Much of that music was driven by an Amiga computer, before 1993.)\u003c/p\u003e\n\u003cp\u003eChatGPT told me it was easy to find Boss DR-660 drum samples that you could load into whatever VST sample player you wanted, so that\u0026rsquo;s a potential avenue to explore. But I\u0026rsquo;m sure it would be a pain to setup. (I have a vague memory of setting that up before, actually, now that I think about it.)\u003c/p\u003e\n\u003cp\u003eI wondered if it was possible to \u003cem\u003ebuy\u003c/em\u003e those old devices again. I\u0026rsquo;m an affluent member of capitalist society, surely I can find a way to throw more money at this problem.\u003c/p\u003e\n\u003cp\u003eIt didn\u0026rsquo;t take long before I found a used Boss DR-660 and a used Roland SC-88 on Reverb in good condition, and I clicked those Buy Now buttons. Could it be a scam? Maybe, but it\u0026rsquo;s a weird way to scam people. The SC-88 I bought is actually the Japanese version so I have to get a step-down transformer so it doesn\u0026rsquo;t blow up when I plug it in here in the U.S.\u003c/p\u003e\n\u003cp\u003eIf those two devices work when they arrive, that will solve 75% of my problems. I can plug them in, play MIDI sequences to them, and record everything they do to one of a thousand DAW tracks in REAPER, and never worry about losing a MIDI note again.\u003c/p\u003e\n\u003cp\u003eOr, they could be lemons and I\u0026rsquo;ll be out a bunch of money and back at square one.\u003c/p\u003e\n\u003cp\u003eI wasn\u0026rsquo;t able to find any used Yamaha SY77 keyboards to buy, nor the rackmount TG77 tone generator version of the keyboard. The Swayed VST is my only option for now, or else replace all those parts with new VST synth parts by guesswork.\u003c/p\u003e\n\u003cp\u003eTo reiterate, it\u0026rsquo;s a daunting project. It\u0026rsquo;s all in service of remixing and remastering some old songs to remove some samples, so I can set up a web page to publish them.\u003c/p\u003e\n\u003cp\u003eSince obviously nobody actually listens to music that way, I\u0026rsquo;m also investigating how music distribution works in the modern world for places like Spotify, etc. (Initial investigations provide an easy answer: DistroKid.)\u003c/p\u003e\n\u003cp\u003eShould anyone ever say to me, \u0026ldquo;Oh you wrote a song, can I hear it?\u0026rdquo; It would be cool to be able to send them a Spotify link or something.\u003c/p\u003e\n\u003cp\u003eSo that\u0026rsquo;s my secret music production project. That was kind of a big wall of jumbled text up there, but that hurricane of disorganized thought closely resembles what\u0026rsquo;s inside my brain during sudden rabbit hole excursions like this. It\u0026rsquo;s an exciting time, and a challenging exercise just to bring some order to it.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 22 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-22T17:06:36-04:00",
      "date_published": "2026-08-22T12:26:00-04:00",
      "id": "https://endgameviable.com/post/2026/08/reverse-engineering-my-old-music-projects/",
      "image": "https://media.endgameviable.com/img/stock/2026/08/reverse-engineering-my-old-music-projects-wikimedia-89626509.webp",
      "summary": "Blaugust Day 22. The logistical challenge of recovering, remixing, and remastering mid-90s songs from ADAT tapes and MIDI files in a modern DAW.",
      "tags": [
        "Music Production",
        "REAPER",
        "Blaugust 2026",
        "MIDI"
      ],
      "title": "Reverse Engineering Old Music Projects",
      "url": "https://endgameviable.com/post/2026/08/reverse-engineering-my-old-music-projects/"
    },
    {
      "content_html": "\u003cp\u003eI had three old WordPress blogs that were just decaying out there on the Internet, using up power and space for nothing.\u003c/p\u003e\n\u003cp\u003eThose three old sites haven\u0026rsquo;t been updated since somewhere around 2018, so it\u0026rsquo;s safe to say they weren\u0026rsquo;t going to suddenly spring back to life. In the development world, we love to build and deploy things, but we rarely think about destroying them when their usefulness has passed. (Trust me, in my day job, I run into this \u003cem\u003eall the time\u003c/em\u003e.)\u003c/p\u003e\n\u003cp\u003eIt was time to get rid of them, park those domain names, and redirect all those old links to \u003cem\u003ethis\u003c/em\u003e site.\u003c/p\u003e\n\u003cp\u003eThis task was somewhat tangentially inspired by a Blaugust post I saw earlier: \u003ca href=\"https://michaelharley.net/posts/2026/08/18/re-the-loss-of-links-continues/\"\u003eRe: The Loss of Links Continues | Michael Harley\u003c/a\u003e. My internal response to that post was something along the lines of: \u0026ldquo;You mean, there are people who \u003cem\u003edon\u0026rsquo;t\u003c/em\u003e think about permalinks staying permanent? This has to be explained?\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eAnd then I pondered my own shameful link rot problem. A couple years ago, I tore down my real name blog and replaced it with a Hugo landing page, but I also wiped out all the old permalinks on that domain, so those links have been broken for a while now. It\u0026rsquo;s bothered me ever since it happened.\u003c/p\u003e\n\u003cp\u003eIt bothered me, but not enough to \u003cem\u003efix\u003c/em\u003e it. The trouble was, it\u0026rsquo;s a real chore to setup redirections for hundreds of links by hand. But now, with Antigravity\u0026rsquo;s help, during this Blaugust burst of blog-related productivity, I was able to setup a redirection file to restore those links on my real name domain, so they now redirect here. Far too late, perhaps, but it least it doesn\u0026rsquo;t bother me anymore.\u003c/p\u003e\n\u003cp\u003eAs for the other three obsolete sites, I set out to create three tiny static sites, consisting of exactly one \u003ccode\u003eindex.html\u003c/code\u003e landing page that says \u0026ldquo;go to Endgame Viable,\u0026rdquo; and find a place to host them for free.\u003c/p\u003e\n\u003cp\u003eGithub Pages would have worked, but I discovered that CloudFlare Pages also supports a \u003ccode\u003e_redirects\u003c/code\u003e file to redirect people going to old links. (I think Netlify also supports it, but I can\u0026rsquo;t vouch for that.) Undoubtedly there are other options available but I picked CloudFlare Pages almost entirely because I had a CloudFlare account. (Which I honestly don\u0026rsquo;t remember setting up.)\u003c/p\u003e\n\u003cp\u003eI asked Antigravity to build a landing page for those three old sites, based roughly on the visual style of the WordPress pages that would be replaced. I tweaked them a little, but not much. How they look doesn\u0026rsquo;t matter that much to me. The only important thing is that there\u0026rsquo;s a prominent link to Endgame Viable.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve already imported all the posts from those old sites into Endgame Viable. Since Antigravity has access to all the backup files from the old sites \u003cem\u003eand\u003c/em\u003e all the imported files in my current Hugo site, I was also able to get it to automatically create a \u003ccode\u003e_redirects\u003c/code\u003e file that maps each of the old post permalinks on the old sites to the new url of the imported posts on Endgame Viable.\u003c/p\u003e\n\u003cp\u003eThen I setup three new git repositories on my github account, and committed those three local directories of files. Which was essentially just two files for each site: An \u003ccode\u003eindex.html\u003c/code\u003e file and a \u003ccode\u003e_redirects\u003c/code\u003e file. One of them also had an image.\u003c/p\u003e\n\u003cp\u003eThen I loaded up CloudFlare and found where you add Pages. (Not easy at first, because CloudFlare\u0026rsquo;s UI seems overly complicated to me.) I added one \u0026ldquo;application\u0026rdquo; for each of the three sites, connected each to the appropriate github repo, and enabled it. They were live almost instantly \u0026hellip; with temporary development urls.\u003c/p\u003e\n\u003cp\u003eSo I added a custom domain for each of the CloudFlare Pages, and went to my domain registrar and changed the nameservers to point to CloudFlare Pages.\u003c/p\u003e\n\u003cp\u003eHopefully by the time this post publishes, the DNS changes will have propagated and the new sites will be live.\u003c/p\u003e\n\u003cp\u003eTwo days later\u0026hellip;\u003c/p\u003e\n\u003cp\u003eIt was taking forever to propagate the domain change. But it turned out I had to make some additional changes to the DNS records that I didn\u0026rsquo;t expect. Once I fixed that, the changes propagated almost instantly, the new static sites were live, and WordPress was gone, forever exorcized from my life.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://everettrenshaw.com\"\u003eEverett Renshaw\u003c/a\u003e (writing)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://promisetable.com\"\u003ePromise Table\u003c/a\u003e (music)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://swampip.com\"\u003eSwamp of Ineffectual Presumption\u003c/a\u003e (politics)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhile I was at it, I changed my real-name site from a single Hugo-built page to a plain static index.html file as well, so I no longer need AWS Amplify to build it. It was a huge waste of compute just for a landing page.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://thomaskrehbiel.com\"\u003eThomas Krehbiel\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAnd that was it. Three old WordPress sites killed off in no time, one Hugo site reduced to an \u003ccode\u003eindex.html\u003c/code\u003e . It took a single day. Not counting the waiting time and fixing the DNS records. The Internet now uses just a tiny bit less power thanks to me. We need all the power we can get to keep Antigravity running!\u003c/p\u003e\n\u003cp\u003eP.S. Right after I created three new github repos, I read this other Blaugust post about github outages and its unsustainable exponential AI-driven growth: \u003ca href=\"https://sals.place/blog/github-growth/\"\u003eGitHub\u0026rsquo;s growth | Sal\u0026rsquo;s\u003c/a\u003e. It\u0026rsquo;s me! I\u0026rsquo;m hastening github\u0026rsquo;s demise!\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 21 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-21T07:15:29-04:00",
      "date_published": "2026-08-21T07:04:13-04:00",
      "id": "https://endgameviable.com/post/2026/08/retiring-old-wordpress-sites/",
      "image": "https://media.endgameviable.com/img/2026/08/antigravity_workspace.webp",
      "summary": "Blaugust Day 21. Retiring three decaying WordPress sites by setting up lightweight static landing pages and redirects on Cloudflare Pages.",
      "tags": [
        "Blaugust 2026",
        "WordPress",
        "Antigravity",
        "Blogging",
        "Development"
      ],
      "title": "Retiring Old WordPress Sites",
      "url": "https://endgameviable.com/post/2026/08/retiring-old-wordpress-sites/"
    },
    {
      "content_html": "\u003cp\u003eOh my. I\u0026rsquo;m caught in the awkward position of not having a post prepared for this morning. It kind of feels \u0026ldquo;normal\u0026rdquo; to post every day now. I was on a roll there for a while, on a comfortable pace getting posts prepped the afternoon before.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s not that I don\u0026rsquo;t have posts drafted. It\u0026rsquo;s that it\u0026rsquo;s taking a long time for some domain names to change nameservers and propagate, so I can\u0026rsquo;t talk about what I expected to talk about today. I thought it surely wouldn\u0026rsquo;t take more than 24 hours, but it\u0026rsquo;s taking, well, more than 24 hours.\u003c/p\u003e\n\u003cp\u003eSo this morning I\u0026rsquo;m off to a regular followup appointment with the brain doctor to go over the results of my last brain MRI. I\u0026rsquo;ve seen the test results, and they appear nominal. Meaning everything\u0026rsquo;s the same as it was last time: There\u0026rsquo;s still a hole where they removed a tumor, and there\u0026rsquo;s still scar tissue where they irradiated two baby tumors, and there\u0026rsquo;s no sign of any new cancer growth.\u003c/p\u003e\n\u003cp\u003eNormally I would resent having to drive all the way across town just to hear what I can plainly read on the health portal, but on this particular day, I\u0026rsquo;m keenly interested in asking if they have any ideas about why I can\u0026rsquo;t bend my right thumb anymore.\u003c/p\u003e\n\u003cp\u003eOver the last couple of days, I\u0026rsquo;ve fallen down a very deep rabbit hole with a secret music production project. I don\u0026rsquo;t talk much about my secret musician alter ego on this blog, mainly because it\u0026rsquo;s been almost entirely sitting on a closet shelf for the last 20 years. But every now and then I suddenly revive my interest and work on a project.\u003c/p\u003e\n\u003cp\u003eOne reason I haven\u0026rsquo;t done much with my music hobby is that I tend to fall \u003cem\u003edeep\u003c/em\u003e into a different world when I\u0026rsquo;m working on it, to the complete exclusion of everything else in my life, like eating, sleeping, and work. Minor things like that. So I\u0026rsquo;ve developed a somewhat unhealthy attitude of, \u0026ldquo;Well, if I can\u0026rsquo;t dedicate 100% of the day to this hobby I love, from the moment I wake up to the moment I fall asleep, why even bother?\u0026rdquo; And then 20 years went by and I can barely play a guitar anymore. Learn from my mistakes, kids.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m still trying to work out a healthier way to approach it in my old age. I\u0026rsquo;m told this hyperfocusing is a feature of neurodivergency. It\u0026rsquo;s just so, so frustrating to have a project idea and not be able to work on it because of some other commitment, like the aforementioned eating, sleeping, and work. C\u0026rsquo;est la vie.\u003c/p\u003e\n\u003cp\u003eAnyway, I\u0026rsquo;ll have another post about the secret music project at some point in the future, because writing about music production is also quite fun. (I doubt there are many music producers or sound engineers among my readership, though.)\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 20 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-20T10:52:42-04:00",
      "date_published": "2026-08-20T06:29:45-04:00",
      "id": "https://endgameviable.com/post/2026/08/secret-hyperfocusing-musician/",
      "image": "https://media.endgameviable.com/img/stock/2026/08/secret-hyperfocusing-musician-openverse-99946f87-4b16-44fe-855f-42edd71f5228.webp",
      "summary": "Blaugust Day 20. Waiting on slow DNS propagation, heading to the brain doctor, and falling down a deep rabbit hole of music production.",
      "tags": [
        "Health",
        "Music Production",
        "Cancer Stories",
        "Neurodivergency",
        "Blaugust 2026"
      ],
      "title": "Secret Hyperfocusing Musician",
      "url": "https://endgameviable.com/post/2026/08/secret-hyperfocusing-musician/"
    },
    {
      "content_html": "\u003cp\u003eI have hummingbirds now.\u003c/p\u003e\n\u003cp\u003eSome time ago, I walked into the kitchen and saw, to my surprise, a hummingbird flitting around outside the kitchen windows. It was hovering at the glass, seemingly peering inside, like it was casing the joint, looking for something. It went back and forth between two windows before flying away.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s not the first time I\u0026rsquo;ve seen a hummingbird around the house during summer. I\u0026rsquo;ve seen one or two every summer for years, always just a brief showing before disappearing. This was the first time I ever saw one sending a clear message: \u0026ldquo;Hey, you in there, give us food!\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;d always meant to setup a feeder for them, but this year I finally did.\u003c/p\u003e\n\u003cp\u003eI ordered two glass hummingbird feeders, put some sugar water in them, and hung them on a shepherd\u0026rsquo;s crook hanger outside the window.\u003c/p\u003e\n\u003cp\u003eWithin an hour, the hummingbirds had found it.\u003c/p\u003e\n\u003cp\u003eNow I see them buzzing around out there every day. Sometimes they get a drink and leave. Sometimes they land on top of the hanger and park there for a while, looking back and forth, like they\u0026rsquo;re guarding their territory.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t know much about bird identification but basic search skills tell me they are classic Virginia \u003ca href=\"https://www.allaboutbirds.org/guide/Ruby-throated_Hummingbird/overview\"\u003eruby-throated hummingbirds\u003c/a\u003e. However, the ones I\u0026rsquo;m seeing don\u0026rsquo;t have a ruby throat, so I assume they\u0026rsquo;re females, or smaller young ones with muted colors.\u003c/p\u003e\n\u003cp\u003eApparently they\u0026rsquo;ll be heading south in a month or so. But it\u0026rsquo;s been fun for now.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 19 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-19T07:11:52-04:00",
      "date_published": "2026-08-19T07:00:20-04:00",
      "id": "https://endgameviable.com/post/2026/08/hummingbirds/",
      "image": "https://media.endgameviable.com/img/2026/08/hummingbird_at_feeder.webp",
      "summary": "Blaugust Day 19. I finally got around to setting up a hummingbird feeder and it brought all the hummingbirds to the yard.",
      "tags": [
        "Blaugust 2026",
        "Wildlife",
        "Hummingbirds"
      ],
      "title": "Hummingbirds",
      "url": "https://endgameviable.com/post/2026/08/hummingbirds/"
    },
    {
      "content_html": "\u003cp\u003eAnother day, another major upgrade to the blog platform.\u003c/p\u003e\n\u003cp\u003eThis time I\u0026rsquo;ve added support for sending webmentions and pingbacks to external sites referenced in posts.\u003c/p\u003e\n\u003cp\u003eI think you can probably guess how I did it by now: I used Antigravity to build out the serverless Lambda functions I required, adding onto the previous \u003ca href=\"https://github.com/tkrehbiel/bathtub-robot-services\"\u003eBathtub Robot repo\u003c/a\u003e which handled sending fediverse notifications.\u003c/p\u003e\n\u003cp\u003eI asked Antigravity to create a diagram of the architecture:\u003c/p\u003e\n\n\n\n\u003cdiv class=\"goat svg-container \"\u003e\n\t\n\t\t\u003csvg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tfont-family=\"Menlo,Lucida Console,monospace\"\n\t\t\t\n\t\t\t\tviewBox=\"0 0 728 521\"\n\t\t\t\u003e\n\t\t\t\u003cg transform='translate(8,16)'\u003e\n\u003cpath d='M 192,0 L 424,0' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 440,16 L 464,16' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,32 L 312,32' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,32 L 424,32' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,96 L 312,96' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,96 L 424,96' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,128 L 312,128' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,128 L 424,128' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,192 L 312,192' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,192 L 472,192' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,240 L 152,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,240 L 264,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,240 L 472,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,240 L 584,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,272 L 152,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,272 L 264,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,272 L 472,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,272 L 584,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,352 L 152,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,352 L 264,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,352 L 472,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,352 L 584,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,384 L 152,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,384 L 264,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,384 L 472,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,384 L 584,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,416 L 312,416' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,416 L 472,416' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,464 L 312,464' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,464 L 424,464' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,496 L 424,496' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,240 L 40,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 40,352 L 40,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,192 L 152,224' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,224 L 152,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,272 L 152,336' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,336 L 152,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,384 L 152,416' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,0 L 192,32' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,96 L 192,128' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 192,464 L 192,496' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 264,240 L 264,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 264,352 L 264,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,32 L 312,80' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,80 L 312,96' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,128 L 312,192' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,416 L 312,448' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 312,448 L 312,464' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,240 L 360,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 360,352 L 360,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 424,0 L 424,32' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 424,96 L 424,128' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 424,464 L 424,496' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,192 L 472,224' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,224 L 472,240' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,272 L 472,336' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,336 L 472,352' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 472,384 L 472,416' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 584,240 L 584,272' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 584,352 L 584,384' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpath d='M 152,224 L 152,232' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='168.000000,224.000000 156.000000,218.399994 156.000000,229.600006' fill='currentColor' transform='rotate(90.000000, 152.000000, 224.000000)'\u003e\u003c/polygon\u003e\n\u003cpath d='M 152,336 L 152,344' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='168.000000,336.000000 156.000000,330.399994 156.000000,341.600006' fill='currentColor' transform='rotate(90.000000, 152.000000, 336.000000)'\u003e\u003c/polygon\u003e\n\u003cpath d='M 312,80 L 312,88' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='328.000000,80.000000 316.000000,74.400002 316.000000,85.599998' fill='currentColor' transform='rotate(90.000000, 312.000000, 80.000000)'\u003e\u003c/polygon\u003e\n\u003cpath d='M 312,448 L 312,456' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='328.000000,448.000000 316.000000,442.399994 316.000000,453.600006' fill='currentColor' transform='rotate(90.000000, 312.000000, 448.000000)'\u003e\u003c/polygon\u003e\n\u003cpolygon points='448.000000,16.000000 436.000000,10.400000 436.000000,21.600000' fill='currentColor' transform='rotate(180.000000, 440.000000, 16.000000)'\u003e\u003c/polygon\u003e\n\u003cpath d='M 472,224 L 472,232' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='488.000000,224.000000 476.000000,218.399994 476.000000,229.600006' fill='currentColor' transform='rotate(90.000000, 472.000000, 224.000000)'\u003e\u003c/polygon\u003e\n\u003cpath d='M 472,336 L 472,344' fill='none' stroke='currentColor'\u003e\u003c/path\u003e\n\u003cpolygon points='488.000000,336.000000 476.000000,330.399994 476.000000,341.600006' fill='currentColor' transform='rotate(90.000000, 472.000000, 336.000000)'\u003e\u003c/polygon\u003e\n\u003ctext text-anchor='middle' x='64' y='372' fill='currentColor' style='font-size:1em'\u003eT\u003c/text\u003e\n\u003ctext text-anchor='middle' x='72' y='372' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='80' y='372' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='88' y='260' fill='currentColor' style='font-size:1em'\u003ew\u003c/text\u003e\n\u003ctext text-anchor='middle' x='88' y='372' fill='currentColor' style='font-size:1em'\u003eg\u003c/text\u003e\n\u003ctext text-anchor='middle' x='96' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='96' y='372' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='104' y='260' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='104' y='372' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='112' y='260' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='120' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='120' y='372' fill='currentColor' style='font-size:1em'\u003eW\u003c/text\u003e\n\u003ctext text-anchor='middle' x='128' y='260' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='128' y='372' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='136' y='260' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='136' y='372' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='144' y='260' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='144' y='372' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='152' y='260' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='152' y='372' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='160' y='260' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='160' y='372' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='168' y='260' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='168' y='308' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='168' y='372' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='176' y='260' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='176' y='308' fill='currentColor' style='font-size:1em'\u003eD\u003c/text\u003e\n\u003ctext text-anchor='middle' x='176' y='372' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='184' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='184' y='308' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='184' y='372' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='192' y='260' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='192' y='308' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='192' y='372' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='200' y='260' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='200' y='308' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='208' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='208' y='308' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='208' y='372' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='216' y='260' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='216' y='308' fill='currentColor' style='font-size:1em'\u003ev\u003c/text\u003e\n\u003ctext text-anchor='middle' x='216' y='372' fill='currentColor' style='font-size:1em'\u003eO\u003c/text\u003e\n\u003ctext text-anchor='middle' x='224' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='224' y='372' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='232' y='308' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='232' y='372' fill='currentColor' style='font-size:1em'\u003eT\u003c/text\u003e\n\u003ctext text-anchor='middle' x='232' y='484' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='240' y='308' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='240' y='484' fill='currentColor' style='font-size:1em'\u003eu\u003c/text\u003e\n\u003ctext text-anchor='middle' x='248' y='116' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='248' y='484' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='256' y='116' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='256' y='308' fill='currentColor' style='font-size:1em'\u003eW\u003c/text\u003e\n\u003ctext text-anchor='middle' x='256' y='484' fill='currentColor' style='font-size:1em'\u003eh\u003c/text\u003e\n\u003ctext text-anchor='middle' x='264' y='116' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='264' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='264' y='484' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='272' y='116' fill='currentColor' style='font-size:1em'\u003ek\u003c/text\u003e\n\u003ctext text-anchor='middle' x='272' y='308' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='272' y='484' fill='currentColor' style='font-size:1em'\u003ev\u003c/text\u003e\n\u003ctext text-anchor='middle' x='280' y='116' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='280' y='308' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='280' y='484' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='288' y='20' fill='currentColor' style='font-size:1em'\u003ep\u003c/text\u003e\n\u003ctext text-anchor='middle' x='288' y='116' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='288' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='288' y='484' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='296' y='20' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='296' y='116' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='296' y='308' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='304' y='20' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='304' y='116' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='304' y='308' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='304' y='484' fill='currentColor' style='font-size:1em'\u003eN\u003c/text\u003e\n\u003ctext text-anchor='middle' x='312' y='20' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='312' y='116' fill='currentColor' style='font-size:1em'\u003ep\u003c/text\u003e\n\u003ctext text-anchor='middle' x='312' y='308' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='312' y='484' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='320' y='20' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='320' y='116' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='320' y='308' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='320' y='484' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='20' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='68' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='116' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='164' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='308' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='436' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='328' y='484' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='336' y='68' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='336' y='116' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='336' y='164' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='336' y='436' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='336' y='484' fill='currentColor' style='font-size:1em'\u003ef\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='68' fill='currentColor' style='font-size:1em'\u003eN\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='116' fill='currentColor' style='font-size:1em'\u003eh\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='164' fill='currentColor' style='font-size:1em'\u003eN\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='308' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='436' fill='currentColor' style='font-size:1em'\u003eN\u003c/text\u003e\n\u003ctext text-anchor='middle' x='344' y='484' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='68' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='116' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='164' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='436' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='352' y='484' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='68' fill='currentColor' style='font-size:1em'\u003e:\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='116' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='164' fill='currentColor' style='font-size:1em'\u003e:\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='308' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='436' fill='currentColor' style='font-size:1em'\u003e:\u003c/text\u003e\n\u003ctext text-anchor='middle' x='360' y='484' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='368' y='308' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='368' y='484' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='376' y='68' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='376' y='164' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='376' y='436' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='376' y='484' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='384' y='68' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='384' y='164' fill='currentColor' style='font-size:1em'\u003ex\u003c/text\u003e\n\u003ctext text-anchor='middle' x='384' y='436' fill='currentColor' style='font-size:1em'\u003eu\u003c/text\u003e\n\u003ctext text-anchor='middle' x='384' y='484' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='392' y='68' fill='currentColor' style='font-size:1em'\u003ew\u003c/text\u003e\n\u003ctext text-anchor='middle' x='392' y='164' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='392' y='436' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='392' y='484' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='400' y='68' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='400' y='164' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='400' y='372' fill='currentColor' style='font-size:1em'\u003eT\u003c/text\u003e\n\u003ctext text-anchor='middle' x='400' y='436' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='408' y='68' fill='currentColor' style='font-size:1em'\u003ep\u003c/text\u003e\n\u003ctext text-anchor='middle' x='408' y='164' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='408' y='372' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='408' y='436' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='416' y='68' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='416' y='164' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='416' y='260' fill='currentColor' style='font-size:1em'\u003ep\u003c/text\u003e\n\u003ctext text-anchor='middle' x='416' y='372' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='416' y='436' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='424' y='68' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='424' y='164' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='424' y='260' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='424' y='372' fill='currentColor' style='font-size:1em'\u003eg\u003c/text\u003e\n\u003ctext text-anchor='middle' x='424' y='436' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='432' y='68' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='432' y='164' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='432' y='260' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='432' y='372' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='432' y='436' fill='currentColor' style='font-size:1em'\u003ef\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='68' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='164' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='260' fill='currentColor' style='font-size:1em'\u003eg\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='372' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='436' fill='currentColor' style='font-size:1em'\u003eu\u003c/text\u003e\n\u003ctext text-anchor='middle' x='440' y='484' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='448' y='68' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='448' y='164' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='448' y='260' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='448' y='436' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='448' y='484' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='456' y='164' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='456' y='260' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='456' y='372' fill='currentColor' style='font-size:1em'\u003eX\u003c/text\u003e\n\u003ctext text-anchor='middle' x='456' y='436' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='456' y='484' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='464' y='164' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='464' y='260' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='464' y='372' fill='currentColor' style='font-size:1em'\u003eM\u003c/text\u003e\n\u003ctext text-anchor='middle' x='464' y='436' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='464' y='484' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='472' y='164' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='472' y='260' fill='currentColor' style='font-size:1em'\u003ek\u003c/text\u003e\n\u003ctext text-anchor='middle' x='472' y='372' fill='currentColor' style='font-size:1em'\u003eL\u003c/text\u003e\n\u003ctext text-anchor='middle' x='472' y='436' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='472' y='484' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='20' fill='currentColor' style='font-size:1em'\u003eE\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='164' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='260' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='372' fill='currentColor' style='font-size:1em'\u003e-\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='436' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='480' y='484' fill='currentColor' style='font-size:1em'\u003eu\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='20' fill='currentColor' style='font-size:1em'\u003ev\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='164' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='260' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='308' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='372' fill='currentColor' style='font-size:1em'\u003eR\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='436' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='488' y='484' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='20' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='164' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='308' fill='currentColor' style='font-size:1em'\u003eC\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='324' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='372' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='436' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='496' y='484' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='20' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='164' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='260' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='308' fill='currentColor' style='font-size:1em'\u003eh\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='324' fill='currentColor' style='font-size:1em'\u003eh\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='372' fill='currentColor' style='font-size:1em'\u003eC\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='436' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='504' y='484' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='20' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='164' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='260' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='324' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='436' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='512' y='484' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='20' fill='currentColor' style='font-size:1em'\u003eB\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='260' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='308' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='324' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='372' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='436' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='520' y='484' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='528' y='20' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='528' y='260' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='528' y='308' fill='currentColor' style='font-size:1em'\u003ek\u003c/text\u003e\n\u003ctext text-anchor='middle' x='528' y='372' fill='currentColor' style='font-size:1em'\u003eO\u003c/text\u003e\n\u003ctext text-anchor='middle' x='528' y='436' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='536' y='20' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='536' y='308' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='536' y='324' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='536' y='372' fill='currentColor' style='font-size:1em'\u003eS\u003c/text\u003e\n\u003ctext text-anchor='middle' x='536' y='484' fill='currentColor' style='font-size:1em'\u003eO\u003c/text\u003e\n\u003ctext text-anchor='middle' x='544' y='20' fill='currentColor' style='font-size:1em'\u003ed\u003c/text\u003e\n\u003ctext text-anchor='middle' x='544' y='324' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='544' y='372' fill='currentColor' style='font-size:1em'\u003eT\u003c/text\u003e\n\u003ctext text-anchor='middle' x='544' y='484' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='552' y='20' fill='currentColor' style='font-size:1em'\u003eg\u003c/text\u003e\n\u003ctext text-anchor='middle' x='552' y='308' fill='currentColor' style='font-size:1em'\u003eW\u003c/text\u003e\n\u003ctext text-anchor='middle' x='552' y='324' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='552' y='484' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='560' y='20' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='560' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='560' y='324' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='560' y='484' fill='currentColor' style='font-size:1em'\u003ey\u003c/text\u003e\n\u003ctext text-anchor='middle' x='568' y='308' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='568' y='324' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='568' y='484' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='576' y='20' fill='currentColor' style='font-size:1em'\u003e(\u003c/text\u003e\n\u003ctext text-anchor='middle' x='576' y='308' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='576' y='324' fill='currentColor' style='font-size:1em'\u003ev\u003c/text\u003e\n\u003ctext text-anchor='middle' x='584' y='20' fill='currentColor' style='font-size:1em'\u003e1\u003c/text\u003e\n\u003ctext text-anchor='middle' x='584' y='308' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='584' y='324' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='592' y='20' fill='currentColor' style='font-size:1em'\u003e5\u003c/text\u003e\n\u003ctext text-anchor='middle' x='592' y='308' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='592' y='324' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='600' y='308' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='600' y='324' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='608' y='20' fill='currentColor' style='font-size:1em'\u003em\u003c/text\u003e\n\u003ctext text-anchor='middle' x='608' y='308' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='616' y='20' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='616' y='308' fill='currentColor' style='font-size:1em'\u003eo\u003c/text\u003e\n\u003ctext text-anchor='middle' x='616' y='324' fill='currentColor' style='font-size:1em'\u003eP\u003c/text\u003e\n\u003ctext text-anchor='middle' x='624' y='20' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='624' y='308' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='624' y='324' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='632' y='20' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003ctext text-anchor='middle' x='632' y='324' fill='currentColor' style='font-size:1em'\u003en\u003c/text\u003e\n\u003ctext text-anchor='middle' x='640' y='308' fill='currentColor' style='font-size:1em'\u003ef\u003c/text\u003e\n\u003ctext text-anchor='middle' x='640' y='324' fill='currentColor' style='font-size:1em'\u003eg\u003c/text\u003e\n\u003ctext text-anchor='middle' x='648' y='308' fill='currentColor' style='font-size:1em'\u003ei\u003c/text\u003e\n\u003ctext text-anchor='middle' x='648' y='324' fill='currentColor' style='font-size:1em'\u003eb\u003c/text\u003e\n\u003ctext text-anchor='middle' x='656' y='308' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='656' y='324' fill='currentColor' style='font-size:1em'\u003ea\u003c/text\u003e\n\u003ctext text-anchor='middle' x='664' y='308' fill='currentColor' style='font-size:1em'\u003es\u003c/text\u003e\n\u003ctext text-anchor='middle' x='664' y='324' fill='currentColor' style='font-size:1em'\u003ec\u003c/text\u003e\n\u003ctext text-anchor='middle' x='672' y='308' fill='currentColor' style='font-size:1em'\u003et\u003c/text\u003e\n\u003ctext text-anchor='middle' x='672' y='324' fill='currentColor' style='font-size:1em'\u003ek\u003c/text\u003e\n\u003ctext text-anchor='middle' x='680' y='308' fill='currentColor' style='font-size:1em'\u003e,\u003c/text\u003e\n\u003ctext text-anchor='middle' x='688' y='324' fill='currentColor' style='font-size:1em'\u003er\u003c/text\u003e\n\u003ctext text-anchor='middle' x='696' y='324' fill='currentColor' style='font-size:1em'\u003ee\u003c/text\u003e\n\u003ctext text-anchor='middle' x='704' y='324' fill='currentColor' style='font-size:1em'\u003el\u003c/text\u003e\n\u003ctext text-anchor='middle' x='712' y='324' fill='currentColor' style='font-size:1em'\u003e)\u003c/text\u003e\n\u003c/g\u003e\n\n\t\t\u003c/svg\u003e\n\t\n\u003c/div\u003e\n\u003cp\u003eI hope that renders on my blog. Hugo doesn\u0026rsquo;t natively support Mermaid diagrams; it supports Goat diagrams, for some reason. (Will it translate to RSS though?) [UPDATE: The answer is no, no it won\u0026rsquo;t. Oops. Note to self: Future diagrams need to be images.]\u003c/p\u003e\n\u003cp\u003eIn narrative form:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eA \u003ccode\u003epoller\u003c/code\u003e checks the blog\u0026rsquo;s JSON feed for updates every 15 minutes. If there\u0026rsquo;s a new post, an SNS event is dispatched. (It\u0026rsquo;s the same event that triggers posting a notification to the fediverse.) (Someday I want to work out a way to get my Hugo deployment to trigger notifications when deployment is complete.)\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003elink-dispatcher\u003c/code\u003e serverless function triggers, which extracts all the external links from the post within the \u003ccode\u003e\u0026lt;article\u0026gt;\u003c/code\u003e, and sends out SNS events for each link.\u003c/li\u003e\n\u003cli\u003eBoth the \u003ccode\u003ewebmention-sender\u003c/code\u003e and \u003ccode\u003epingback-sender\u003c/code\u003e serverless functions are triggered, which perform the work of discovering the right endpoints and sending webmentions and pingbacks to external sites. (Pingbacks are not sent if the target site supports webmentions.)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eI\u0026rsquo;ve tested the functions as much as I can locally (using localstack), but I won\u0026rsquo;t actually know if it all works until I publish this post, at which time it will trigger the above chain reaction of serverless functions and SNS events.\u003c/p\u003e\n\u003cp\u003eI will now embed a link to \u003ca href=\"https://everettrenshaw.com/winter-arrived-today/\"\u003ea WordPress site I own\u003c/a\u003e so that if it crashes spectacularly, at least it won\u0026rsquo;t hurt anybody else. Yikes, I haven\u0026rsquo;t updated that site since 2018. It\u0026rsquo;s obsolete now and needs to be destroyed.\u003c/p\u003e\n\u003cp\u003eI \u003cem\u003ereceive\u003c/em\u003e webmentions and pingbacks by leveraging \u003ca href=\"https://webmention.io\"\u003ewebmention.io\u003c/a\u003e, a site that I basically never check, so I have no idea if anyone is or has been linking to my blog.\u003c/p\u003e\n\u003cp\u003eSomeday I might wire up something of my own to handle that, but it\u0026rsquo;s a little more complicated to setup an always-on server to respond to POST requests. Well, not \u003cem\u003ecomplicated\u003c/em\u003e per se\u0026hellip; the word I was looking for was \u003cem\u003eexpensive\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003eI could potentially use my Vultr VPS as a webmention receiver, since it\u0026rsquo;s now running my GoToSocial instance and needs to be always on anyway. Food for thought. An Antigravity project for another day.\u003c/p\u003e\n\u003cp\u003eOne thing I probably \u003cem\u003ewon\u0026rsquo;t\u003c/em\u003e do is add a list of pingbacks and webmentions at the bottom of each post page, like WordPress did. (Does it still do that?) I\u0026rsquo;ll have to find some other way to get notified if and when anyone ever references my site.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t know if I\u0026rsquo;ve improved much in terms of writing during Blaugust this year, but I\u0026rsquo;ve made a \u003cem\u003eshocking\u003c/em\u003e number of changes to the tech running under my blog\u0026rsquo;s hood this year, undoubtedly more than I ever have at once before, and that\u0026rsquo;s worth the price of admission this year for me.\u003c/p\u003e\n\u003cp\u003eAnd another thing\u0026hellip;\u003c/p\u003e\n\u003cp\u003eI host this blog entirely within AWS, mainly because a baseline AWS knowledge happens to be useful for my day job. I set Antigravity to work on \u003ca href=\"/reports/cost.html\"\u003eanalyzing my AWS cost breakdown\u003c/a\u003e and found several things I was paying for that I no longer need.\u003c/p\u003e\n\u003cp\u003eMy goal has always been to keep the hosting of the blog on AWS as close to $5/month as possible (not counting the domain name renewals). It\u0026rsquo;s been approaching $8/month for the last year though.\u003c/p\u003e\n\u003cp\u003eUPDATE: The test worked. A pingback and webmention were both successfully sent from this post.\u003c/p\u003e\n\u003cfooter class=\"u-highlight\"\u003e\n\u003cp\u003eThis post is for day 18 of \u003ca href=\"/tags/blaugust-2026/\"\u003eBlaugust 2026\u003c/a\u003e.\u003c/p\u003e\n\u003c/footer\u003e\n\n\n",
      "date_modified": "2026-08-18T07:47:02-04:00",
      "date_published": "2026-08-18T07:04:00-04:00",
      "id": "https://endgameviable.com/post/2026/08/sending-webmentions-and-pingbacks/",
      "image": "https://media.endgameviable.com/img/2026/08/antigravity_workspace.webp",
      "summary": "Blaugust Day 18. Sending webmentions and pingbacks to external sites referenced in blog posts using AWS Lambda serverless functions and SNS.",
      "tags": [
        "Blaugust 2026",
        "Blogging",
        "Antigravity",
        "AWS",
        "Development",
        "Quest for the One Blog"
      ],
      "title": "Sending Webmentions and Pingbacks",
      "url": "https://endgameviable.com/post/2026/08/sending-webmentions-and-pingbacks/"
    }
  ],
  "language": "en-us",
  "title": "Endgame Viable",
  "version": "https://jsonfeed.org/version/1.1"
}
