Sunday, July 30, 2023

Eldritch Ætherium IV

"Tales Around the Desert Crossroads between Aribeth and Anauroch, over the High Seas, beyond the Druid Grove"

[This is one post in a series about my music mixes.  The series list has links to all posts in the series and also definitions of many of the terms I use.  You may wish to read the introduction for more background.  You may also want to check out the first volume in this multi-volume mix for more info on its theme.

Like all my series, it is not necessarily contiguous—that is, I don’t guarantee that the next post in the series will be next week.  Just that I will eventually finish it, someday.  Unless I get hit by a bus.]


Well, it’s another volume of music to inspire tabletop roleplaying, and yet again we’ve got another long, silly title cobbled together from the track names—I may have actually reached the limit at this point, and whenever next volume comes along I’ll probably have to reset to a shorter title and start building up again from there.  Many other things are the same too: Midnight Syndicate is back, with two more tracks off the excellent Dungeons & Dragons album, as are Nox Arcana, Colm McGuinness, and Ian Peter Fisher.  Jeremy Soule’s soundtrack for Neverwinter Nights, which exploded into this mix last volume with 3 tracks, now appears with a whopping four (but they’re all very short); Adrian von Ziegler (from volume II) finally returns; and we have two more tracks from both the 13th Age soundtrack (from two different composers: Chris J Nairn and Thery Ehrlich) and Michael Hoenig’s Baldur’s Gate II soundtrack.  Not to mention another track from the World of Warcraft soundtrack, and two more from the Witcher 3, including our amazing opener.

But of course we must have differences too.  For the first time, I don’t feature a track from the Shards of Eberron album that arguably inspired this whole mix.  There’s no Dead Can Dance this time out either, nor any zero-project.  Missing too are Epic Soul Factory and Faith and the Muse, and, perhaps most disappointing of all, no Loreena McKennitt.  Still, changes also mean new artists, and, to make up for McKennitt’s absence, we have a great piece from violinist Lindsey Stirling.  Stirling is one of those musical success stories that are truly inspirational:  She asked her parents for violin lessons and dance lessons, but they told her they could only afford one.  So she stuck with the violin lessons and taught herself to dance.  Then she started developing an act where she danced while playing violin, and everyone told her that no one wanted to see that.  So she took her impressive skills to YouTube and proved everyone wrong by amassing 13 million subscribers and over 3 billion views.  Stirling’s music is remarkable all on its own, but for the full effect you really have to visit her YouTube channel; you could start with the video for the track I use here, “The Arena.” This track has a bit of the McKennitt flair, but it’s also transcendently Stirling.  She has a fondness for fantasy-themed music (such as her Skyrim tribute with Peter Hollens), and I thought “The Arena” fit right in here.

I’ve also found a couple of new soundtracks to mine.  Greg Edmonson’s score to Uncharted: Drake’s Fortune, for instance, works well here; franchises such as Indiana Jones, Tomb Raider, and Uncharted have a lot of traipsing around in jungles and ancient temples, which sort of makes them first cousins to D&D-style adventures.  Then there’s the Assassin’s Creed franchise, which is even closer to your average D&D campaign.  Here I’ve chosen one track from Jesper Kyd’s score for the first installment, and one from Brian Tyler’s for the fourth.  Staying on the videogame kick, we’ve got one track from Yuka Kitamura off the Dark Souls III soundtrack and one from Christopher Larkin’s excellent soundtrack for Hollow Knight, and even more Jeremy Soule, this time from his score for Oblivion, the Elder Scrolls game that immediately preceded Skyrim.

