Categories
Review

“Innate Magic”

Shannon Fay

There’s… a lot going on in this book, and having given myself the chance to sleep on it, I’m still not sure how I feel about it. Even trying to make a pros and cons list hasn’t helped much. Pro – interesting system of magic. Con – weird theological angle. Pro – bisexual protagonist, yay for representation! Con – save for a single passing reference in the epilogue, all the homosexual relationships portrayed are various forms of abusive. Pro – several interesting female characters whose stories I’d like to learn more of; con – I can’t recall them, at any point, passing the Bechdel test.1

At very least, though, I can’t say the book wasn’t interesting. It took quite a while to really grip me, but by about halfway through I found myself loathe to put it down. Which, in retrospect, is the same way I tend to feel about Diana Wynne Jones, and she wrote some of my favorite books I’ve ever read, so… I suppose, by that metric at least, I enjoyed it.

A confused little review here, but as I said, it’s at very least an interesting read. Check it out.2

  1. Admittedly, I wasn’t keeping an eye out for it, and am now trying to recall from memory. I suppose there’s a scene where two of the aforementioned interesting female characters discuss one’s past, but it’s mostly in the context of her father, so…
  2. This is a Bookshop affiliate link – if you buy it from here, I get a little bit of commission. It won’t hurt my feelings if you buy it elsewhere; honestly, I’d rather you check it out from your local library, or go to a local book store. I use Bookshop affiliate links instead of Amazon because they distribute a significant chunk of their profits to small, local book stores.
Categories
Playlist

Playlist of the Month: November 2021

Happy December! Go get your booster shot!

How It Was – Yoste on A Few Brief Moments – EP

twentyfive – Yoste on twentyfive – Single

Oh Dear, Oh Beaux – beaux on A Love Letter To the Moments Spent Outside

Flow – Vide on Flow – Single

Starlite – HOKO on Heathen

DIM – SYML on DIM – EP

I Only Go South – Yoste on I Only Go South – Single

All Eyes On Me – Bo Burnham on Inside (The Songs)

Politicians – Hayden Calnin on Politicians – Single

Vampires – The Midnight & Magik*Magik on Vampires – Single

Sink – Yoste on Sink – Single

Our Bones Turn To Stone – Aquilo on A Safe Place To Be

Kyoto (Copycat Killer Version) [feat. Rob Moose] – Phoebe Bridgers on Copycat Killer (feat. Rob Moose) – EP

Inner Light – Elderbrook & Bob Moses on Inner Light – Single

Starlight – Griffin Stoller on Starlight – Single

In This Shirt (Original) – The Irrepressibles on In This Shirt – Single

Body Heat – ItsLee & Vide on Body Heat – Single

Daniel – Will Young on Crying on the Bathroom Floor

Broken (Live at Södra Teatern) – Isak Danielson on Live in Stockholm – EP

Honest – Yoste on Nothing’s Everything – EP

Nothing Else Matters – Dermot Kennedy on Nothing Else Matters – Single

End – Hayden Calnin on What It Means to Be Human

In the Beginning – Hayden Calnin on What It Means to Be Human

Big Mistake – HOKO on Heathen (Deluxe)

Rise (feat. Abroad) – EMBRZ on Moments

We Go On Walks – Petey on Lean Into Life

Is It Light Where You Are – Art School Girlfriend on Is It Light Where You Are

Iron 2021 – Woodkid on Iron 2021 – Single

The Wire – Vancouver Sleep Clinic on The Wire – Single

Broken Mirror – Elderbrook on Innerlight EP

ONE OF ME (feat. Elton John) – Lil Nas X on MONTERO

Humankind – Coldplay on Music of the Spheres

– Coldplay on Music of the Spheres

Tonight – Thorin Loeks on In This Place

Righteous – Juice WRLD on Legends Never Die

Haunt – Hayden Calnin on What It Means to Be Human

Dominos – Elderbrook & Louis The Child on Innerlight EP

Only Human – Philip Ayers on Only Human – Single

come over – Clide on feelings – EP

The Sunken God – Steve Benjamins on The Sunken God – Single1

Should Have Gone Over – Jolé & Christof Van Der Ven on Great Parade – EP

Nostalgia Kills – Goody Grace on Nostalgia Kills – EP

Dead2me – GHOSTHAUS on Dead2me – Single

Picture of You (feat. Hayden Calnin) – Axel Flóvent on Picture of You (feat. Hayden Calnin) – Single

False Hope – Cal Trask on False Hope – Single

The War (Recorded at St. Mark’s Cathedral) – SYML on Sacred Spaces

Oxygen – August Royals on Oxygen – Single

hate me like u love me (feat. Jake Neumar) – Syence on hate me like u love me (feat. Jake Neumar) – Single

Down – Oh Wonder on 22 Break

Close – Boys Noize on +/-

Somebody Who Knows You – X Ambassadors on The Beautiful Liar

Never Breaking Up – REUNIØN on Never Breaking Up – Single

No Tomorrow – SUR on No Tomorrow – Single

Smalltown Boy – Bronski Beat on The Age of Consent

Tell The Boys – Petey on Lean Into Life2

THATS WHAT I WANT – Lil Nas X on MONTERO

Falling Water – Forester on Wish You Well – EP

One Right Now – Post Malone & The Weeknd on One Right Now – Single

Fall Creek Boys Choir – James Blake & Bon Iver on Enough Thunder – EP

People of the Pride – Coldplay on Music of the Spheres

Moth To A Flame – Swedish House Mafia & The Weeknd on Moth To A Flame – Single3

Autumn – Lani Rose on Autumn – Single

Hanging On – Aquilo on A Safe Place To Be

No Time For Love Like Now – Michael Stipe & Big Red Machine on No Time For Love Like Now – Single

Costume Change – Aquilo on A Safe Place To Be

Tension – JP Saxe on Dangerous Levels of Introspection

Over – flora cash on Our Generation

Hey Man – Petey on Lean Into Life

Man On The Moon – R.E.M. on Automatic For The People (2017 Remaster)4

Burning In The Skies – Linkin Park on A Thousand Suns

Wisdom, Justice, And Love – Linkin Park on A Thousand Suns5

Blackbirds (Bonus Track) – LINKIN PARK on A Thousand Suns (Deluxe Edition)6

