Gigawatts of Steel and Flame: A Power Metal History

Aside: Many projects have been in-flight and nearing completing since we completed the library last year, and I'll absolutely update here when they're actually finished!

The same periodical disk-exchange club that led to me putting together "Most Likely to Rock: A Metal Overview" back in August of 2015 (honestly am a little gutted to realize it's been nine years) is still alive and kicking. A lot of our exchange rounds are free-form or have set themes, but for the second time in the history of the club I was tasked with doing a genre deep-dive. I chose to sink my teeth into Power Metal and learn a bit more about where it actually came from. A huge shout-out; Johan Pettersson's articles on the history of power metal over at deathmetal.org were an enormous resource both for choosing individual tracks as well as for building my mental framework for understanding how the arc of the evolution of the genre we now know as power metal. I highly encourage you to read his articles if you want the thorough analysis.

The intent of this playlist was to provide an abbreviated history of the genre of power metal told through 18 tracks spanning what I understood as the four major epochs of it's development (progenitors, the parallel development of 1st wave European power metal and early US power metal, the 2nd wave of power metal, and finally modern power metal). Due to the conceit of the club this project is restricted to the 80 minute play time of a standard CD-R disk, which means many many artists did not make the final cut, and yes, some amazing tracks had to be subbed out for shorter tracks to make room for more. As much as I love a good 10-minute-epic, they couldn't make the list.

Without further yammering, here's the goods. All the tracks can be listened to at the YouTube playlist linked below, and the lyrics and liner notes are available as a PDF. Note: While I have deep reservations about AI art displacing human artists, this is the sort of one-off goofy non-commercial personal project that it seems ideal for; the cover image was generated by Bing's image creator, the font used is "The Darkest Night" LJ Design Studios available for personal use on FontSpace

[PDF Booklet] [YouTube Playlist]

Wood: Home Library Complete!

The project that we kicked off way back in October of 2021 is finally coming to completion! We now have a full home library, eight full bookcases and five extra shelves in retrofitted closet-nook. Was it more expensive than buying eight higher-end bookcases? Yes. Did it take longer than just buying them? Also yes. I’m glad we did it though, we learned a ton about woodworking, project planning, HVLP spraying of paint and lacquer, and gained a ton of confidence for tackling big projects in the future. At the moment only a fraction of the library is catalogued, something I’ll address in the weeks and months to come, but it’s already our favorite room in the house. One detail not captured in the photos; the lighting has been upgraded to Philips Hue bulbs and a light strip is recessed in the nook to keep the books legible and looking good even after dusk.

As with any project, I have to force myself not to pick up on all the wonky mistakes made along the way, but I’m genuinely happy with how it all turned out.

Planned library layout in sketchup
Closet retrofit sketch
The closet nook and fiction shelves
The closet nook and fiction shelves
The antiquarian books and window
The antiquarian books and window
The nonfiction section
The nonfiction section

A little section here for important things we learned along the way.

  • "Brushing lacquer" can be sprayed in an HVLP gun by diluting 1 part of it to 2 parts lacquer thinner, and 40 psi is a good pressure. We saved a ton of money just buying the tool rather than using dozens of aerosol cans.
  • That same HVLP sprayer can do paint, incredibly even layers of it, just clean it thoroughly afterwards.
  • Don't trust that your router bit is at the center of it's base plate - measure that!
  • 3/4" thick plywood isn't precisely 0.750", don't make it a critical dimension when designing. Same for the width and length, you usually get slightly more than 4' x 8' in a sheet.
  • Think about the direction of gravity during the glue-up, this is where you can accumulate skew across a large piece depending on how you orient it.
  • Keep track of your measurements; are they center-to-center, inner-edge to inner-edge, something else? Be clear in sketches.
  • If you're making more than one of something, build a jig, but really make sure its the right jig before you get cutting.
  • Don't stress the small stuff, wood filler can work some real magic, and big mistakes teach you something important (make scrap for the next project).

2022 Year-in-Review Playlist

A couple of my friends and I have been doing a semi-regular disk exchange over the last 11 years. The theme changes every round, but once a year we try to pull together a playlist representative of what we've been enjoying over the previous year, limited to the 74 minute capacity of a CD-R. There's no requirement that the tracks are new in that year, and we frequently fall behind schedule, so June 2023 is as good a time as any to publish a 2022 retrospective. So without further preamble, here's my submission for 2022.  

Donut Towns That Yet Wow (2022)
(full playlist link)

Woodworking: Stand for Nuobell Dumbells

So far I'm keeping a cadence regular updates! Back in July of 2021 I ordered a pair of Nuobell adjustable dumbbells, and they've been working great. However, I didn't splurge for the stand when I got them, rationalizing "I've got a woodshop, I can just build one! I don't need to spend $115 plus shipping!" Well, a little over two years of the dumbbells living on the gym-mat floor later, I've actually built one. I planned it out in sketchup to built from cleaned up 2x4 lumber, except the top surface and bottom shelf, which I had large enough scraps of 3/4" plywood to make. Cost of materials was about $15 worth of nicer-grade 2x4x6 lumber from the hardware store, the cross-braces were joined with pocket hole screws, everything else was wood glue and screws. I contemplated painting it, but decided it leave it as it is for now; it might get a second sanding and a coat of paint once it's gotten dinged up living in the gym for a while.

Dumbell stand, ready to assemble
Dumbell stand, ready to assemble
Built and in the gym!
Built and in the gym!

Now, there were a couple of mistakes I got to learn from along the way. I originally measured the two dumbbell cradles side-by-side plus margin as 18" x 22", and imagined them sitting vertically side-by-side, so I could easily pull them off simultaneously. It turns out, (1) I got my dimensions flipped, my stand is wider than it is deep, and (2), at 30 degrees of tilt, there's nothing actually holding the extra plates in place, they just fall down once the dumbbell is removed. Thankfully, these basically cancelled out, I was forced to orient them horizontally, which is the stand I actually built. Looking more closely at the commercial stand I see that the angle is both smaller than I used, and at a compound angle, that is the dumbbells are tilted toward the user and slightly inward. 

Library Catalogue: Searching in Google Sheets

This is a short update, mostly so it's jotted down somewhere for later. With the bulk of our library catalogued in one big google sheet, but with a large number of un-catalogued books still to add, I needed a quick way to check if each book was already listed or not. Rather than CTRL+F'ing each title, I wanted to see if I could build an interface for keyword searching the list and return a matching subset.  It ought to also prove useful when out at bookshops to prevent accidentally doubling up on titles. 

Link to the current version of the Library

The operative bit of code, living in cell C3 in the "Live Search" sheet, is a query pointed at the entire dataset, combined with checking a handful of checkboxes to determine which columns to return in the filtered view. The checkboxes here are B4 through B10, and we force the search string and targets to all lower-case.

=query('Raw Data Rows'!A1:G , "Select " & IF(B4, "B", "") & IF(B5, if(B4, ", C", "C"),"") & IF(B6, if(OR(B4,B5), ", D", "D"),"") & IF(B7, if(OR(B4,B5,B6), ", E", "E"),"") & IF(B8, if(OR(B4,B5,B6,B7), ", A", "A"),"") & IF(B9, if(OR(B4,B5,B6,B7,B8), ", F", "F"),"") & IF(B10, if(OR(B4,B5,B6,B7,B8,B9), ", G", "G"),"") & " where lower(B) Contains '" & lower(B1) & "' OR lower(C) Contains '" & lower(B1) & "' OR lower(D) Contains '" & lower(B1) & "' ")

Meanwhile we're still finishing off the last few shelves, and will definitely post photos once they're all together organized!

Woodworking: Lumber Cart

Keeping up with the roughly one-post-a-month cadence, I can share that I got in a weekend of woodworking!

After just a handful of years of doing the occasional woodworking project, we had an abundance of offcuts, scraps, and other bits of wood spread across four or five bins in the garage. After coming across Steve Ramsey's video showing off a simple lumber cart, along with provided drawings, I decided that was probably the right solution for our garage shop. That happened probably a year ago, and we picked up the plywood sheets a couple weeks back when we had a truck rented to haul more materials for the library build. Only last week did we finally set aside from time to get the rough cuts done, and this past weekend I sank about 4 hours each day into cutting the dadoes and bevels, re-cutting pieces I'd screwed up, gluing and everything, and of course running to buy casters, washers, screws, etc. For a piece of shop furniture, it took a solid time investment; that said, the garage is so much cleaner and knowing where, for example, all my 3/4" stock is, will make it a lot easier to know what's needed for future projects. I didn't think to take photos until everything was done, so enjoy a corner of the freshly de-crowded garage.

Lumber cart, side
Lumber cart, side
Lumber cart, back
Lumber cart, back

Elden Ring: Level 1 Play Through

Back in early 2022 I picked up a copy of Elden Ring on steam and played through it a couple times, trying out different builds and pursuing different quests each time. I can't recall exactly how I got the idea of doing challenge runs into my head, probably YouTube, but I decided to do a couple. First was a fist-weapon only run, which honestly was a blast and far easier than I thought it would be. Second was a level 1 run, so starting with the Wretch class and never leveling up. That proved to be a much much harder challenge. While there were certainly breaks, and a month-long vacation in the middle, it took me about 6 months to complete that run. After about the first third of the run, it occurred to me to record my boss fight attempts, partly for instant-reply to figure out where I'd screwed up, but also to share the successful attempts afterward. The /r/OneBros subreddit, a place where people post their wins in From Soft games with characters at minimum level, had no small part in encouraging me to keep at it. Some of the videos are straightforward recordings with minimal annotation, while others I used as exercises to practice my basic video editing skills. I've embedded the toughest fight below, but the whole playlist can be found here.

EDH Variant: Respawn Commander

I first heard of a similar variant a few months back while visiting a new LGS on a day trip. After a subsequent commander night, I decided I would try and pull the details back together because the benefits seemed quite real. The general problem statement was, Commander games run too long and getting knocked out early is really unfun. After some discussion over on reddit, I've pulled together a proposed set of rules. I haven't gotten a chance to test-drive these yet, so I'm absolutely open to suggestions.

TL;DR: Commander, but played for a set amount of time. Points awarded for knocking out opponents. KO'd players rejoin the game to play more.

Respawn Commander - Detailed Rules

Setup, Deck Building, and Winning

  • Players start with 20 life
  • 100 card singleton decks, normal commander color identity restrictions, same banned list, London mulligan, 21 commander damage also results in a KO.
  • All players draw on their first turn.
  • The game runs for a set amount of time, decided before the game begins.
  • Whoever accrues the most points, wins.

Points

  • You get two points each time you knock a player out of the game. If it required a joint effort, one point is awarded for the "assist"
    • Example: Player A deals player B 19 damage in a massive swing. Then Player C casts Shock, knocking B out. Player C would receive 2 points for the KO, A would get 1 for the assist.
    • These points can be discussed on a case-by-case basis, but in general should be rare.
  • Infinite combos and "You win the game" effects: If a player demonstrates a game-winning infinite combo or resolves a spell or ability that causes them to win the game, and all other players pass priority, they are awarded 6 points. Then the relevant permanents, spells on the stack, cards in hard or graveyard are exiled. Commanders can still be sent to the command zone as a replacement effect.
  • If a player knocks themselves out (e.g. by paying life, milling themselves then drawing off an empty deck, resolving a trigger that causes them to lose the game), one point is awarded to each opponent.

Being Knocked Out, What is the Bubble?

  • After a player is knocked out (life reduced to 0, 10 poison counters, "you lose the game effects", etc) they enter the "bubble" for their next 3 turns.
  • While in the bubble, they take their turns in normal turn order.
  • When a player enters the bubble, their life total is reset to 20 and poison counters to zero. If they were knocked out by being unable to draw, all cards they own in exile and in their graveyard are shuffled into their deck.
  • Players inside the bubble can only cast spells at sorcery speed on their own turns, even if they control an effect that would overwrite this (e.g. Shimmer Myr, Vedalken Orrery.)
  • Players inside the bubble cannot attack other players, and cannot be attacked by other players.
  • Permanents controlled by players inside the bubble are considered phased out, and cannot interact with the other players nor be interacted with by them.
  • Spells cast by players inside the bubble that require interaction with other players (e.g. Fact or Fiction) should be discussed on a case-by-case basis, with the understanding that punisher cards (e.g. Browbeat) and similar cannot be cast.
  • As a guiding philosophy; players in the bubble can rebuild, but cannot impact the exterior game until they return to it.

Edge Cases

  • TKO: If a player knocks out two or more opponents on two of their consecutive turns, and no other player has more points than them, they win immediately and the game ends early.
  • Winning while inside the bubble: If a player assembles an infinite combo or triggers a win the game effect while inside the bubble, it fizzles. If they generate infinite token creatures, they still must wait until they leave the bubble to attack with them.
  • Losing while inside the bubble: If a player somehow manages to knock themselves out while inside the bubble, one point is awarded to the other players and they re-enter the bubble, resetting life and bubbled turns. 

2022: Year in Review

Despite best intentions, I effectively stopped updating this site for the entirety of 2022. I've got a pile of projects and personal updates to share; let's take a look month by month.

January: Mostly goal setting, one of the big ones for this year was to cycle at least 1,000 miles before the year was up, which I actually managed to polish off in October! A marked improvement from the previous year, but still leaves plenty of room for improvement in 2023.

Getting started on my cycling goal
Getting started on my cycling goal

February: I spent some time re-playing Morrowind, my favorite of the Elder Scrolls games, but this time with the Morrowind Overall Improvement Suite Enhanced (MOISE) through Wabbajack. It was my first time using Wabbajack and I was surprised at how easy it made deploying the wild number of mods in the package. Have to say, it still holds up all these years later. This month I also polished off Pokemon Brilliant Diamond, which I didn't find as compelling as Platinum, but fun enough, and Kentucky Route Zero, which my friends had been pushing to the top of my queue for months. KRZ was amazing, and quite unique.

March: A significant amount of time in March went into organizing my unwieldy Magic collection. I threw together two shelves sized to wedge perfectly into my office closet, sorted everything, and printed labels for long boxes. Now that I'm writing this, I'm actually thinking to have another go with an eye toward spring cleaning, since I've absolutely accumulated more copies / variants of cards than I'm ever realistically going to use. I sped through Pokemon Legends: Arceus in March, which I thoroughly enjoyed. It was the first really fresh take on the formula in ages, and I absolutely devoured it.

April: A big month work-wise, so not a ton happened home-side. This was the month were the rough sketch for our library finally became a CAD model. It was also when I first began really digging into Elden Ring, a game which eventually became my big obsession for the year.

The pile of fancy plywood that inhabited the living room for most of the year
The pile of fancy plywood that inhabited the living room for most of the year

May: A busy month! A playlist was sent out for my long-running disk exchange, I found a much safer bike route to work that I began using regularly, and we finally began cutting wood for the library. There were a few false starts and errors to sort out (always be clear if you’re measuring shelves center-to-center or inner-face to inner-face, material sold as 3/4” thick can be off by 1/16” and no one will tell you, etc), but real progress was made. Our group of magic-playing friends finally met up again, and I built new EDH decks for Ouliana and myself for the occasion (Jolene treasures and Kotori vehicles) which worked well. In less fun news, the water heater that came with the house finally gave out, after a bit of research we replaced it was a heat-exchanger based electric heater, which has performed beautifully and keeps the garage cool and dry as a bonus.

The new water heater arrives!
The new water heater arrives!
Prototype shelf gets glued up
Prototype shelf gets glued up

June: Rather than risk the expensive walnut plywood, we built the same design in bargain priced maple plywood; this first prototype bookshelf was glued up and put in my office! The other notable project in June was finally putting up mirrors in the garage gym, which required us to learn how to cut thicker glass. The methods for handling stained glass still work in principal, but we had to upgrade to some beefier “grozing” pliers to get consistent breaks.

First shelf finished!
First shelf finished!

Fancy mirrors cut and installed
Fancy mirrors cut and installed

July: I made a trip out to Arizona to see family, which was a fun time. We hosted one of Ouliana’s friends for bit, and began lacquering the bookshelves. The details of HVLP spraying were a little intimidating at first, but once we’d getting the mix ratio correct (and remembered to clean the spray gun!) it was an absurdly easy way to apply multiple coats of lacquer to large projects. This was the month were most of the library got built.

After a few design tweaks, the first walnut shelf is complete
After a few design tweaks, the first walnut shelf is complete
LIbrary Layout in CAD

August: A month of travel! I joined Ouliana on a road trip that took us to Portland, Seattle, and Vancouver, and attended Siggraph for the first time, which was an absolute blast. It'd been years since I'd gotten to travel with my sister, which was a real treat. We even managed to hop over to Victoria for a day via seaplane, which was fun!

While it's basically a fancy ferry, the novelty can't be denied
While it's basically a fancy ferry, the novelty can't be denied

September: Another busy month at work, not a ton of projects got attention. I did start experimenting a bit with fasting, with some success with 8-36 hour long fasts. Success meaning I felt good, wasn’t hungry the entire time, and could easily focus on tasks. Going forward I’ll likely only fast for 8 hours or so a day, since the pattern of biking in, working, and biking home before breaking my fast felt quite good, and still gave me the energy and protein intake to support lifting. This was also the month I started a rune level 1 run of Elden Ring, and started recording videos of the notable fights. This run would continue through the end of the year, and still has two fights left to close out. This was both an excuse to practice my video editing skills, engage more deeply with a game I really enjoyed, but also to take part in the /r/OneBros subreddit of challenge runners, which has generally proved to be a bit more friendly and open than the /r/EldenRing community.

First three shelves down, randomly populated with books
First three shelves down, randomly populated with books

October: Another year, another Spooky Movie Month! This year we fell off the wagon a bit, and only a handful of the selections actually got watched, but it remains a fun tradition I’ll no doubt return to. In October we also made a trip out to Las Vegas for Magic’s 30th anniversary event! After playing the game on and off since 1995, I finally obtained a piece of power, a NM Unlimited Mox Jet. Not a major life event for most, but still a big day for me. I also picked up the last few cards for another deck (Nebuchadnezzar old cards) While in Vegas we also visited OmegaMart, which was amazing, and caught Tom Segura live, which was a treat. We got back just before Halloween hit, and went big on our halloween decorations, including the now-infamous 12 foot skeleton.

I got to meet Mark Rosewater at Magic 30th!
I got to meet Mark Rosewater at Magic 30th!
My first piece of power!
My first piece of power!
Our 2022 Halloween display
Our 2022 Halloween display

November: Given holiday travel, this was the month a lot of the end-of-year work had to be done, plus all the planning for the trip in December. The one project I did find time for this month was attempting to improve the fog machine we used at Halloween. The fog everyone wants is a spooky layer, hovering about ankle-high, obscuring the ground. Unfortunately, the fog most machines produce is hot and light, and mostly floats away in large clouds. We did grab something advertising itself as a low-lying fog machine that passes the hot fog through a chamber you load with ice, but it was hardly any better. Searching around surfaced this video demonstrating an ice-less solution. The guy postulates that it’s not the temperature of the fog that dominates it’s behavior, but it’s water content, which tracks since loading with water will change the density a lot more than a few degrees of temperature change. I went ahead and hunted down the parts, between Amazon for the transducers, and Lowes for the containers and couplers, and built a significantly improved fog generator! The other notable event was the acquisition of a wood lathe through The Crucible's annual garage sale! We haven't turned anything yet, but absolutely will soon.

New lathe!
New lathe!

December: With travel fast approaching, I had to batch out a lot of Christmas gifts in just a few days, so I defaulted to the things I know people will enjoy: jerky, cookies, and books. Unfortunately the dehydrator I’ve been using for close to a decade now finally gave up the magic smoke, and had to be replaced. The BeefBot 9000 (not it’s actual name, but rather a bestowed title) proved itself by working through 6 lbs of marinated meat in just two long sessions. After a frantic weekend of baking, dehydrating, and packing boxes, I got all the Christmas treats sent off before my flight. In January I should have an update to share, at present I’m in France, making use of my very-limited French and taking in the sights.

Pokemon: Random Number Abuse in Gen 8

I've spent plenty of time digging into RNG manipulation in the previous Pokemon games, but the more recent Switch titles had been fairly well secured with CryptoSecure, which made predicting the outputs of the random number generation impossible in all but a few select cases. Strangely, the newer titles, Brilliant Diamond and Shining Pearl, abandoned CryptoSecure, but until just recently there hadn't been a clean way to discover the RNG seed without running custom firmware (CFW) on your Switch, which, among other hassles, makes online play risky, as modified Switches have been irreversibly banned from online play before.

Just a few days ago, on the /r/Pokemon_rng/ subreddit, I saw someone post that they'd successfully generated a shiny starter without needing CFW. I followed the references and came across a YouTube video by Papa Jefe outlining the process. The general gist was - blinking characters, both Pokemon and NPCs, insert intervals between blinks, the lengths of which are determined by RNG. Observe enough blinks, and one can determine both the RNG seed, as well as the current RNG frame. The cleanest and easiest way to do this would be with a HDMI capture card, but as luck would have it, I only had a Switch Lite handy, which cannot output video. I did however have a webcam handy, which can work almost as well!

I had honestly planned to write out all the steps in excruciating detail, but honestly the follow-up video Papa Jefe posted covers everything from the initial install forward. Instead  I'll briefly describe a couple of the snags I hit along the way with my setup.

Issue 1: Window capture is Windows only, and even then wouldn't work on certain windows. I ended up getting around this by using an old USB webcam (Logitech B910HD) and pointing the script directly at it. 

Issue 2: The "eye" it's looking for is based on the un-scaled video feed, if you screenshot the eye with a scaled video feed, you need to un-scale it using the inverse ratio (e.g. 75 in the Display Percent box, scale your captured image by 1.33x).

Issue 3: Every time my webcam is initialized, it tries to autofocus, leading to a ton of false blinks getting detected. This was solved by hunting down the old Logitech Webcam Software, entering "Quick Capture", popping out the Controls, the Webcam Options, and finally disabling Auto-focus. I found the eye detection worked best when I manually placed the focus one step away from sharp focus, so the pixel grid wasn't being resolved.