As our journey begins this time out, we’re sitting around a campfire with “Geralt of Rivia” telling “Tales Around the Fire”: after a hushed introduction, they start out quite dramatically, but soon lapse into a comfortable rhythm.  The next morning we begin traveling, exploring fantastical vistas and “Kismet,” which lead us to a “Night on the Desert,” where spooky things lurk in the darkness.  This brings us to a “Crossroads” of conscience, but we forge on into the dark, where mystical things await (“Soft Mystical Fantasy Theme”).  We stalk the magic by doing a bit of “Grave Robbing,” and the danger builds to an “Earth Shaker.” Then we’re immediately plunged into “Battle Aribeth.”

In its aftermath, “The Eyes of the Stone Thief” are upon us, leading to some creepy feelings of being watched.  But we forge on through the jungle, danger lurking at every turn (“Plane-Wrecked”), and then there’s a sudden “Skirmish,” from which we emerge victorious.  Then we must embark on a “Journey Through Anauroch,” which is apparently a romantic, foreign land, but, “In the End,” it is the dramatic bass tones of “Fjölnir” that lead us inevitably to “The Arena.”

After a whirlwind adventure on that field, it’s off to “The High Seas” where we end up “Commanding the Fury” in fierce ship-to-ship combat.  We arrive at our destination just in time for a “City Battle”; fleeing from that encounter, we pass through the sinister and eerie “Stranglethorn Vale” where we have a “Premonition” of danger, so it’s off to “Waterdeep, City of Splendors”—which we find has some similarities to the “City of Jerusalem”—to search for a “Secret Sanctuary.” There we encounter the “Sœurs martiales” (martial sisters) in all their stately grandeur.  That inevitably takes us to the “Final Confrontation” and bestows upon us our “Bloody Blades.” We acquire healing from “The Druid Grove” and reflect on fallen comrades (“Trost” is German for “consolation”).  Our journey is done, but the dramatic airs of the “Reign of the Septims” remind us that further adventures await on the morrow.



Eldritch Ætherium IV
[ Tales Around the Desert Crossroads between Aribeth and Anauroch, over the High Seas, beyond the Druid Grove ]


“Geralt of Rivia” by Marcin Przybyłowicz, off The Witcher 3: Wild Hunt Soundtrack [Videogame Soundtrack]
“Tales Around the Fire” by Chris J Nairn, off The 13th Age Suite [RPG Soundtrack]
“Kismet” by bond, off Born
“Night on the Desert” by Jeremy Soule, off Neverwinter Nights [Videogame Soundtrack]
“Crossroads” by Christopher Larkin, off Hollow Knight [Videogame Soundtrack]
“Soft Mystical Fantasy Theme” by Ian Peter Fisher, off Soundtrack Music
“Grave Robbing” by Greg Edmonson, off Uncharted: Drake's Fortune [Videogame Soundtrack]
“Earth Shaker (Drums)” by audiomachine [Single]
“Battle Aribeth” by Jeremy Soule, off Neverwinter Nights [Videogame Soundtrack]
“The Eyes of the Stone Thief” by Thery Ehrlich, off The 13th Age Suite [RPG Soundtrack]
“Plane-Wrecked” by Greg Edmonson, off Uncharted: Drake's Fortune [Videogame Soundtrack]
“Skirmish” by Midnight Syndicate, off Dungeons & Dragons [RPG Soundtrack]
“Journey Through Anauroch” by Jeremy Soule, off Neverwinter Nights [Videogame Soundtrack]
“In the End” by Eklipse, off A Night in Strings
“Fjölnir” by Adrian von Ziegler, off Fable
“The Arena” by Lindsey Stirling, off Brave Enough
“The High Seas” by Brian Tyler, off Assassin's Creed IV: Black Flag [Videogame Soundtrack]
“Commanding the Fury” by Mikolai Stroinski, off The Witcher 3: Wild Hunt Soundtrack [Videogame Soundtrack]
“City Battle II” by Michael Hoenig, off Baldur's Gate II: Shadows of Amn [Videogame Soundtrack]
“Stranglethorn Vale” by Jason Hayes, off World of Warcraft Soundtrack [Videogame Soundtrack]
“Premonition” by Yuka Kitamura, off Dark Souls III Soundtrack [Videogame Soundtrack]
“Waterdeep, City of Splendors” by Jeremy Soule, off Neverwinter Nights [Videogame Soundtrack]
“City of Jerusalem” by Jesper Kyd, off Assassin's Creed [Videogame Soundtrack]
“Secret Sanctuary” by Nox Arcana, off Winter's Majesty
“Sœurs martiales” by Xcyril, off Coeur Martial [Soundtrack]
“Final Confrontation” by Midnight Syndicate, off Dungeons & Dragons [RPG Soundtrack]
“Bloody Blades” by Jeremy Soule, off The Elder Scrolls IV: Oblivion [Videogame Soundtrack]
“The Druid Grove” by Michael Hoenig, off Baldur's Gate II: Shadows of Amn [Videogame Soundtrack]
“Trost” by Colm McGuinness [Single]
“Reign of the Septims” by Jeremy Soule, off The Elder Scrolls IV: Oblivion [Videogame Soundtrack]
Total:  30 tracks,  78:23