The Man I Loved – Richard Walters on The Man I Loved – Single

Let Somebody Go – Coldplay & Selena Gomez on Music Of The Spheres

Lonely City – Mokita on Lonely City – Single7

5AM – Betcha on 5AM – Single

Beautiful Liar – X Ambassadors on The Beautiful Liar

The Ends and the Means – Robby Hecht on The Ends and the Means – Single8

  1. Kinda reminds me of The Sunken Cathedral and I want to know if that’s deliberate.
  2. One day I’m gonna pull this track and reverse it – I’m very curious if it’s the backing track from Don’t Tell the Boys played backwards.
  3. May or may not have spent half an hour listening to this over and over, being impressed by The Weeknd’s vocal talent.
  4. Listen to the Atmos version, it’s neat!
  5. Occasionally I really like something in this style.
  6. Really enjoying this find, because you can totally hear bits of the song that made their way into other tracks later in their career.
  7. I’d love to talk with the artist, I want to know if the Quiet City reference here is deliberate. Given the title and that it sounds like it, I have to think it is!
  8. Bringing this one back because I just love the lyrics. “Nevermind ‘thou shalt not kill,’ we’re dealing now with infidels.”
Categories
Review

“The Planetbreaker’s Son”

Nick Mamatas

More ‘literary’ in feel than I usually go for, but it works. A time capsule, a billion people digitized and attempting to preserve what humanity was before we wiped ourselves out, held together by advanced technology and algorithms… it’s nice to imagine that we’d be able to retain every aspect of our humanity through a transition like that, but it also doesn’t seem that realistic. Things would have to change.

As I said, there’s more of a ‘literary’ style to this than what I usually read, and it definitely took me a while to really get into the story. But by the end, I found I quite enjoyed it, and a lot of what had been confusing me made more sense. The interview with the author also helped – provided some perspective, I suppose.

A fun little read; check it out.1

  1. This is a Bookshop affiliate link – if you buy it from here, I get a little bit of commission. It won’t hurt my feelings if you buy it elsewhere; honestly, I’d rather you check it out from your local library, or go to a local book store. I use Bookshop affiliate links instead of Amazon because they distribute a significant chunk of their profits to small, local book stores.
Categories
Review

“The Caledonian Gambit”

Dan Moren

If memory serves, Moren has just released the sequel to this book, and I may have to pick it up. I wouldn’t say that “The Caledonian Gambit” was, like, earth-shatteringly good, but it fit my mood just right. It’s been a while since I read some light science fiction, it’s been a while since I read an espionage thriller, it’s been a while since I read something doing something really fun in that space.

I’ll sound the spoiler horn here – if you want no hints whatsoever about the plot, just go read it now.1

Alright, spoilers ahead!

I think my favorite thing in this book was the perfect payoff, how every aspect of the prologue went on to be massively important to the remainder of the book. It did a great job of seeming like a throwaway moment, but kept coming back in little bits of “oh, you thought that didn’t matter? Surprise, it did!”

And, having myself paused for the spoiler break (because apparently that’s how my brain works), I realized why I’m excited for the sequel: because I’ve actually read this exact plot before. It’s an early arc of Schlock Mercenary, although definitely played differently than it was there, and I’d love to see what someone else does with that idea. (Although, if you’re at all interested in comics and space opera, I highly recommend Schlock Mercenary, as well — it starts off very “lol it’s the 90s and I’m making a webcomic!” but by the end, it’s one of the best pieces of large-scale science fiction I have ever read.)

  1. This is a Bookshop affiliate link – if you buy it from here, I get a little bit of commission. It won’t hurt my feelings if you buy it elsewhere; honestly, I’d rather you check it out from your local library, or go to a local book store. I use Bookshop affiliate links instead of Amazon because they distribute a significant chunk of their profits to small, local book stores.
Categories
Playlist

Playlist of the Month: October 2021

There’s a few tracks in here that are very clearly “yes, it is now time for Fall Music.”

Cologne – Haux on Something to Remember – EP

How It Was – Yoste on A Few Brief Moments – EP

twentyfive – Yoste on twentyfive – Single

Oh Dear, Oh Beaux – beaux on A Love Letter To the Moments Spent Outside

Neon Medusa – The Midnight on Horror Show – EP

Flow – Vide on Flow – Single

Starlite – HOKO on Heathen

DIM – SYML on DIM – EP

Good in Red – The Midnight on Horror Show – EP

I Only Go South – Yoste on I Only Go South – Single

b!!!rds – Sir Sly on The Rise & Fall of Loverboy

Los Tontos (Live at NPR’s Tiny Desk) – C. Tangana & Kiko Veneno on El Madrileño (Live at NPR’s Tiny Desk) – Single

All Eyes On Me – Bo Burnham on Inside (The Songs)

BYE – Jaden on BYE – Single

Politicians – Hayden Calnin on Politicians – Single

Why Is Everyone Sad? – Yoste on Why Is Everyone Sad? – Single

Vampires – The Midnight & Magik*Magik on Vampires – Single

The Comeback Kid – The Midnight & Magik*Magik on The Rearview Mirror – EP

Almost Home (feat. Novo Amor, Mindy Jones & Darlingside) [Reprise Version] – Moby on Almost Home (Reprise Version) [feat. Novo Amor, Mindy Jones & Darlingside] – Single

Sink – Yoste on Sink – Single

Our Bones Turn To Stone – Aquilo on A Safe Place To Be

Yate – C. Tangana on Yate – Single

Kyoto (Copycat Killer Version) [feat. Rob Moose] – Phoebe Bridgers on Copycat Killer (feat. Rob Moose) – EP

Inner Light – Elderbrook & Bob Moses on Inner Light – Single

Starlight – Griffin Stoller on Starlight – Single

In This Shirt (Original) – The Irrepressibles on In This Shirt – Single

We Just Are – Yoste on Nothing’s Everything – EP

Get You the Moon (feat. Snøw) – Kina on Get You the Moon (feat. Snøw) – Single

Play Pretend – Griffin Stoller & Son Kuma on Play Pretend – Single

Body Heat – ItsLee & Vide on Body Heat – Single

Hurricane – Kanye West on Donda

start//end – EDEN on vertigo

Daniel – Will Young on Crying on the Bathroom Floor

