Friday, September 12, 2025

Mass Effect 2 Lower Afterlife Music (Lo Fi Epic)

So for you Mass Effect 2 Fans here is perhaps one of the oddest "making of stories" you will hear. This track "Lo Fi Epic" (The lower afterlife track) was actually composed for the EA Sports Arena Football game in February of 2006 but never saw the light of day, hitting the cutting room floor after a producer nixed it for being "Too Techno" . The track went into the music archives and lived on the main server network for years.

Fast forward to 2010 when I was sitting down with my new copy of Mass Effect 2. I am a huge Mass Effect fan, I had played through version 1 many times. So one can only imagine my reaction when I walked into the lower level of "Club Afterlife" and heard this track... At first I said "hummm that sounds very familiar" then it hit me "Holy crap I wrote that!".

Sadly I was not credited in the game for this piece of music but neither was:

Saki Kaskas - Callista - Upper Club Afterlife (Originally used in Need For Speed Hot Pursuit)

John Morgan - Happiness - Dark Star Lounge

Comaduster - To Hide To Seek - Eternity Bar

This story got even crazier when I Googled the name of the ME2 planet this music was found on, there was a user on You Tube that had extracted the file from the PC version of the game and identified me as the composer; his video had over 100,000 views with many comments about who wrote it and where they could find it. EA Traxx or whoever passed along the cue to Bioware renamed the track "The Techno Madness Mix" but had left my name in file name or metadata.

I had actually met the sound design team for Mass Effect up in Canada during a sound design for video game meeting; Simon Pressy the Mass Effect audio director and I talked at length during that meeting, I expressed my interest and support for their projects. While working on Warhammer I even helped produced some sounds for their games to use. So I can't say I don't know how this all happened but in my wildest dreams I would have never imagined Lo Fi Epic making it into Mass Effect 2 much less the fans reaction to this track (Thank you all). I even got an email from the Mass Effects' main composer Jack Wall that stated he heard so many good things from fans about "Lo Fi Epic" (Of course I am in awe of Jacks score for the game).

Hearing "Lo Fi Epic" in game reminds me of the days when I use to have acetates cut of my music and taking it to clubs. That feeling of watching hundreds of people dance to something I created was beyond words... this track in Mass Effect immortalized that feeling for me. Anyway that is the crazy story of Lo Fi Epic and Mass Effect 2.

Monday, March 3, 2025

Manifest V2

 To continue using Manifest V2 extensions:
  1. Go to: chrome://flags/
  2. Search for "mv2"
  3. Set "Allow legacy extension manifest versions" to Enabled and the 3 others to Disabled:
    1. "Extension Manifest V2 Deprecation Warning Stage"
    2. "Extension Manifest V2 Deprecation Disabled Stage"
    3. "Extension Manifest V2 Deprecation Unsupported Stage"

Einhell

  • TC = classic you want to avoid
  • TE = expert, could be good, especially taking the price into account.
  • EP = ‘professional’, the best they offer

Tuesday, October 1, 2024

Type 'Express' is not assignable to type 'Application'.

We've had a lot of problems with the fact that the DefinitelyTyped packages for Express consists of multiple separate packages (notably @types/express and @types/express-serve-static-core) and that new versions of @types/express don't work unless you update @types/express-serve-static-core too but that the dependencies between them are not declared tightly enough.

https://github.com/apollographql/apollo-server/issues/5280

Use:

npm dedup

Thursday, September 12, 2024

/etc/wsl.conf

 My WSL configuration

[automount]
enabled = true
options = "metadata,umask=22,fmask=11"

Monday, July 1, 2024

Twitter: remove all likes

 The following block will remove all your Twitter likes, if you are on your profile's /likes page:

{
  const sleep = t => new Promise(r => setTimeout(r, t));
  let i = 0;
  while (true) {
    const nodes = document.querySelectorAll('button[data-testid="unlike"]');
    if (nodes.length === 0) {
      console.log('NOOP');
      await sleep(2_000);
      if (++i === 10) {
        console.log('DONE');
        break;
      }
    } else {
      i = 0;
    }  
        
    let j = 0;
    for (const node of nodes) {
      console.log(`${++j} / ${nodes.length}`);
      node.scrollIntoView();
      node.click();
      await sleep(2_000);
    }
  }
}