Whew! that’s a lot of tracks.  In fact, this is not only our longest volume title so far, but also our longest in terms of number of tracks (though not in terms of total time—9 of the songs are under 2 minutes, and another 12 are between two and three minutes).  There’s not a whole lot unexpected going on here, but let’s look at what there is.

You may recall French composer Xcyril from his two appearances on Phantasma Chorale I and his single track on Paradoxically Sized World VI.  Those other tracks were from what I believed to be “soundtrack portfolios”—that is a collection of tunes that are likely used to demonstrate the composers skills and hopefully net them a job.  Well, the track here appears to be from an actual movie—if a very short and experimental one (you can watch it yourself and form your own opinion)—called Coeur Martial.  So I guess it worked.  There’s also a track from Audiomachine, an LA-based production company that does music for film and television.  I can’t remember how I stumbled across “Earth Shaker (Drums)” (which is, by the way, different from “Earth Shaker”), but I think I saw that someone on the Internet had cobbled together a playlist for one of the D&D adventures (Tomb of Annihilation, perhaps) and this one I thought was just too perfect.

And that just leaves us with the two string quartets, both of which are attempting to update that very classical sound with a lot of modern production values.  First we have Australia’s bond, who play chamber music infused with a lot of glam, and perform it much like a girl group.  Their first album Born has a lot of great tracks on it, but “Kismet” was the one that I thought really gave that feel of traveling through a fantasy landscape.  Last but not least, Germany’s Eklipse do chamber music covers of pop songs and dress like über-goths.  Their first album, A Night in Strings, has some great covers, including this one, “In the End.” It’s a bit of a challenge to take a Linkin Park song and recontextualize it as a fantasy theme, but Eklipse did most of the work, and I think sandwiching it between Jeremy Soule and Adrian von Ziegler adds a bit as well.


Next time, we’ll take a second look at some indie ladies.



Eldritch Ætherium V










Sunday, July 23, 2023

CollabGPT

This week I’ve been concentrating on setting up my file synchronization and versioning system.  For this, I’ve mainly been consulting with ChatGPT.  I originally wanted to hire an actual person to help me design and set this up, but I couldn’t find anyone who was both willing to work on my home system—what with me not being a business—and who seemed trustworthy (no shortage of shady characters, of course, but working on your network necessarily involves giving out your password, which is probably a Bad Thing to do in the case of randos on the Internet).  So I eventually decided to just ask ChatGPT and do whatever it said.

Well, perhaps not whatever it said, but, if you’re willing to put in a bit of effort to chastise it when it says something stupid and challenge it when it says something unlikely, you can actually get quite a lot out of it.  And it’s useful both in the design phase as well as the implementation phase.  Just about the only downside is that you have to start every chat fresh from ground zero (though there’s a new experimental feature which helps with that, a little).  And you can’t get around that by just staying in the same chat forever, because ChatGPT has a limited number of “tokens” (roughly equivalent to words) that it can remember before it starts forgetting the earliest parts of the conversation.