Till There’s Nothing Left – Will Young on Crying on the Bathroom Floor

Coffee – Sylvan Esso on Sylvan Esso

Donda – Kanye West on Donda

Broken (Live at Södra Teatern) – Isak Danielson on Live in Stockholm – EP

Dead Girls – Penelope Scott on Hazards – EP1

Want To Be Wanted – Lani Rose on Want To Be Wanted – Single

Honest – Yoste on Nothing’s Everything – EP

Moon – Kanye West on Donda

Part of Me – ¿Téo? on ¿Téo?

Memories – The Midnight & Magik*Magik on The Rearview Mirror – EP

Belong in the Sun (feat. Lido) – ¿Téo? on ¿Téo?

Nothing Else Matters – Dermot Kennedy on Nothing Else Matters – Single

Junya – Kanye West on Donda

Take Care in Your Dreaming (feat. Denzel Curry, Tricky & Sampa the Great) – The Avalanches on We Will Always Love You

The Parts I Hid Away – Hayden Calnin on What It Means to Be Human

PENDEJO – Enrique Iglesias on FINAL (Vol.1)

The Catalyst – LINKIN PARK on A Thousand Suns (Deluxe Edition)

Outta Hand – ¿Téo? on ¿Téo?

Music Is The Light (feat. Cornelius & Kelly Moran) – The Avalanches on We Will Always Love You

End – Hayden Calnin on What It Means to Be Human

Mama Plum – Sam Walwyn on Mama Plum – Single

In the Beginning – Hayden Calnin on What It Means to Be Human

Highway Man – Teflon Sega on Highway Man – Single

How You’ll Be Remembered – Aron Wright on How You’ll Be Remembered – Single

Candy Eyes – HOKO on Heathen (Deluxe)

Big Mistake – HOKO on Heathen (Deluxe)

Summer’s End – Turbo on Summer’s End – Single

Hellogoodbye (PVRIS Remix) – HOKO & PVRIS on Heathen (Deluxe)

Boy Tears – Saro on Boy Tears – Single

Wherever You Go (feat. Jamie xx, Neneh Cherry & CLYPSO) – The Avalanches on We Will Always Love You

Honest – HOKO on Heathen (Deluxe)

All Things $ Can Do (with Travis Barker & Tove Styrke) – Cheat Codes, Travis Barker & Tove Styrke on All Things $ Can Do (with Travis Barker & Tove Styrke) – Single

Rise (feat. Abroad) – EMBRZ on Moments

Hellogoodbye – HOKO on Heathen (Deluxe)

Guard Down – beaux on Guard Down – Single

California – CHVRCHES on Screen Violence

Casita – Goth Babe on Casita – Single

I’ll Find My Way To You – Elderbrook & Emmit Fenn on Innerlight EP

Interstellar Love (feat. Leon Bridges) – The Avalanches on We Will Always Love You

We Go On Walks – Petey on Lean Into Life

Bad Luck – Noah Kahan on I Was / I Am

Twenty Fourteen – Oh Wonder on 22 Break

Is It Light Where You Are – Art School Girlfriend on Is It Light Where You Are

Reaction – GOLDHOUSE & Mokita on Reaction – Single

OK OK – HOKO on Heathen (Deluxe)

Iron 2021 – Woodkid on Iron 2021 – Single2

Lightspeed – Jon Bryant on Lightspeed – Single

The Wire – Vancouver Sleep Clinic on The Wire – Single

Broken Mirror – Elderbrook on Innerlight EP

ONE OF ME (feat. Elton John) – Lil Nas X on MONTERO

Let It Rock (feat. Lil Wayne) – Kevin Rudolf on In the City (Bonus Track Version)

Humankind – Coldplay on Music of the Spheres

Better Off As Strangers – Aquilo on A Safe Place To Be

– Coldplay on Music of the Spheres3

Rebirth – Aisha Badru on Rebirth – Single

Tonight – Thorin Loeks on In This Place

Righteous – Juice WRLD on Legends Never Die

Haunt – Hayden Calnin on What It Means to Be Human

Dominos – Elderbrook & Louis The Child on Innerlight EP

Only Human – Philip Ayers on Only Human – Single4

Stupid Not To Try – Aquilo on A Safe Place To Be

come over – Clide on feelings – EP

– Coldplay on Music of the Spheres

Remember – King Henry on Remember – Single

Sweet Melancholy – Amber Run on The Search (Act 1) – EP

Tiny Dancer – Florence + the Machine on Revamp: The Songs of Elton John & Bernie Taupin

Wait to Come Over – Charles Fauna on Eulogy – EP

The Sunken God – Steve Benjamins on The Sunken God – Single5

Should Have Gone Over – Jolé & Christof Van Der Ven on Great Parade – EP

Promise – Paul Whitacre & Joel Ansett on Promise – Single

Nostalgia Kills – Goody Grace on Nostalgia Kills – EP6

You Make Me Mad – Aquilo on A Safe Place To Be

Dead2me – GHOSTHAUS on Dead2me – Single

Picture of You (feat. Hayden Calnin) – Axel Flóvent on Picture of You (feat. Hayden Calnin) – Single7

Emojis de Corazones (feat. Los Legendarios) – Wisin, Jhay Cortez & Ozuna on Emojis de Corazones (feat. Los Legendarios) – Single

False Hope – Cal Trask on False Hope – Single8

The War (Recorded at St. Mark’s Cathedral) – SYML on Sacred Spaces

Oxygen – August Royals on Oxygen – Single

hate me like u love me (feat. Jake Neumar) – Syence on hate me like u love me (feat. Jake Neumar) – Single

Down – Oh Wonder on 22 Break

TYPECAST – ELIO on TYPECAST – Single

