Review: Parable of the Sower

Parable of the Sower (Earthseed, #1)Parable of the Sower by Octavia E. Butler
My rating: 3 of 5 stars

I’ve had this book for about four years, ever since I got it in a Humble Bundle. I knew that I wanted to read Octavia Butler some day, but I hasn’t gotten around to it yet. Then NPR’s Throughline decided to do an episode about Octavia Butler and I wanted to read something before listening to the episode. So I asked the hosts via Twitter what book I should read. They recommended the two Earthseed books. I tore through this one, finishing it in just four days.

Boy was this book depressing as hell. I’ve been reading dystopias for over 20 years now and I usually enjoy the genre. Just how did we get from America to Hunger Games’ Panem or Red Rising’s color-coded society? What was it like for the narrator in 1984 to work for the government and know things were slightly wrong? But this book….it hit WAY too close to home. The scary part is that it was written in 1993 and yet it seems oh so likely that our 2024 could mirror the 2024 of Parable of the Sower.

When the book starts, society has broken down. Climate change and drug addiction have wreaked havoc, creating a super 1920s dust-bowl like situation where large groups of folks wander homeless throughout America looking for work or doing what they can to survive. Or, in a more pessimistic turn, using violence to get what they want and damn everyone else.

The middle class is just barely hanging on with walled neighborhoods to try and keep the violence and worst of the crime out. Yet, leaving your neighborhood to go to work, if you even have a job, is gambling that you might not make it back.

What makes it seem so much like we could get there? Well, for one thing, there’s a huge drug epidemic that’s causing a large part of the destruction. Ms. Butler may have had the crack epidemic in mind when she wrote the book, but our current meth and oxycotin situations seem even worse right now. Government deregulation has left corporations with so much power that some have brought back the company towns of the last 1800s/early 1900s and others have turned to outright slavery. The President gets elected on promises that getting rid of even more regulations will be the solution. Meanwhile, it’s more dangerous to go to the cops than it is to just let things alone. They’re just as likely to rob you or throw you in jail. Again, in the 1990s when Ms. Butler wrote this, she may have been thinking of the situation that led to things like the Rodney King beating and riots, but our eyes have been opened over the past few years as cell phone coverage has covered the abuses that some perpetrate when they are given power without consequence. Yet the right continue to do OK because they can afford the security systems that keep the rabble out. It’s America become Brazil or some African country.

It’s a society where might makes right. And it’s one we seem to be slipping into. As I write this, legislatures across the USA have decided that they can only win going forward through cheating and have moved to write bills to disenfranchise large swaths of the population. It all seems to be slowly falling apart. Recently delivery drivers have had their cars stolen when they stop to make a delivery. Folks are attacking UPS trucks. And, frankly, since seeing the parallels of this book and where we seem to be headed, I’ve been having trouble sleeping at night.

The book is riveting. The main characters have a believable cynicism about the world that’s refreshing – perhaps because this is the first non-YA dystopia I’ve read in a while. But (insert a string of profanity) this was really, really hard to read right now. And Ms. Butler didn’t even foresee the dissolution of a shared reality that came with social media. It’s dark times – and I’m writing this in the world where we even made a turn away from another four years of deep corruption that was depressing in its own right.

All that is to say that this is a good book – a great book, but depending on how you feel about the world, it might not be a good time to read it.

View all my reviews

Review: Third Daughter

Third Daughter (Royals of Dharia, #1)Third Daughter by Susan Kaye Quinn
My rating: 4 of 5 stars

I got this book as part of the Storybundle.com Extraordinary Steampunk Bundle. I had no idea what to expect when I started reading it. Based on the cover, I figured it was basically a Steampunk novel taking place in India rather than England. That, alone seemed kind of interesting. As I read through the book, it quickly became apparent that this was actually taking place in an alternate Earth with an India-like culture spread across three countries. After just a few chapters, the book becomes a spy thriller and I found myself unable to put the book down. Many times, while reading, I would keep telling myself “just one more chapter.” While this trilogy seems to have been plotted as one large story, this book has a story that comes to a satisfying ending.

If I had one criticism about this book, it’s that it is, in my opinion, mis-characterized. Both the description on StoryBundle and the back of the book describe it as a steampunk romance, but I found it to barely be either of those. Yes, there is an airship that’s an important plot point, but it barely figures in the story. There are two automatons that don’t do much. Nothing about their version of encrypted radio seems to depend on steampunk either. As for the romance part – there is some making out, but that’s about it. Maybe I missed something and this is YA or something, but I’m used to romance meaning quite a bit more. Even if there isn’t sex, the characters don’t even really express much more than a strong desire to kiss. Neither of those two things makes this a bad book – as I mentioned – I found myself unable to put it down, even when it was time to sleep. But if you’re coming into this expecting ROMANCE and lots of crazy steam-powered tech – you won’t find that here.

Overall, the story was compelling enough to keep me interested. It’s nice to have a Victorian story that takes place somewhere else than England. I’d recommend it as a nice, fun read.

View all my reviews

Review: Wyrd Sisters

Wyrd Sisters (Discworld, #6; Witches #2)Wyrd Sisters by Terry Pratchett
My rating: 4 of 5 stars

This is my second time reading this book. The rating went up from 3 to 4 stars

This book revisits Granny Weatherwax, but while it keeps a lot of her personality traits, it seems to at least half-retcon the events of Equal Rites. The earlier book seemed to point to witches sticking strictly to headology while this one just has it as a preference. While Pratchett does keep Granny’s unreliable broom, she seems a lot more comfortable on it than she did in the previous book. Did she grow to like it or simply an outgrowth of ignoring the first few Discworld books?

Getting away from all that, the book does make several additions to what will be the state of Discworld going forward. First of all, it adds one of my favorite characters, Nanny Ogg. She’s a witch who had so many kids across three marriages, that almost anyone anywhere in Lancre is either one of her children or children-in-laws. She’s also in the role of the older person who’s been around so long that manners and polite society are things that happen to other folks. She’s always ready to point things out where others would be silent. She also introduces us to the Discworld bawdy songs, “The Hedgehog Can Never Be Buggered” and “A Wizard’s Staff has got a Knob on the End” which feature in every Discworld bar scene going forward. Magrat is fun as a witch who take all the “Hot Topic” and goth elements seriously. I think I enjoy her character in later books. Quirm is firmly cemented as an Italy analogue in this book, too. Finally, we have The Dysk – Pratchett’s version of the Globe Theatre.

Plot-wise, Pratchett introduces his trend of having the Witch books be Shakespeare parodies and this one a parody of MacBeth (and maybe some Hamlet thrown in? I’m not as familiar with Hamlet). It follows the beats in a rather Discworld sort of way and we have a bit of fun with it all. We follow the stories of the Duke and Dutchess (MacBeth roles), the three witches, The Fool, and a traveling troupe of actors (the part they play is definitely from Hamlet unless the Simpsons Hamlet episode lied to me). The book doesn’t do too much character growth for any of the characters. We’re introduced (and reintroduced) to the witches and I believe it takes a few books before Magrat has her growth moment. The plot mostly happens to the characters thanks to destiny (well, destiny plus witches).

All that aside, Pratchett finally has his Discworld sea-legs at this point and things are chugging along. The story flows well and isn’t just a bunch of loosely connected sketches. Not a bad starting point for a new reader although Mort would work just as well.

View all my reviews

Review: The Great Hunt

The Great Hunt (The Wheel of Time, #2)The Great Hunt by Robert Jordan
My rating: 3 of 5 stars

This book was quite a slow burn. (And I know some of the later books in this series are strongly disliked for keeping the story running in place) About a quarter of the way through the book I was certain this would be the end of my stroll through the Wheel of Time. But, gosh darn it!, Robert Jordan pulled it through at the end. The climax was pretty incredible and we learned some very interesting aspects of the in-world history. I thought the best part was the damane sul’man backstory which reminded me a lot of the backstory to The Handmaid’s Tale. There was definitely some schaudenfreude there.

At this point in my reading journey, I’m OK with a slow burn of a book. Otherwise I wouldn’t read The Stormlight Archive. But the biggest bummer with this book is that there was basically a real lack of character growth. The characters just kept denying what they needed to do. And, yes, many books involve that trope. But this one has essetially been going on for 1.5 books at this point. That makes it a bit tiresome. I’m hoping that, going forward, we can have a bit more character growth and a bit more plot movement per book (even if I know there are a few books later on where things get stuck). This series is still on probabation. Let’s see if they can earn my desire on the next entry. We’ll be back to the world of the Wheel of Time later this year – probably in the fall.

View all my reviews

Review: A Wizard’s Guide to Defensive Baking

A Wizard’s Guide to Defensive BakingA Wizard’s Guide to Defensive Baking by T. Kingfisher
My rating: 4 of 5 stars

Well, that was quite an excellent book! My 9-year-old read it and then wanted to share it with me, so she asked me to read it to her before bed. I must say, this book was a lot more sophisticated than I expected from the title and from the expected audience. It’s quite a mature take at the subject matter; T. Kingfisher definitely believes in the maxim of not talking down to her audience. There are themes of death, PTSD, fantasy racism, wrongful arrest by the state, war, and so much more. It really does prepare kids, mentally, to deal with the fact that the adults don’t have it all together. The key, of course, that it does so realistically. It’s not the cruel or ineffectual adults of British kids novels, these are adults doing their best and still failing; or acting under selfish motives.

On top of all that, Kingfisher played with all the tropes and had quite a few minor plot twists that kept me guessing about which way things were going to go. The way she was dealing with things made me question whether this was the type of book where everyone would make it to the end or what the cost would be if they did.

I highly recommend this book for any young fantasy readers in your life who are ready to deal with some more mature themes (although, not mature as in adult – no real profanity, no sex, or anything like that). My 9-year-old ate it up, but you’ll have to judge if your reader is ready at that age or needs to wait a bit more. I’m definitely curious to see what else this author has written as T. Kingfisher (she has different genres under different pen names).

View all my reviews

Review: The Official Scratchjr Book: Help Your Kids Learn to Code

The Official Scratchjr Book: Help Your Kids Learn to CodeThe Official Scratchjr Book: Help Your Kids Learn to Code by Marina Umaschi Bers
My rating: 4 of 5 stars

Many of you may be familiar with Scratch if you’ve got kids about 15 or so years old or younger. It’s the hot language for the elementary and (in some places) middle school set to teach programming. It’s particularly great for the younger kids because programming takes place using blocks that slot into each other. This allows for the kids not to have to worry about spelling or curly braces or semicolons. You just plug blocks into each other and code. I scoffed at it at first until I saw the complex programs kids can create with Scratch. Scratch Jr is almost exactly the same thing, except it’s for younger kids and it’s a tablet program.

I went through this book with my five year old twins. My son was a bit too impatient and bounced out halfway through. My daughter stuck with it and make it all the way through the final big project at the end. The book is written as if speaking to the children, but each chapter has a “for grownups” section that gives some advice for how to take the chapter’s lessons a bit further. It seems targeted at educators, but shouldn’t be any trouble for parents to use (as I did) as long as you aren’t someone for whom technology seems to be bewildering. There are TONS of images showing you exactly what to do for the base program. From there it should be easy to extrapolate for the challenge programs. The authors have done an amazing job here and I can’t think how they could have done any better.

As I said in a review for another programming book for kids (and on my blog) I believe I tried to get my oldest into programming the wrong way – with a kids book on Python programming. While Python is an extremely easy language to learn, it was a little too much to learn programming concepts at the same time as learning to type and specific syntax. If you have a child in your life who’s about 5-7 years old, this book is a perfect introduction into programming. Almost everyone has a tablet nowadays, so it even works if the family doesn’t have a desktop or laptop computer. If they really enjoy it, feel free to graduate the kid to Scratch. (You can program it online or download offline programs if you have an inconsistent Internet connection) Every kid is different (I began my programming journey when I was 8 (decades ago) with BASIC), but I would wait to introduce them to Python or Ruby until they’re 11 or so.

View all my reviews

Review: Sourcery

Sourcery (Discworld, #5; Rincewind #3)Sourcery by Terry Pratchett
My rating: 3 of 5 stars

This is my second time reading this book

I believe this book marks the inflection point from the retconned books to the more continuity focused books. It appears that Equal Rites has already been retconned away by this book or else Rincewind is ignorant of those events when he tells Conina that no women enter the doors of the university. Although, I guess we can’t trust him too much because I believe even this one mentions that women work in the kitchens and so forth.

This book has a bit of a feel of a sitcom. It’s got guest-stars like Conina (one of Cohen the Barbarian’s daughters) who don’t really have any character growth and are mind-wiped at the end of the book. In fact, the reset button is hit on most of the Discworld at the end. I believe only The Librarian and Rincewind (and maybe some anonymous wizards) have any idea of what happened during the course of this book. And, at the end, Coin (view spoiler).

That said, the narrative structure is getting a bit more conventional by this book. It’s less a series of fantasy Monty Python sketches, and a more coeherent story. That said, we do get introduced to Discworld’s Arabian analogue. Lots of fun there, including messing around with what the point of a harem is (see 1001 Arabian Nights) and having some fun with the Vizier trope. (Definitely a trope Pratchett enjoyed playing with. There was a great scene in Mort with Discorld-China’s emperor and vizier. I believe Pyramids also has that trope as a main bit of the story)

Can it be read standalone? There’s a bit about Rincewind and The Luggage that would be well served by having read the previous Rincewind books. That said, it’s not too important a bit of canon. Pratchett also does a good job introducing the the way wizards feel about each other (and he’s 1-2 books from ending that) so you don’t need that either. You miss the story of why The Librarian is the way he is an the joke about Cohen the Barbarian, but these are tiny Easter eggs. Yes, I do believe you can read this one standalone. I guess it also means you can skip if it you wanted to start further in the Discworld series.

View all my reviews

Review: Mort

Mort (Discworld, #4; Death, #1)Mort by Terry Pratchett
My rating: 4 of 5 stars

This is my second time reading Mort

I dropped the rating from 5/5 to 4/5 because I’m using the tooltips for the ratings. I really enjoyed this book a lot. In my re-read this is the first tone I have enjoyed without any reservations. But it wasn’t “amazing”.

This is the first Discworld book that can be read completely independantly of the others. Are there some Easter Eggs if you’ve read the first 3 books? Sure. There’s mention of Granny Weatherwax’s Discworld version of “marital aides”. You’ll know why the librarian at the Unseen University is an Orangutang. And this will be the second time you meet Death’s adopted daughter. But, outside of that, this really is a great standalone book. If I wanted to do a survey of British fantasy humor (say I was a University professor), I could assign this book and folks would get the idea without feeling that they were being dropped 4 books into a 30-something book series.

The premise of the book is quite simple – Death takes on an apprentice. But Pratchett takes that simple premise and builds up a relatively deep (considering this is part of a fantasy satire series) exploration of the meaning of life, death, nihilism, fate, etc. We get a good look at the last few minutes of various folks throughout the Disc and each provides a little insight. It may seem a bit maudlin, but while I was reading this book I thought more about evaluating how I was spending my time and making sure I made more time for the wife and kids.

At this point in my re-read, I think I would say that if you want to know whether you should consider the Discworld – read this one first. If you like it, then you’ll probably enjoy most of the Discworld books. At that point it’s up to you whether you go back and read the first 3 or just go from here on out. In my memory, once we get to the end of the next book, Sourcery, Pratchett has figured out that he’s going to do Discworld for the long haul and we start to get a more coherent story that maintains continuity. (Although you can see bits of that settling already with this book)

View all my reviews

Review: Equal Rites

Equal Rites (Discworld, #3; Witches, #1)Equal Rites by Terry Pratchett
My rating: 3 of 5 stars

This is my second time reading this book

This is DEFINITELY a book of its times. I remember in the late 80s and early 90s there was a lot of fiction around whether women could really equal men in the workplace. Why then? I guess because it’s one generation removed from the Civil Rights era in the 60s and 70s? I know the backlash had grown by then, leading to Atwood to write The Handmaid’s Tale. Of course, that leads later into the Girl Power movement.

In this book we follow Esk who was accidentally identified as the 8th son of an 8th son. Sourcery, Discworld #5, is the last time Pratchett makes a big deal of ancestry that leads to wizards, I believe. This book also introduces Granny Weatherwax, a witch from the sticks out in the Ram Tops in a city called Bad Ass. If I remember correctly, up until Sourcery, Pratchett was still working through what the final canon of the Discworld would be, so I believe some Granny details (and perhaps this story?) are later retconned. I know there’s a later story once Mustrum has become the leader at Unseen University that is perhaps the next time Granny interacts with wizards. (While this book ends with the current chancellor inviting Granny to part-time teach at UU and to send studends to learn herbology out with Granny in Bad Ass) Also, unless I’m forgetting, Esk is never heard from again – nor do other girls ever matriculate at UU. (But I didn’t read Pratchett’s Middle Grade/YA Discworld books…so maybe she appears there?)

As for the main story – I hadn’t read in over a decade so I forgot that it was almost not at all about Esk being the first female wizard. Instead it’s about Granny raising her and Pratchett introducing us to the fact that most witchcraft is actually psychology. (*this* part is NOT reconned later) Also, a decade before I read any of the books in A Song of Ice and Fire, Pratchett was the first to introduce me to warging (he calls it borrowing) and the perils of losing yourself in the animal you control. Later on, the book transitions to a travel novel where Pratchett gets to introduce us to more of the Discworld. It’s done in a neater fashion than in the previous two books – it’s less a series of pastiches then a story that follows Esk’s journey and allows us to see how a very intelligent girl who has lived her entire life in a small village deals with increasingly larger towns and cities. It’s only the last tiny fraction of the story that involves Unseen University. I think that would be less disappointing if Esk became a recurring character in the Discworld. At least we get Granny out of it and Nanny Ogg is a great foil for her in the later books. Once again, I got a lot more out of the Dungeon Dimensions for having learned about Lovecraft since then.

It’s an OK book. He hadn’t quite hit his stride yet. Granny Weatherwax is pretty awesome, but without anyone else who appears later on in th series, you can probably skip it depending on how you felt about the first two books.

View all my reviews

Review: The Light Fantastic

The Light Fantastic (Discworld, #2; Rincewind #2)The Light Fantastic by Terry Pratchett
My rating: 3 of 5 stars

This is my second time reading this book

This second time around I dropped the rating from 4 stars to 3 stars. The book is definitely an improvement over The Color of Magic. I think, perhaps, Pratchett was starting to consider that Discworld might extend beyond a couple books. That said, from my memory, there’s about 1-2 more books that contain plot points that are effectively somewhat retconned later. A the very least, Equal Rites seems to never be spoken of again – and Discworld seems to revert to male wizards and female witches. And I can’t remember if Sourcery has last consequences or not.

That said, this book retains the random, mostly episodic quality of the first one where the heroes go from place to place and meet fun subversions of fantasy tropes. I used to strongly suggest that people should read the Discworld in order and just power through these first 2-3 books to set the stage for the better books later. Now, I’m kinda ok saying that perhaps the reader could skip this second book. Sure, they’d miss the introduction of Cohen the Barbarian, but it’s not like he’s a HUGE character later – nowhere near as big as Vimes, for instance. And, sure, they’d miss Rincewind taking posession of The Luggage, but I think that’s mostly a non-issue.

It’s a slight bummer not enjoying this as much on re-read. But I think the first few books were just getting by on pointing out the silliness of adhering to high fantasy (mostly Tolkienesque) tropes. Later on (in my memory – hopefully I’m right) the books tend to have more of a plot that allows them to stand on their own even if they continue with the British humor silliness. (Which I love. Those and dad jokes) So we’ll see. It’s on to my re-read of the third book.

View all my reviews

Jonathan Coulton and Paul and Storm at Ram’s Head in Annapolis

On 30 June 2021, I attended my first concert since COVID-19 started. I was masked since the Delta variant is a thing and singing indoors is definitely an activity that increases transmission. Despite that, it was awesome to get to do it again and there was a real sense of joy in the room from both the audience and the performers at once again being able to engage in the ancient human ritual of enjoying music as a crowd. 

Paul and Storm on stage at at Ram's Head in Annapolis
Paul and Storm on stage at at Ram’s Head in Annapolis

This concert, which had already been delayed some 18ish months, was the first time I saw Jonathan Coulton and Paul and Storm live in person. Daniel introduced me to JoCo somewhere around 10-15 years ago when he was mostly making songs satirizing nerd and office culture. Or just pop culture with songs like Tom Cruise Crazy or Ikea. His biggest claim to fame is the ending music to Portal and Portal 2. More recently he released Solid State a concept album that splits the difference between his nerdier lyrics and regular pop/alternative lyrics. This was then followed up by an album of 1970s covers. 

I can’t fully remember if Paul and Storm came to my attention by way of the Jonathan Coulton kickstarter for Solid State or from Randall Munroe of XKCD who did the cover of their last album, Ball Pit. I then binged their songs on Spotify for a while and discovered various videos of their performances on the JoCo Cruise and told myself I’d see them live if I could.

Naturally, for a band with a song called Opening Band, Paul and Storm opened the night.

Looking at the ladies' underwear thrown at the band
Looking at the ladies’ underwear thrown at the band – a joke that stems from the lyrics to Opening Band

They revealed this was their second performance since COVID as a play for sympathy from the audience. It was also a segue into their song Write Like the Wind:

They mentioned the only lyric that was inaccurate (9 years after having debuted the song) was that GRRM’s slow writing style did NOT hold up the Game of Thrones TV show. From there, the set proceeded as a musical comedy show. Between each song was a comedic riff or tangent that showcased how good the band is at playing off the audience. This turned out to be both a good and a bad thing. Ram’s Head On Stage in Annapolis has seating like a comedy club. Everyone’s at a table and it’s an extremely small venue. It led to some great intimate moments with the band and some great riffing, but give a crowd an inch and they’ll take a mile. By the end, maybe because of drinking or maybe just people being people, some folks in the crowd were starting to get a little annoying with their constant attempts to make themselves the center of attention. Both Paul and Storm and JoCo have been doing this for 20 or so years so they can quickly regain control. Also, they don’t have the fragile egos you sometimes see when comedians are getting interrupted. They just redirected the flow like comedy kung fu masters. As per usual, the ended with The Captain’s Wife’s Lament which took about 15-20 minutes to get through. I’d see them live again anytime.

Jonathan Coulton on stage at at Ram's Head in Annapolis
Jonathan Coulton on stage at at Ram’s Head in Annapolis

After a short intermission it was time for Coulton to take the stage. He had, in my opinion, the perfect set for someone that’s been making music as long as he has. He performed songs from all over his catalog and I knew all but maybe 3 of them by heart so it was fun to sing along. He wasn’t as chatty between songs, but there were still some pretty funny segues. For the older songs, this was Coulton as I had experienced him most – with just an acoustic guitar. (For a while now he’s done some recording and touring with a full band). For the newer songs it was a nice little change; pared down. He did a fun medley with Paul and Storm near the end that was reminiscent of this song from The Axis of Awesome:

Essentially a bunch of songs that either had a similar melody or similar enough for him to seamlessly transition. 

A real rocker moment during the Creepy Doll song

When the concert first started, Paul and Storm asked the audience to raise their hands if they’d never heard of the band. Somewhere between 15 and 25% of the audience raised their hands. I heard them laughing as they heard the various punchlines in the songs so I’d say if they’re in town it’s ok to bring friends and family who’ve never heard them before. While they can be as silly as Weird Al (or in JoCo’s case darkly humorous), the songs aren’t parodies of pop songs so you don’t need to know the original song to get all the enjoyment out of it. 

All in all, a great outing (now that we can have outings) and I’ll definitely keep an eye out for them when they swing by again. Now, all of this happened (and I wrote all of this blog post) way before the COVID-19 Delta Variant was raging through America and making us rethink whether things were going to re-open. However, I thought this monologue that Jonathan Coulton gave about how COVID-19 has made him appreciate his pre-COVID life and not get so annoyed at the little things involved in being a traveling musician was great and I wanted to use it to close out the blog post.

Appreciating life as a musician

Updated Supermario to Fedora 34

Upgrade the main computer to Fedora 34. The upgrade was uneventful, but left me with a few little annoyances. It’s running Wayland, so there’s no longer a primary monitor. Also, something is slamming my processors and some programs are taking a long time to load. I was hoping things would be in better shape by this point in the life-cycle, but every once in a while there’s a buggier Fedora.

Programming Update for June 2021

June was mostly Python, although I did do chapter 1 of Scratch 3 Games for Kids with Sam. He really, really enjoyed it and I anticipate doing the challenge problems and maybe chapter 2 in July or August.

Books

I read the intro and first couple chapters of both Flask Web Development, 2nd Edition and Data Visualization with Python and Javascript, both from a recent Humble Bundle. The Flask book may be useful for learning more about creating a non-Django site and, even if I mostly stick with FastAPI, it should provide some concepts that are applicable across both frameworks. With the data visualization book, I would love to use that to better visualize my annual Last.fm stats.

Advent of Code

While at my in-laws’ house, I completed days 13 and 14 of 2015’s Advent of Code. Back when I first started working on Advent of Code 2015, I went through all the problems and posted my first stab at a solution into a Google document. For day 13 I’d predicted that a modified version of the Traveling Salesman problem I’d done in 2015 Day 9 might work, using an asymmetrical matrix. That turned out to be exactly the right solution. In Ruby I learned how to do a Ternary expression. In the function “create_guest_hash” see the number = expression.

require "../../input_parsing/parse_input"

def create_guest_hash(lines)
    guest_hash = Hash.new
    lines.each do | line |
        people_and_values = line.scan(/(\w+) would (gain|lose) (\d+) happiness units by sitting next to (\w+)\./)
        if !guest_hash.has_key?(people_and_values[0][0])
            guest_hash[people_and_values[0][0]] = {}
        end
        number = people_and_values[0][1] == "lose" ? "-#{people_and_values[0][2]}" : "#{people_and_values[0][2]}"
        guest_hash[people_and_values[0][0]][people_and_values[0][3]] = number
    end
    guest_hash
end


def create_matrix(guest_hash)
    index_hash = Hash.new
    guest_hash.keys.each_with_index do | key, index |
        index_hash[index] = key
    end
    matrix = []
    index_hash.keys.each_with_index do |index|
        temp_internal_list = []
        current_person = index_hash[index]
        index_hash.keys.each_with_index do |internal_index|
            if internal_index == index
                temp_internal_list.append(0)
            else
                temp_internal_list.append(guest_hash[current_person][index_hash[internal_index]].to_i)
            end
        end
        matrix.append(temp_internal_list)
    end
    matrix
end


def perfect_seating(happiness_graph, starting_person, number_of_people)
    vertex = []
    (0...number_of_people).each do |number|
        if number != starting_person
            vertex.append(number)
        end
    end
    max_happiness = 0
    permutation_list = vertex.permutation.to_a
    permutation_list.each do |permutation|
        current_happiness_weight = 0
        
        outer_array_index = starting_person
        permutation.each do |inner_array_index|
            current_happiness_weight += happiness_graph[outer_array_index][inner_array_index]
            current_happiness_weight += happiness_graph[inner_array_index][outer_array_index]
            outer_array_index = inner_array_index
        end
        current_happiness_weight += happiness_graph[outer_array_index][starting_person]
        current_happiness_weight += happiness_graph[starting_person][outer_array_index]
        
        max_happiness = [max_happiness, current_happiness_weight].max
    end
    max_happiness
end


if $PROGRAM_NAME == __FILE__
    guest_preferences = input_per_line('../input.txt')
    guest_preference_hash = create_guest_hash(guest_preferences)
    guest_preference_matrix = create_matrix(guest_preference_hash)
    starting_person = 0
    total_happiness = perfect_seating(guest_preference_matrix, starting_person, guest_preference_matrix.length)
    puts "With the perfect seating arrangement total happiness is #{total_happiness}."
end

Day 14 turned out to be a very easy solution that was able to use what I’d come up with ahead of time without modification; for part 1, anyway. Part 2 became a bit of a mess that seemed to require create a Reindeer class in order to keep track of which Reindeer to award points to. Since I hadn’t done anything with Ruby classes yet (wasn’t really covered in the Ruby book I read with the kids), I haven’t yet done the Ruby or Perl solutions. You can see my Python solution here.

Prophecy Practicum

I made a bunch of quality of life improvements for my friend, aka The Client. I was pretty happy at my ability to continue to figure out how to make use of Django’s many built-in features.

Extra Life Donation Tracker (eldonationtracker)

I had to do a bug fix for a change in the way the API handled anonymous donations. Overall it wasn’t too hard. Sometime soon I intend to start separating out the Donor Drive API into its own project apart from the Extra Life code.

Impractical Python

After a long hiatus, I returned to Impractical Python and finished the Haiku chapter. It used Markov Chains and the CMU language module to help teach the computer what a valid Haiku was. Here is one of the Haikus it generated:

listen: new year's bell!
bell! standing still at dusk house
listen in far in

This next one is kind of nonsense, but I like it. Seems faux-zen:

oh no! a white swan
butterfly butterflies the
only fluttering

This one is closer to a real Haiku:

let myself pretend
my old sadness winter rain
rain deepens lichened

I’ll leave you with this last one which actually sounds like a human-written Haiku:

closer, quilt and leaves,
enfold my passionate cold!
cold! dry cheerful bright

MxPx – MxPx: You’re Never Too Old to Rock

MxPx Front Cover

Last October I came back to MxPx, as I detailed in this post about how the lyrics for Friday Tonight led me to finally watch Friday. Over the past half year I would return to their self-titled album on Spotify. (I don’t subscribe to Spofity, but I do use the free tier to discover new artists) Eventually I decided to go ahead and buy the Deluxe version of the album directly from MxPx. It doesn’t appear they’re selling the CD anywhere else (at least it’s not on Amazon). 

For the most part, I found the music on the album to sound pretty similar to Teenage Politics, Life in General, and the harder punk songs on Slowly Going the Way of the Buffalo, The Ever Passing Moment, and Before Everything & After (although I hadn’t heard this album last yet at the time). Interestingly, back in 2013, I wrote about relistening to my older MxPx albums. While I did focus on age allowing for appreciation of a slower, less aggressive sound – I think the genesis of that blog post was the (potential) silliness of going back to kiddie lyrics as an adult. Now, much closer to 40 than I was then, I think it probably is even more of a truth. But, I think I was perhaps too harsh on the idea of hard rock itself. It’s just that, up to that moment, a lot of that style of rock hadn’t grown up yet. Most of the bands were hardly older than me and they were also writing towards what they hoped was a more lucrative audience. 

But now we’re all older and I believe the members of MxPx are about 5-7 or so years older than I am. So this album contains lyrics tackling more mature topics. Oh sure, there’s still Rolling Strong which can truly be best appreciated by other musicians. But songs like Let’s Ride, Life Goals, Pipe Dreams, and Moments Like This (especially Moments like This) definitely come from an older songwriter and resonate a lot with me as an older guy and a parent. And YET this is a hard rocking album. This is an album I love to put on while driving and just jamming on the highway. If the wife and I were driving around as much as we used to do before the pandemic, I’d love to get her addicted to some of these songs to jam out with me like we used to do with Anberlin. 

MxPx Back Cover

Let’s look at each track individually:

  1. Rolling Strong – Just like Play It Loud on Before Everything & After, a song about being  a band; this time about touring with hints of “don’t discount us because we’re getting old.”
  2. All of It – Basically, a punk rock love song. The title comes from the chorus, “how much of your love do you think I need? All of it”. Most of the lyrics involve the singer talking about how he’s going to make the relationship a great one.
  3. Friday Tonight – As I mentioned above, the song that got me interested in MxPx again. Definitely a rousing song to play at concerts, especially if they happen to be taking place on a Friday. The opening music is way calmer than the rest and a cause for a somewhat jarring move into the proper song. The lyrics are kind of nonsense, especially compared to the rest of the album. I mean, each verse has a coherent thought, but the song as a whole doesn’t really come together in any real way. Or rather, it’s basically poetic in the same way that sometimes some of the earlier Fall Out Boy songs are poetic; again each verse stringing together logically even if the whole doesn’t cohere as easily as a typical song.
  4. Let’s Ride – a biographical song (or at least that’s the conceit) in which the singer tells his friend and/or partner that they should just experience the joy of driving and leaving things behind. It doesn’t seem to be a “screw the world we’re leaving it all behind” vibe. More like: let’s escape for a while and renew our batteries. 
  5. Uptown Streets – Hard to properly quantify, but I guess it’s a “don’t forget your city areas’ type of song. But I do love the cheekiness of this early verse: “I was truly scared, for the first nine years I ran/ It was a mighty fine day in the USA I bet/ Wrote it on the back of my hand so I wouldn’t forget”
  6. 20/20 Hindsight – The lyrics are a bit vague, but it seems to be a singer lamenting what they will do once they can no longer be in a band. But can be generalized to anyone who’s losing the ability to do what they love.
  7. The Way We Do – Essentially a song about MxPx being happy they have the life they have. They reminisce about some past tour pranks and express an overall gratitude that they get to do what they love for a living.
  8. Life Goals – A somewhat sarcastic song about how life doesn’t always care about the goals you have. Pretty catchy chorus.
  9. Pipe Dreams – Great symmetry with Life Goals it tells you to “hold onto those pipe dreams”. My favorite line in the song, “hold onto those pipe dreams/If I’m wrong/the worst is already happening”. The music has a happy tone and the lyrics just balance so well against the symmetry of the previous song. 
  10. Disaster – It sounds like it’s going to be a negative song or a sad song of unrequited love, but as best as I can tell, it’s essentially the song’s protagonist saying that the effect the object of his love/desire has on him is to leave him stunned. Basically seems like a hyperbolic statement to say disaster, but the rest of the lyrics seem to suggest things are fine, the protagonist is just SO in love. Also, I love what Herrerra does with the vocals on the lyrics: “I have the best time with you…everlasting”. I know it’s a technique I’ve heard on other punk songs (maybe other MxPx songs? I can’t remember) but I’d love the podcast “Why Do I Love This?” to analyze what it’s doing and why it tickles me so much.
  11. Moments Like This – This song is the PERFECT ending to this album. It works so well that I’m *almost* disappointed that it goes on for four more songs in the Deluxe version I bought. I like ¾ of the added songs, but I just think this is the perfect closer for an album that is about punk rockers all grown up. They’ve been a band since high school and are now in their 40s and this song just works so well as the end of this album.It’s about savoring life as it happens. Every time I hear the song I want to make sure I spend more time with the family.
  12. Best Life (Starting from here these are tracks exclusive to the Deluxe edition) – This one almost sounds more like a Aerosmith song or some other non-MxPx band. Also sounds like it could be in a commercial. It’s OK as a drinking song, but it’s my least favorite on this entire album.
  13. The Band Plays As We All Go Down – referencing a (legend? truth?) about the Titanic, the song seems to oscillate between hope and despair. But a good return to an MxPx sound after the previous track.
  14. Forget it All – A song about being frustrated and wanting to get it out of your system. A nice, fast beat – could be great for a concert.
  15. That’s Life – Another track about getting older. Partially about the world changing around you and partially about dreams unachieved. It’s actually not a bad album-ending song, but it’s slightly sadder than Moments Like This. I like Moments Like This a bit better for the last track because it’s slightly more positive. (The next five songs are actually on a second CD if you buy the CD from their merch shop, so I consider them to be a separate acoustic EP)
  16. Let’s Ride (Acoustic) – this one works well as an acoustic song
  17. All of It (Acoustic) – this one’s OK acoustically, but I like the original better
  18. Uptown Streets (Acoustic) – This one ALMOST works better in the acoustic version than in the original version
  19. Rolling Strong (Acoustic) – I really don’t like this one as an acoustic song at all
  20. Moments Like This (Acoustic) – this one works equally well in each version