Still, you can get quite a lot accomplished even so.  Thanks to ChatGPT, I now have a system whereby I use Syncthing to handle synchronization across computers, and also provide versioning so that I can go back to the previous version of any file.  Now I’m working on getting that backed up to the cloud.

One of the fun things about ChatGPT’s limited memory is that sometimes you have to explain to it what it already figured out.  Today I started a new chat on this topic, as the old one was getting pretty full.  I told it:

I’ve designed a file synchronization and versioning system that works like this:
* There are seven shares, each of which is a filesystem with gigabytes of files.
* Haven and Avalir each have copies of six of the seven shares (there is one share that is not needed on each of those machines).
* Files are bidirectionally synchronized between Haven and Avalir using Syncthing.  No file versioning is used for these two servers.
* Zadash has a copy of all seven shares, with full file versioning (by which I mean keeping a copy of all versions forever).
* Editing of the files is done on Haven or Avalir only.  Since Syncthing only stores versions for remote edits, not local edits, if I edited files on Zadash, it would keep the previous version.  I do mount the shares from Haven to Zadash JIC I need to edit on Zadash, but the Syncthing copy is for archival purposes only.

To which ChatGPT responded:

You’ve outlined quite an advanced file synchronization system, ...

And I’m like, bitch, this was all your idea!

Anyways, that’s how my week went.  Next week, a longer topic, hopefully.









Sunday, July 16, 2023

Of Waterfalls, Pigs, and Red Red Tape

Once upon a time we used to develop software via something known as the “waterfall model.” When trying to envision this, don’t think about something like Angel Falls, where the water just falls off a cliff.  Picture instead something along the lines of Detian Falls in Vietnam: a series of steps as the water drops, level by level, to its final destination.  See, back in those olden times (which, honestly, were mostly before I got into the industry, though there was some residual inertia even in the mid-80s, when I came along), back then, as I say, the specifications (or “specs”) were developed by one team, who then passed them along to the design team, who designed the whole system in a very abstract way, and then passed it along to the programming team, who did all the hard coding work, and then passed it along to the QA team, who verified that the functionality matched the original specs, and then they passed it on the customer and then it’s done.  The primarily analogy to a waterfall for this development model is that the water only flows one way: for the real-world waterfall, that’s due to gravity, and for the waterfall model, it’s because going backwards—“upstream,” if you will—is expensive.  You really want to get each phase just perfect, because if you find a mistake, you essentially have to start over ... and that costs the company money.  Sometimes, with this model, starting over was so expensive that they just didn’t.  The greatest stories of software development debacle were due to the sunk cost fallacy: too expensive to try get back up to the top of the waterfall, so we just gotta make due with whatever horror show we’ve ended up with.

So throughout the 80s and 90s software developers started saying there had to be a better way.  In 1986 the “spiral model” was proposed: it was built into the system that, instead of planning out the whole system at the beginning, you’d spec out just an initial prototype, then design that, code it, test, then go back to the spec stage and tack on more features.  Starting over was no longer a bug, but a feature.  Instead of losing a bunch of money because we had to start everything from scratch, we were only starting the next thing from scratch ... and, if we needed to tweak some stuff from the first iteration, well, we already had the mechanisms in place for specifying, desiging, coding, and testing.  Those phases were in our past, true: but they were also in our future.

Of course, the spiral model is a very abstract concept.  How do you actually implement such a thing?  That is, what are the actual processes that you put into place to make sure the company and its employees follow the model and achieve the goals of iterative design?  For that, we needed to move beyond models and into methodologies.  Enter Agile.