Sumarið sem aldrei kom – Jónsi on Shiver9

  1. The album art here keeps making me think of “Meddling Kids”.
  2. Woodkid’s music is usually pretty cinematic in feel, and this is no difference. If you’ve ever got an opportunity for a sword fight with a vampire in a cathedral, this is the perfect backing track.
  3. Sometimes, when I’m getting these links, I search for “better off as strangers aquilo a safe place to be” and iTunes goes “lol never heard of her” and other times I search for “infinity coldplay” and it gets exactly what I want.
  4. Found this via a YouTube video about the Christchurch earthquake, of all things
  5. I’d love to talk to Benjamins about this one – between the name and the opening piano bit, there’s a lot that feels very Debussy about this.
  6. I’m delighted by this title, because the music in this sounds exactly like a ton of the music I listened to growing up. Chef’s kiss.
  7. This is the most Fall Music of everything on the list, I think.
  8. This just made it onto the list at the end of the month, but it very much feels like one that I’ll do a lot of singing along to once I know it.
  9. Another reappearance from last year; I just love the feeling of space in this.
Categories
Review

“Atomic Habits”

James Clear

My life is in flux at the moment. I’ve just recently started a new job, and as a very direct consequence, have to change up some of my outside-of-work doings as well. Happily, I decided to start my project list by going through some of my backlog of books, and alphabetical ordering landed me on this loan from a friend. It’s a good one for times of flux.

As a longtime fan of Cortex, I can’t say that there was anything groundbreaking in this book. Just about everything in it I’ve read or heard in some form or another before, but that isn’t necessarily a bad thing. It’s one thing to know this stuff, and another to have it all put together in one place, coherently summarized.

So as not to be taking bread out of the mouth of James Clear,1 I’m only going to reiterate one of the core ideas. If you want to encourage yourself to do something, make it easy to do; conversely, if you want to discourage yourself from doing something, make it hard to do. The single best example of this is eating healthy: if you want to eat less junk food, buy less junk food. It’s a simple concept, but it’s hiding something clever: if you buy the junk food, you have to have self control all the time to not eat it. And that, perceptibly, wears on you; by the end of a long work day, you may not have the mental energy left to resist.

On the other hand, if there’s no junk food in the house, there’s nothing to resist. Instead of resisting the urge to open a bag of chips, you’re resisting the urge to… drive to the store, buy a bag of chips, drive home, and open a bag of chips. That doesn’t take much resisting.

And meanwhile, the amount of self-control it takes to not buy it in the first place? Just make sure not to go grocery shopping while you’re hungry, and it’s not that hard at all. How much of your day do you spend in the grocery store, after all?

Atomic Habits is a very good executive summary of several thought technologies like this, and I highly recommend it. Check it out.2

  1. Or however that phrase goes.
  2. This is a Bookshop affiliate link – if you buy it from here, I get a little bit of commission. It won’t hurt my feelings if you buy it elsewhere; honestly, I’d rather you check it out from your local library, or go to a local book store. I use Bookshop affiliate links instead of Amazon because they distribute a significant chunk of their profits to small, local book stores.
Categories
Playlist

Playlist of the Month: September 2021

For reasons, I’m no longer doing tech posts, but I am continuing my playlist posts. Because music!

Cologne – Haux on Something to Remember – EP

How It Was – Yoste on A Few Brief Moments – EP

We’ll Be Alright – Yoste on A Few Brief Moments – EP

Spaces – Jaymes Young on Spaces – Single

Arcade – Duncan Laurence on Arcade – Single

twentyfive – Yoste on twentyfive – Single

Oh Dear, Oh Beaux – beaux on A Love Letter To the Moments Spent Outside

Neon Medusa – The Midnight on Horror Show – EP

Flow – Vide on Flow – Single

Starlite – HOKO on Heathen

DIM – SYML on DIM – EP

BLACK TEETH – SYML on DIM – EP

Good in Red – The Midnight on Horror Show – EP

I Only Go South – Yoste on I Only Go South – Single

Phonky Town – Playaphonk on Phonky Town – Single

b!!!rds – Sir Sly on The Rise & Fall of Loverboy

Los Tontos (Live at NPR’s Tiny Desk) – C. Tangana & Kiko Veneno on El Madrileño (Live at NPR’s Tiny Desk) – Single

All Eyes On Me – Bo Burnham on Inside (The Songs)

BYE – Jaden on BYE – Single

Politicians – Hayden Calnin on Politicians – Single

family – FJ Law on TAPE 1

Why Is Everyone Sad? – Yoste on Why Is Everyone Sad? – Single

Vampires – The Midnight & Magik*Magik on Vampires – Single

The Comeback Kid – The Midnight & Magik*Magik on The Rearview Mirror – EP

Sunset – The Midnight & Magik*Magik on The Rearview Mirror – EP

Almost Home (feat. Novo Amor, Mindy Jones & Darlingside) [Reprise Version] – Moby on Almost Home (Reprise Version) [feat. Novo Amor, Mindy Jones & Darlingside] – Single

SEAL of DARKNESS (feat. CXXLION) – Playaphonk on SEAL of DARKNESS (feat. CXXLION) – Single

Sink – Yoste on Sink – Single

Our Bones Turn To Stone – Aquilo on A Safe Place To Be

Oxytocin – Billie Eilish on Happier Than Ever

Yate – C. Tangana on Yate – Single

NDA – Billie Eilish on Happier Than Ever

Bop – Masked Wolf on Bop – Single

Kyoto (Copycat Killer Version) [feat. Rob Moose] – Phoebe Bridgers on Copycat Killer (feat. Rob Moose) – EP

Inner Light – Elderbrook & Bob Moses on Inner Light – Single

Starlight – Griffin Stoller on Starlight – Single1

In This Shirt (Original) – The Irrepressibles on In This Shirt – Single

Chronically Beautiful – flora cash on Chronically Beautiful – EP

We Just Are – Yoste on Nothing’s Everything – EP

Overthinking (Acoustic) – Jake Scott on Overthinking (Acoustic) – Single

Get You the Moon (feat. Snøw) – Kina on Get You the Moon (feat. Snøw) – Single

Hurricane (feat. The Mowgli’s) – Modern Original on Modern Original (feat. The Mowgli’s) – EP

Play Pretend – Griffin Stoller & Son Kuma on Play Pretend – Single

Body Heat – ItsLee & Vide on Body Heat – Single

Hurricane – Kanye West on Donda

Summer – Jaden on CTV3: Day Tripper’s Edition

start//end – EDEN on vertigo2

Daniel – Will Young on Crying on the Bathroom Floor

Till There’s Nothing Left – Will Young on Crying on the Bathroom Floor

Thelma + Louise – Bastille on Thelma + Louise – Single

Trust You – Ross Copperman & Emily Weisband on Trust You – Single