Agile software development practices, usually just referred to as “Agile,” were a way to concretize the spiral model abstraction.  Sometimes they would propose tweaks to the model, sure, but the main thing was, no going back to waterfall.  And, to distance themselves from those crusty old waterfall methodologies—many of which were by this point formalized as standards, such as the DOD’s 2167A—they all had cool new names: RAD (“Rapid Application Development”) and Scrum and Crystal Clear and Extreme Programming (if you didn’t just hear a Bill and Ted’s-style guitar lick, you’re doing it wrong).  This last one, usually abbreviated to “XP” (no relation to the Windows version) was not the first agile methodology to come along ... but it was the first one I was ever exposed to, and they say you never forget your first.

Kent Beck, author of “Extreme Programming Explained,” presented to me a perspective that literally changed my (software development) life.  He pointed out that, in order for the waterfall model to work, you have to be able to predict the future.  The whole thing is predicated on predicting what problems will happen, anticipating them, and building them into the plan.  If you fail to predict something, then everything falls apart.  Except ... humans really suck at predicting the future.  When we say “predict,” what we really mean is “guess.” And we usually guess wrong.  As Kent so succinctly put it:

The problem isn’t change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes.

Stop trying to keep change from happening: it’s a fool’s errand.  Rather, create a better methodology which says “yeah, things change: so what? we got that covered.”

Agile is all about being flexible.  Hell, the reason it’s called “agile” is because the old waterfall methodologies were ponderous and slow to course-correct.  It’s common for business people to talk about agility in terms of responding to changes in the market: the creators of the Agile Manifesto (one of whom was Beck himself) wanted to capitalize on that perception.  Our development practices can make your company more agile, and that makes you quicker to respond, and that helps you beat your competitors.

And yet ... it’s kind of strange that we need all these procedures and guideliness and principles and a whole friggin’ manifesto to perform something for which the entire purpose is to be flexible.  The thing I never liked about XP, despite all its merits (and the aforementioned life-changing-ness), was that it had all these notes about how, if you’re not following every single rule, then you’re not “doing” XP.  You’re just playing at it.  I always found that inherent dichotomy cognitively dissonant: so I have to do things exactly according to these rules so that I can break the rules? I have rigidly fit into the straitjacket so that I can have the flexibility to move freely? I have to precisely walk the straight line so that I have the freedom to jump in any direction?  Surely you see the contradiction.

And XP is certainly not alone in this strange philosophy.  I’m not sure we can claim any of the Agile methodologies to have “won,” but in my experience Scrum has made the most extensive inroads into corporate culture.  And it is chock full of prescriptive little strictures: mandatory stand-up meetings with strict time limits and precisely defined cycles called “sprints” and detailed reporting pathways between developers and business owners.  Maybe all this red tape is why business people have embraced it more than the other Agile practices.  But it presents a weird, oxymoronic message to the developers: we want to you to be free, we want you have flexibility, but you have to all these things, just so.  And sometimes the business owners can get very upset if you question this.  Because they’ve been trained, you see?  They’ve taken courses in “how to do Agile” and “how to run Scrum” and all that, and (of course) all those courses stressed that you have to do everything perfectly or else it will all fall apart, so as soon as the developer suggests that maybe we should change this one thing because it’s actually making our lives harder ... well, it won’t be pretty, let me tell you.

One of things I always liked about Scrum was that they made clear the difference between involvement vs commitment.  The traditional explanation for this is via the fable of the pig and the chicken.  Now, these days Agile folks will tell you not to use that story to explain things any more.  The first reason they cite is that people will take offense: calling someone a pig implies they’re greedy, or dirty; calling them a chicken implies that they’re cowardly.  These are, of course, human metaphors that we’ve placed on those particular animals, and also they have nothing to do with the actual story.  But people won’t hear the message, they point out, if they’re hung up on the words used to deliver it.  I would probably say that people will look to any excuse to get offended, especially if it gets them out of following rules, but I’m a bit more of a cynic.