We Used To Laugh / 9 To 9 – flora cash on Our Generation

I Wanna See You Smile – Aquilo on A Safe Place To Be

Coffee – Sylvan Esso on Sylvan Esso

Train In Vain (Stand by Me) – Rostam on Changephobia (Expanded Edition)

Donda – Kanye West on Donda

Broken (Live at Södra Teatern) – Isak Danielson on Live in Stockholm – EP

Dead Girls – Penelope Scott on Hazards – EP3

Walked Through Hell (Acoustic) – Anson Seabra on Dominoes – EP

Want To Be Wanted – Lani Rose on Want To Be Wanted – Single

Honest – Yoste on Nothing’s Everything – EP

Miss You a Little (feat. lovelytheband) – Bryce Vine on Miss You a Little (feat. lovelytheband) – Single

Moon – Kanye West on Donda

Better Now – Sloane on Better Now (feat. Brieanna Grace) – Single

Part of Me – ¿Téo? on ¿Téo?

Memories – The Midnight & Magik*Magik on The Rearview Mirror – EP

Belong in the Sun (feat. Lido) – ¿Téo? on ¿Téo?

Nothing Else Matters – Dermot Kennedy on Nothing Else Matters – Single

Junya – Kanye West on Donda

Take Care in Your Dreaming (feat. Denzel Curry, Tricky & Sampa the Great) – The Avalanches on We Will Always Love You4

The Parts I Hid Away – Hayden Calnin on What It Means to Be Human

PENDEJO – Enrique Iglesias on FINAL (Vol.1)

The Catalyst – LINKIN PARK on A Thousand Suns (Deluxe Edition)

Outta Hand – ¿Téo? on ¿Téo?

Music Is The Light (feat. Cornelius & Kelly Moran) – The Avalanches on We Will Always Love You

End – Hayden Calnin on What It Means to Be Human5

Mama Plum – Sam Walwyn on Mama Plum – Single

In the Beginning – Hayden Calnin on What It Means to Be Human

Highway Man – Teflon Sega on Highway Man – Single

  1. “Oh my god, it’s Let It Rock!”
  2. I think this might be a seasonal thing, this goes really well with rainy days.
  3. I dig the album art, it’s got “Mystery Machine” vibes.
  4. Texted this to the friend who originally introduced it to me with a “thanks for sharing, it’s great!” kind of thing, and now iOS 15 shows it to him with “shared by Grey.” Stealing valor isn’t cool, iOS.
  5. I’m really enjoying this whole album. Hayden Calnin is great.
Categories
Review

Star Trek: Lower Decks

I like the concept of Star Trek a lot — some of my favorite books growing up were optimistic science fiction, and the majority of Star Trek falls into that category. That said, I’ve mostly failed to actually get very much into Star Trek; without the nostalgia of having grown up watching it, I (watching in the ‘golden age of TV’) struggle to get past the date aesthetic of the older series.

All that said, Lower Decks feels like it was specifically targeted at me — I love the “adult animated television series” as a form of media, and it’s nice to have a clear entry point into the greater Star Trek universe.

The concept is pretty simple: instead of following around the bridge crew, what’s life like for the regular folks on a Starfleet ship? It feels more like a space opera: from this perspective you get glances into the crazy sci-fi goings-on, but half the time it’s just background dressing for interpersonal stories. It’s fun watching the characters shrug off a member of the bridge crew returning from the dead because “oh, they always do that. Probably they got Borg’d, or it’s a transporter clone, or something.”

Having it as animation also works quite well. It frees them to do ridiculous scenes without blowing through an entire season’s worth of special effects budget. It’s a lot easier to animate the aforementioned transporter clone scene when you just… draw the person twice and have them record two takes. No compositing shots together, no body-double in a green-screen suit. And, I hope, it will allow the animation to remain much more timeless than the live action shows can manage.

All told, I quite like Lower Decks, and do recommend it. As of this writing, we’re about halfway through the second season, with new episodes coming out every week, so go ahead and check it out. Each episode is around half an hour, and they work well as a palate cleanser between heavier series. Check it out.

Categories
Photography United States

Mt. St. Helens

If you’re looking at that and thinking “hey, that looks like a lot of mountain to climb,” you’re right! It is a lot of mountain to climb, and from that angle, you can’t see the half of it. (Literally.)

It’s an interesting hike, in three sections – the woodsy bit at the bottom, the bouldering bit in the middle, and the ash fields at the top.

This last photo was from the bouldery bit, but you can see a wash of the ash fields extending down in the back there.

But now, dear reader, I must admit to you that I didn’t make it to the summit; I got as far as the ash fields and realized that, if I tried to continue on to the top, I’d wind up replacing my “I went on a cool hike!” story with an “I went on a ride in a Forestry Service rescue helicopter” story.

One day, I’ll be back. And hey, it was a cool hike! Anywhere with signage like this is going to be a cool hike.

Categories
Playlist

Playlist of the Month: August 2021

If my spate of “here’s some photos instead of writing something” posts weren’t a hint, I have had a very busy month. Gotta make time for music, though!

Cologne – Haux on Something to Remember – EP

How It Was – Yoste on A Few Brief Moments – EP

We’ll Be Alright – Yoste on A Few Brief Moments – EP

DON’T TELL THE BOYS – Petey on Checkin’ Up on Buds – EP

Spaces – Jaymes Young on Spaces – Single

Arcade – Duncan Laurence on Arcade – Single

twentyfive – Yoste on twentyfive – Single

Oh Dear, Oh Beaux – beaux on A Love Letter To the Moments Spent Outside

Neon Medusa – The Midnight on Horror Show – EP

Flow – Vide on Flow – Single

Starlite – HOKO on Heathen

DIM – SYML on DIM – EP

BLACK TEETH – SYML on DIM – EP

Good in Red – The Midnight on Horror Show – EP

Coldplay (feat. Vic Mensa) – Mr Hudson on Coldplay (feat. Vic Mensa) – Single

Don’t Go Puttin Wishes in My Head – TORRES on Thirstier

I Only Go South – Yoste on I Only Go South – Single

Phonky Town – Playaphonk on Phonky Town – Single

b!!!rds – Sir Sly on The Rise & Fall of Loverboy

Los Tontos (Live at NPR’s Tiny Desk) – C. Tangana & Kiko Veneno on El Madrileño (Live at NPR’s Tiny Desk) – Single

All Eyes On Me – Bo Burnham on Inside (The Songs)

Distorted Light Beam – Bastille on Distorted Light Beam – Single

BYE – Jaden on BYE – Single

Politicians – Hayden Calnin on Politicians – Single

old cartoons – FJ Law on TAPE 1

family – FJ Law on TAPE 1

Tangerine – Benicio Bryant on Tangerine – Single

Why Is Everyone Sad? – Yoste on Why Is Everyone Sad? – Single

Vampires – The Midnight & Magik*Magik on Vampires – Single

Don’t You Look At Me That Way – flora cash on Chronically Beautiful – EP

The Comeback Kid – The Midnight & Magik*Magik on The Rearview Mirror – EP

Reckless – Turbo on Cocaine & Fireworks

Anxiety In Real Time – The Maine on XOXO: From Love & Anxiety In Real Time

Ghosts – BANNERS on Teen Wolf Season 5

Shockwave – Marshmello on Shockwave

Tied Up – Jon Bryant on Tied Up – Single

Momma Look – Lani Rose on Momma Look – Single

Smells Like Teen Spirit – Malia J on Smells Like Teen Spirit – Single1

Sunset – The Midnight & Magik*Magik on The Rearview Mirror – EP

superpowerful – slenderbodies & Crooked Colours on are we?

INDUSTRY BABY – Lil Nas X & Jack Harlow on INDUSTRY BABY – Single

I Didn’t Change My Number – Billie Eilish on Happier Than Ever

I Think I Love You – The Partridge Family on The Partridge Family Album2

Falling Down – Harrison Storm on Falling Down – Single

Almost Home (feat. Novo Amor, Mindy Jones & Darlingside) [Reprise Version] – Moby on Almost Home (Reprise Version) [feat. Novo Amor, Mindy Jones & Darlingside] – Single3

Give Me The Future – Bastille on Give Me The Future – Single

Sunset Lover – Petit Biscuit on Petit Biscuit – EP

SEAL of DARKNESS (feat. CXXLION) – Playaphonk on SEAL of DARKNESS (feat. CXXLION) – Single

Take My Breath – The Weeknd on Take My Breath – Single

Bedroom Eyes (feat. Studio Killers) – The Knocks on Bedroom Eyes (feat. Studio Killers) – Single

I’m Tired – Amber Run on I’m Tired – Single

Sink – Yoste on Sink – Single4

Better Days – Dermot Kennedy on Better Days – Single

Our Bones Turn To Stone – Aquilo on A Safe Place To Be

Oxytocin – Billie Eilish on Happier Than Ever

Yate – C. Tangana on Yate – Single

NDA – Billie Eilish on Happier Than Ever

Bop – Masked Wolf on Bop – Single

Makes Me Wonder – ItsLee, nowifi & Vide on Makes Me Wonder – Single

What It Means to Be Human – Hayden Calnin on What It Means to Be Human – Single5

Kyoto (Copycat Killer Version) [feat. Rob Moose] – Phoebe Bridgers on Copycat Killer (feat. Rob Moose) – EP

Inner Light – Elderbrook & Bob Moses on Inner Light – Single6

Starlight – Griffin Stoller on Starlight – Single

In This Shirt (Original) – The Irrepressibles on In This Shirt – Single7

@ my worst – blackbear on misery lake – EP

Chronically Beautiful – flora cash on Chronically Beautiful – EP

Higher Power – Coldplay on Music of the Spheres

  1. This was an excellent musical choice for how it was used in Black Widow.
  2. Much like the song, I woke up, sat bolt upright in bed, and started singing this. Incredibly catchy.
  3. Some lovely Novo Amor, but tempered by the other artists, so it doesn’t immediately crush you with The Sadness.
  4. “Don’t you want to see your sister again? Her life’s a wreck, but she was cool back then.” – sent to my sister, thanks to the “share lyrics” thing in Music.
  5. I think Hayden Calnin is the most lyrically interesting artist I’m listening to at the moment. Good stuff!
  6. Probably my single favorite new one this month; I can’t figure out what song it’s making me nostalgic for, but it’s definitely doing it.
  7. Very cinematic in feeling; is there a reverse “what song is in this show?” site so I can look up what shows wind up using this song?
Categories
Photography United States

Tubbs Hill

I was in Coeur d’Alene a while back, and had the chance to go for a hike around Tubbs Hill. If you’re ever in the area, I recommend it – it’s a nice little hike, and there’s some great views along the way.

Categories
Photography United States

Silver Falls

This weekend, I am attending a wedding and then moving; in place of my usual weekly words, please enjoy a couple photos I took at Silver Falls State Park.

Categories
Technology

Async/await in Vapor

Swift 5.5 with the new async/await features is going to be released quite soon, and I’m very excited. And while all the new async APIs in UIKit and SwiftUI are neat, they don’t actually catch my eye all that much. As of now, async/await will only be available on the fall-2021 Apple OS releases, and following the general pattern of “current iOS minus one” that means async/await will be available starting… fall of 2022.

However, that’s not the only place I use Swift! I also dabble in server-side Swift when I can, and over there, it’s ready-ish to use now.1

And hey, would you look at that, Vapor’s already got a PR open for adding async variants of the core APIs. Neat! Let’s see how this is implemented.

And, hey, it’s… pretty simple, really! All it takes is getting into the (pre-release!) _NIOConcurrency module, and suddenly any EventLoopFuture has a new function: public func get() async throws -> T. The implementation of that is also lovely and simple, thanks to Swift’s withUnsafeThrowingContinuation and the way SwiftNIO already works.

Now, where I’m more excited about this than Vapor is in Fluent — a lot of the server-side work I do is in C#, using the excellent Entity Framework Core. Database requests are straightforward: MyModel model = await db.MyModels.FirstOrDefaultAsync(m => m.id == id);

With the non-async version of Vapor and Fluent, this is… a bit more difficult to work with. MyModel.find(id, on: req.db).flatMap { model in ... }

At first glance it doesn’t look too bad, but notice the flatMap — we can’t just continue writing our code, we have to move into a new scope. Hello, pyramid of doom.