The story points out that, in the context of preparing a breakfast of eggs and bacon, the chicken is involved, but the pig is committed.  This is a very simple concept to grasp, and the analogy illustrates it perfectly, but, yes, yes: let us not offend anyone.  I would be fine if this first reason were the only reason that modern Agile advocates had dropped the pig and chicken story: that would just mean that they had replaced it with a different analogy that perhaps involved more noble animals, or fruits, or something.  But, no: they’ve started to question the whole concept.  See, the original point of pigs and chickens was to point out to the business people that it wasn’t particularly fair (or, you know, sensible) for them to set deadlines for how long something would take.  They weren’t the ones doing it.  The developers have to actually accomplish the thing, and they know how long it should take (even if they’re bad at estimating that for other reasons, which are happily addressed by other Agile practices).  The business owners are involved, but the developers are committed.  This not only stresses to the business folks that they don’t get to say how long something takes, but it also stresses to the developers that, once they say how long it will take, they’ve made a commitment to getting it done in that timeframe.  These are all good things.

But not so, says the Updated Scrum Guide.  Those poor business people shouldn’t be made to feel like they can’t dictate timelines.  “In some cases these people were key project sponsors or critical system matter experts. These are individuals who, while possibly needing some education and guidance from a Scrum Master, can be critical to the success of a project.” If you’re not familiar with how to translate business bullshit back into English, this means “we want the business people to feel important, and they don’t like it when we try to put restrictions on them, and if I say it this way it’ll make you think that you developers are actually gaining something, rather than that we’re just caving in and letting the business people run roughshod over all we’ve built.” The thing I always liked about the Agile practices was that they were pretty balanced in terms of business vs development.  They said to the developers “we want you to feel respected and like your creativity is valued, and you should be in control of what you produce and the quality of your work.” But they also said to the business side “we want you to feel respected and like your market acumen is valued, and you should be in control of what gets produced and how viable it is as a product.” See? everybody is respected equally.  When you start breaking down that balance, bad things happen.

And maybe business people feel empowered to just set some processes up because it sounds good, or because it looks official, or maybe, like most other humans in workplaces, they just like telling other people what to do.  And maybe those processes actually slow things down instead of making them more efficient.  And maybe the developers feel like they can’t speak up any more—it’s no longer the case that they’re the ones who are committed because everyone’s committed now—or maybe they do speak up but they’re ignored because setting up workflow processes ... that’s above your paygrade, don’t you know.  And gradually, slowly, everything goes back to the bad old ways when we spent way more time talking about getting things done than actually doing things.

Doesn’t feel very agile, does it?









Sunday, July 9, 2023

I know they don't sound the way I planned them to be ... but if you wait around a while ...

Well, the computer setup is going fairly well ... but not well enough that I have a longer post for you this week.  Still, despite the work dragging on, I can safely say that things are better than they were before I started ... before the machines started being flaky, even.  So I’m well enough satisfied with the progress, even if I feel a little bad for slipping on the posting schedule.  But that’s the way it goes sometimes.

Next week will be better, I can just feel it.









Sunday, July 2, 2023

Springs Eternal

Several months ago, my work machine started flaking out, so I got the folks at work to order me a new one.  It came, and I was able to use it to work around my immediate problems, but I never got the chance to completely switch over to using it—too much work shit going on.  Well, a few weeks ago, my laptop started flaking out.  And, as of Friday, my new laptop has arrived, and now I have two machines to set up and get configured and transfer hundreds of thousands of files to.  Lucky me.

So, even if I had planned to do a full post this week (which I had not), I simply wouldn’t have the time: I’ve got a laptop to configure, a desktop to configure, gigabytes to copy, filesystems to share, my wife to murder, and Guilder to frame for it—I’m swamped.  Still, there’s some hope that, after this process (as difficult as it may be), things will be better.  Honestly, I’d be happy if they were just not worse than they were before all this madness started, but I suppose I can’t help but hope for better.  Call me foolish if you must: I won’t deny it.  We’ll see how it goes.