But now?2 Now, we can await things. Fluent looks more like Entity Framework all of a sudden: let model = try await MyModel.find(id, on: req.db)

That’s already a much nicer API to work with, and it delivers on the promise of async/await: much simpler flow of code. I’m excited to untangle some of my more complex flatMap pyramids.

What I’m still curious about, and will need to do some testing with, is to see how well it does with concurrency. It’s a known issue in Entity Framework that you can’t run multiple requests against a single DbContext; what I’m wondering is if Fluent has this same limitation, or if I can safely do something like:

async let model1 = try MyModel.find(id1, on: req.db) async let model2 = try MyModel.find(id2, on: req.db) let result = MyResult(model1: await model1, model2: await model2)
Code language: JavaScript (javascript)

That, I don’t yet know! I’ll have to do some experimenting and try it — which may be a future blog post. Still, even if I have to immediately await everything, the improvements to my code’s legibility will be worth it.

  1. Disclaimer: Swift 5.5 is, as of this writing, pre-release; similarly, the versions of Swift-NIO and Vapor that provide async APIs are pre-release. Don’t use these in production.
  2. Well, soon: this as another draft PR as of this writing.
Categories
Programming

Islands.swift

Back in undergrad, I did a lot of programming challenges – the sort of thing that shows up as a somewhat-contrived question in an interview. Great way to learn about automated testing, though, as in a school environment it’s basically an automated test suite where you aren’t allowed to see the tests.1

I’ve been wanting to brush up on algorithms a bit, and figured this would be a good way to do it. This time around, though, I’m using Swift; C++ was a fine language to learn, but I have exactly no desire to use it anymore.

So, the first problem I found whilst aimlessly googling was “Islands”. Given a grid of some sort (could be [[Bool]], although in this case I’ve done one as [[Character]], with '1' and '0' being the inputs2), count the number of islands in it.

An island, in this case, is any contiguous collection of '1' is in the grid, while all the the '0's are ocean.

Step One: Ask Questions

First question: what does ‘contiguous’ mean? Can we move diagonally, or only in the four cardinal directions?

Only the four cardinal directions, in this example.

Alright. Next, what happens at the edges? Do we Asteroids-style loop around, or is it just ‘out of bounds == ocean’?

Out of bounds is ocean.

Excellent! Means we don’t have any literal edge cases.

Final question before I start actually digging into the problem, how are we hooking into the test case?

protocol Islands { func numIslands(_ grid: [[Character]]) -> Int }

Alright, simple enough. Let’s get cracking.

Step Two: Brainstorm

My first thought upon seeing a grid is “flood fill.” Now, this isn’t quite a flood fill, because the whole point is that it’s not all interconnected, but that at least gives me a starting point – for a flood fill, you want recursion. And you want to remember where you’ve been, so you can make a base case – otherwise, you’ll just loop forever. O(infinity) isn’t really ideal.

So, what’s the actual algorithm here?

Simple enough: for each point on the grid, check if it’s part of a new island. If it is, add one to our count of islands; if it isn’t, don’t. Move on to the next point on the grid.

Now, how do we check if it’s a new island? Also pretty simple: check if we’ve been here before; if we have, it’s not a new island. Then check if it’s an island; if it isn’t, it’s also not a new island. And, now that we know it’s a new island, we go recursive – mark that we’ve been to this spot, and flood fill our way across the neighboring tiles on the grid until we run out of island.

Step Three: Code

class Solution: Islands { private var visited: [[Bool]] = [] // (1) private var grid: [[Character]] = [] // (2) @discardableResult private func isNewIsland(x: Int, y: Int) -> Bool { // (3) guard x >= 0 else { return false } guard y >= 0 else { return false } guard x < grid.count else { return false } guard y < grid[0].count else { return false } if (visited[x][y]) { return false } visited[x][y] = true if (grid[x][y] == "1") { // visit all neighbors isNewIsland(x: x+1, y: y) isNewIsland(x: x-1, y: y) isNewIsland(x: x, y: y+1) isNewIsland(x: x, y: y-1) return true } else { return false } } func numIslands(_ grid: [[Character]]) -> Int { // (4) // precondition checks guard grid.count > 0 else { return 0 } guard grid[0].count > 0 else { return 0 } // reset visited state let subItem = Array<Bool>(repeating: false, count: grid[0].count) self.visited = Array<Array<Bool>>(repeating: subItem, count: grid.count) self.grid = grid var islandCount = 0 for i in 0..<grid.count { for j in 0..<grid[i].count { if isNewIsland(x: i, y: j) { islandCount = islandCount + 1 } } } return islandCount } }

Let’s go through this bit by bit.

  1. visited is key – we need to know where we’ve been. Unlike the folks making the problem statement, I actually know what my data type is – [[Bool]]
  2. This… is mostly for ease of passing it around. While I could write up my isNewIsland function in a purely-functional sense, with it taking in the coordinates, visited state, and grid, and then outputting the result… well, that’s kinda silly, really.
  3. isNewIsland is the bulk of the work. Let’s go through it.
    • The first four lines are checking that we’ve got valid input. This saves us from needing to check the range every time we call the method; if we try to do something that we can’t, it’ll just return false. Admittedly, I’m not checking that the grid properly exists before using it, but that’s what private is for – this is an implementation detail.
    • Next, check if we’ve visited this spot before. If we have, we’re done – it’s not a new island!
    • Before we go any further, mark this spot as visited! Important, because we may be recursing shortly, and we don’t want to get caught in an infinite loop.
    • Check if this is an island at all. If it isn’t, we’re done – this wasn’t a new island. If it is, though, we recurse. This is where the @discardableResult comes in – since we’ve got an early bail-out for “we’ve already visited this spot”, we know we’ll never be checking the same island twice, so we actually don’t care about the result of checking the neighboring spaces, we just need it to happen… so that they get marked as visited. And after we’re done marking the whole island as visited, we can finally return true, telling the caller (if they’re listening!) that this was a new island.
  4. Finally, our implementation of numIslands. Mostly it’s just checking for valid inputs – Swift can enforce at compile-time that nobody tries to pass us anything completely the wrong type, but it can’t force people to give us a grid with dimensions greater than 0 in either direction, so we need to check that ourselves. After that, we set up our visited as all-false, copy the grid, and loop through it, counting up our islands.

Step Four: Test

This part, I will mostly leave to your imagination; for myself, I just hit ‘run’ and let the automated tests do their thing. In an interview, Step Two should also include coming up with some test cases and running through them on your pseudo code – and remember to include one or two invalid inputs!

After that, if your tests pass, you could talk about changes you might make. Given my numerous remarks about [[Character]] instead of [[Boolean]], my thought would be to make it generic – have a grid of [[T]] and take a (T) -> Bool closure that tells you whether or not a grid point is an island. I’d also want to comment up the code a bit more, which I’ve neglected to do in this case as I’m writing a blog post around it instead.

Now, having already spoiled the answer, I’ll go ahead and mention that I tried this out at LeetCode; while this one may not be the most fun for you in the immediate wake of my explainer, they’ve got plenty of other solutions you could take a crack at, and a variety of languages to use. Give it a go, it’s kinda fun!

  1. Basically, the inverse of an “opaque box” analysis, if you think about it.
  2. And by “I’ve done one” I mean “the site that gave the example,” because I… wouldn’t use [[Character]] to represent a [[Bool]].
Categories
Playlist

Playlist of the Month: July 2021

This month has been very long, and terrifyingly hot. Nobody tell me that it’s August now, I don’t want to think about that yet.

Cologne – Haux on Something to Remember – EP

How It Was – Yoste on A Few Brief Moments – EP

We’ll Be Alright – Yoste on A Few Brief Moments – EP

DON’T TELL THE BOYS – Petey on Checkin’ Up on Buds – EP

Spaces – Jaymes Young on Spaces – Single

Arcade – Duncan Laurence on Arcade – Single

twentyfive – Yoste on twentyfive – Single

Oh Dear, Oh Beaux – beaux on A Love Letter To the Moments Spent Outside

Neon Medusa – The Midnight on Horror Show – EP

Flow – Vide on Flow – Single

Starlite – HOKO on Heathen

DIM – SYML on DIM – EP

BLACK TEETH – SYML on DIM – EP

Magic – Phillip LaRue on Night Swimming – Single

Rät – Penelope Scott on Public Void

Good in Red – The Midnight on Horror Show – EP

Coldplay (feat. Vic Mensa) – Mr Hudson on Coldplay (feat. Vic Mensa) – Single

Save Me – Majik on It’s Alright / Save Me – Single

Expectations – Joel Ansett on Expectations – Single

Magazines – Anson Seabra on Magazines – Single

Paranoid – Lani Rose on To: Keep You From: Hurting Me

Imported – Jessie Reyez & 6LACK on Imported – Single

Belong – slenderbodies on Komorebi

Never Surrender (feat. H. Kenneth) – Mike Emilio & Hypanda on Never Surrender (feat. H. Kenneth) – Single

Don’t Go Puttin Wishes in My Head – TORRES on Thirstier

Todo Estaba Bien – Carlos Sadness & Manuel Medrano on Tropical Jesus

Baci Dalla Tunisia – Mahmood on Ghettolimpo

Talata – Mahmood on Ghettolimpo

T’Amo – Mahmood on Ghettolimpo

I Only Go South – Yoste on I Only Go South – Single

Phonky Town – Playaphonk on Phonky Town – Single

b!!!rds – Sir Sly on The Rise & Fall of Loverboy

Gone Are The Days (feat. James Gillespie) – Kygo on Gone Are The Days (feat. James Gillespie) – Single

Los Tontos (Live at NPR’s Tiny Desk) – C. Tangana & Kiko Veneno on El Madrileño (Live at NPR’s Tiny Desk) – Single

All Eyes On Me – Bo Burnham on Inside (The Songs)1

Cherry – Chromatics on Cherry (Deluxe)

Bezos I – Bo Burnham on Inside (The Songs)

August – Flipturn on Citrona

Distorted Light Beam – Bastille on Distorted Light Beam – Single

Red – bennytheghost on Supersonic – EP

BYE – Jaden on BYE – Single

Sister – ferdinant. on Airplanes – EP

Your Power – Billie Eilish on Happier Than Ever

Politicians – Hayden Calnin on Politicians – Single2

Every Time – Landon Austin on Every Time – Single

Lost Cause – Billie Eilish on Happier Than Ever

who put blood in my drink? – SYML & sagun on who put blood in my drink? – Single

Follow You – Imagine Dragons on Follow You / Cutthroat – Single

Lean Into Life – Petey on Lean Into Life

Play Dead – Armen Paul on Play Dead – Single

barcelona – Winnetka Bowling League & Sasha Alex Sloan on barcelona – Single

The Only One – Chord Overstreet on Stone Man – EP

Skeletons – HARLOR on Letters To an X – EP

old cartoons – FJ Law on TAPE 13

Fingers Crossed – Trevor Daniel & Julia Michaels on Fingers Crossed – Single

Mi Gente – J Balvin & Willy William on Vibras

If I Go (Embers Edition) – Blakey on If I Go – Single

family – FJ Law on TAPE 14

Hurricane – Thirty Seconds to Mars on This Is War

War – Chance Peña on War – Single

Tangerine – Benicio Bryant on Tangerine – Single

Cruel Love – Teflon Sega on Cruel Love – Single

ME PASE (feat. Farruko) – Enrique Iglesias on ME PASE (feat. Farruko) – Single

Why Is Everyone Sad? – Yoste on Why Is Everyone Sad? – Single

Vampires – The Midnight & Magik*Magik on Vampires – Single5

Good Girls – CHVRCHES on Screen Violence

Motley Crew – Post Malone on Motley Crew – Single

Don’t You Look At Me That Way – flora cash on Chronically Beautiful – EP

  1. But seriously, if Burnham doesn’t win an Emmy for Inside, I… don’t know what I’ll do, really. Disregard the entire concept of the Emmys for the future, I suppose.
  2. I’ve yet to tune in to the entirety of the lyrics here, but the bits I do listen to feel about right for the title, which I like.
  3. “… where the normal people are. But don’t worry: I’m going to help you hide the fact that you’re high as shit.”
  4. My taste in music, at the moment, is definitely Very Autotune on the vocals.
  5. Definitely my favorite new addition this month; kinda reminds me of the Westworld theme.