Review: The Gryphon’s Skull

The Gryphon's Skull (Hellenic Traders, #2)The Gryphon’s Skull by H.N. Turteltaub
My rating: 4 of 5 stars

As per usual, I had a lot of fun with this historical fiction taking place in Ancient Greece. Just like the first book, the story revolves around cousins Menedemos and Sostratos and their journeys around the Aegean during the trading season. Looks like Mr. Turteltaub wanted us to have a different experience than last time – and that makes perfect sense in terms of keeping readers from getting bored. And so while the first book had lots of chapters revolving around various symposia, this time there was none of that. Instead, in addition to the usual bits of haggling, we get to meet Ptolemy who happens to be in one of the cities they stop in for trade. So this book gets to veer a bit into the Ancient Greek version of a military novel as the cousins end up doing a few missions for Ptolemy.

I’m excited that the next book has the cousins going to Phoenicia and Israel. This should keep things from getting stale as well as allowing Turteltaub to explore Phoenician and Israeli culture during the Ancient Greek era.

If you enjoyed the first book, this one’s mostly more of the same. So if you didn’t like the first one or found the dickering boring – you won’t like this one. Note: if you have some precocious history buff minors in your life who enjoy reading fiction – there are a few explicit sex scenes. They aren’t written as an erotica or romance novel, but they are explicit – so be aware of their maturity level/what their parents would think (if you happen to be the cool uncle/aunt/cousin/etc who gets books for the kid).

I’m definitely excited for the next one – it’s going on the TBR list!

View all my reviews

Review: Palpitations: The Highway To Never After

Palpitations: The Highway To Never AfterPalpitations: The Highway To Never After by S.K. Munt
My rating: 3 of 5 stars

This book gets a few extra points from me for taking place in Australia. All too often we get zombie/vamp tales taking place in the USA, England, or Europe (in that order). In fact, the only other apocalyptic Australian book I can remember reading is Jam.

Anyone who’s read my reviews for a while now knows the following:
– I have lots of books I didn’t specifically buy – they came from Humble Bundles, Story Bundles, or free books from Barnes and Noble or Amazon
– I create my Digital To-Read bookshelf every 1-2 years, setting my reading order

So by the time I got to this book, I had no idea what it was about or where it came from. But I get a bit of a thrill by not reading the equivalent of the back of the book before reading it. It’s like going in to a movie without having seen the trailer. Anyway, most authors write the first few chapters of any book as if you haven’t read the back, so I have more fun that way. From looking at the cover I had no idea what I was in for.

Turns out this is a romance at the end of the world. I’ve been telling my wife about the book as I read it and she was asking me yesterday if I thought it was more romance or more zombie/vamp (more about that in a second). She’s the one who’s into horror, so after talking it out for a while, we came to the conclusion that just like there are comedy horrors (like Shawn of the Dead or that zombie movie with Bill Murray), this one is a romance horror. So it’s got all the usual* romance tropes: will they/won’t they, lots of physical descriptions, eventual graphic sex. (* I say the usual, but I think I’ve read about 3 romance books…so what do I know?) It’s also got all the usual zombie/vamp tropes – namely the enemy always seems to be right around the corner. How well does this combo work? Well, I kept debating with myself just how horny I could be at the end of the world. On the one hand….might as well before you die? On the other hand, can’t focus? And a couple times our main characters get a hold of the idiot ball and decide to make out or more while surrounded by the undead.

OK, let’s get to the undead. Ms. Munt got a couple more points from me here from being creative. I guess SLIGHT spoiler for something that happens in the first two chapters – her monsters in this book act like the usual shambling zombies when they’re first turned or after some time has passed. But if they’ve recently fed, they’re something more akin to a combination of fast zombies/vampires.

Also, in a year in which I keep reading books that seem to be tailor made for 2020/2021 even if they were written a while ago – the zombie virus comes from a purposely tainted HPV vaccine. For future readers, there’s a lot of vaccine hesitancy right now around the COVID-19 vaccines. (With a couple brands causing extremely rare, but devastating if you’re one of the unlucky, blood clots) So, yeah!

We’re in our main character’s head during this story and it’s a mess in there. Her thought processes constantly threatened to derail the story for me and almost knocked things back to 2 stars. I want to say that I’ve had a pretty lucky/blessed life. I haven’t had to deal with abuse of any kind (verbal, physical, emotional, sexual). While acknowledging that men can be victims, it’s not something that goes through my mind like it (may) for women. So keep that in mind when I say that it was distracting to eventually learn that our main character has basically suffered from ALL those categories of abuse. I’m sure there are folks like that. Maybe it rings true for Ms. Munt or someone she knows. But as a reader – it was a lot. And it contributed to an exceptionally fraught will they/won’t they when combined with my least favorite trope – https://tvtropes.org/pmwiki/pmwiki.ph… – very often seen in comics when characters punch first and ask questions later. There were also more twists and turns to the stories our main characters told each other than if it were a 1940s noir story.

Would I recommend it? That’s a tough one.
What’s it got going for it?
– Unique location: Australia
– Unique Monsters: zombie/vamps
– Sexy-time scenes – if that’s what you’re into

Against:
– hard to pin down characters’ motivations because they’re all over the place
– probably every single trigger warning needed for this book.

At the end I found out there’s a sequel. I’m done with these characters, so I’m not going on. But I didn’t hate reading this story. It was often quite entertaining. When the main character isn’t oscillating between her two choices of what to do, her inner monologue is sassy and fun to read. The two main characters trade some fun barbs. I think if you’d like to try out some zombie apocalypse romance, give it a shot.

View all my reviews

Review: The Boys, Volume 1: The Name of the Game

The Boys, Volume 1: The Name of the GameThe Boys, Volume 1: The Name of the Game by Garth Ennis
My rating: 2 of 5 stars

This is a pretty rough book. I mean, I think it probably wins for most trigger warnings for a commercially released comic. Since Watchmen we’ve had a few different takes on super heroes being less noble than the DC and Marvel heroes we all know. Irredeemable, Vol. 1 has most of the heroes remain good, but their pettiness causes issues. Jupiter’s Legacy, Vol. 1 explores super heroes as a metaphor for pop stars who have a complete lack of accountability. What The Boys does differently (at least in Volume 1) is to provide a a check against the heroes by the group funded by the CIA.

To start off, the book provides us with many examples of what happens to those who are so powerful there is no check on their behavior. However, I found it interesting that Ennis decides to also show power dynamics within the super heroes. At first it seems they’re simply going to pick on the country bumpkin, but the main guy (the Superman analogue) also has a scene in which he shows his dominance over other super heroes.

Although I’ve mostly avoided spoilers to both the comics and the TV show, one thing I knew coming into to this book was that were was also a focus by Ennis on the impact of capitalism and super heroes. I think Marvel has done some slight exploration with this via Tony Stark (moreso in the movies, I think), but this book really pushes it to its most logical conclusion. In one meeting, the members of the equivalent of The Justice League fight over the percentage of money they get for action figures of their likenesses. There are also bands of lawyers that visit Wee Hughie early on to make sure that he’s not going to sue for the death of his girlfriend at super hero hands.

There’s a high level of misogyny running through the book and while it functions well as a metaphor for work sexual harassment and a commentary that even the most powerful have to live it it, it did drag on me a bit.

In fact while I’m generally a sucker for deconstructions and reconstructions of big cultural tropes (like super hero tropes), this book really had me wondering if maybe we’re not better off with the mostly selfless heroes of the DC and Marvel books. The pettiness and meanness of some of the characters in The Boys can be a lot. Of course, one of the huge ironies in those feelings is that many a gallon of ink (real or virtual) has been spilled about how super heroes are our modern mythology. But the gods of Greek and Roman mythology were just as petty and mean as real humans. So maybe it’s The Boys that’s a real return to mythology, not The Avengers.

Stray thought – I wonder if the meeting between Wee Hughie and the put-upon female hero will blossom into anything or if it was merely to allow them to echo their feelings to each other from opposite sides.

If I didn’t already own all these trades (from a Humble Bundle) I don’t think I’d keep going. It seems like it’s going to be too dark for too long. I guess we’ll see where things go from here.

View all my reviews

Review: Wayward Stars

Wayward Stars (Starswept, #2)Wayward Stars by Mary Fan
My rating: 4 of 5 stars

This book picks up right where the previous one left off – Iris Lei and the rest of the abolition are trying to plan out their next steps. From there, the plot goes off into a few twists, but in a fairly expected progression. The end is satisfying on its own, but it seems like Ms. Fan might have been setting up at least a trilogy if not an on-going series.

This book was supposed to be a nice, light book after having finished The Parable of the Talents and The Parable of the Sower by Octavia Butler. Both take place in a dystopian America that’s just a little too close to home. Vs, say, Panem, where it’s so far in the future it wasn’t painful to read. Sure, Iris Lei is former slave who is now part of an abolitionist movement, but the book was so much lighter than Ms. Butler’s books. I can’t remember if Starswept is meant to be YA, but it sure seems that way. (At least in terms of violent/sexual content being 99.9% absent). So I figured I’m in for a light dystopian romp. NOPE-TY NOPE NOPE!

Ms. Fan brought out the real emotions (and near-tears) as Iris went through her plan and met with various resistances. The previous book mostly just spoke about mind control and mind wipes. But this book has it in spades. One character’s encounters with it seemed like a metaphor for Alzheimer’s. Another character has everything taken in a way that is just heart-breaking and seemed more of a violation and torture than any scene I’ve seen or read of physical or sexual violence. It was crazy. (And probably would have been even crazier in a non-YA world…. if you can erase memories why not an underground Ka’rasil Red Light District)

Look, this is a YA sequel in which most of the main characters are older teens/young adults who are in the arts and who carry torches for their crushes like they’re on a CW show. This may or may not be your cup of tea. But if you got invested in the main characters in book 1, then I can’t believe you’ll escape this book without having “the feels” really hard for the characters. They go through some stuff. I’m a fan of Ms. Fan’s work (no pun intended), and I think this series continues to do a good job of melding her passions (Music – she has a degree; and the performing arts – her Twitter account is her learning circue-de-solieil-style ropes stuff). I look forward to seeing if this story continues.

View all my reviews

Review: Eric

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

This is my second time reading the book. Dropped rating from 4 stars to 3 stars

A seemingly novella-length tale featuring the return of Rincewind, unseen since the events of Sourcery. The story is a parody of Faust (my paperback version even has Faust crossed out and replaced with Eric in the header for each page). As such, it’s a return to the earliest Discworld books – a series of pastiches as each of Eric’s wishes goes all malicious genie on him. The B story is a slightly more conventional story involving hell as a parody of office culture. The head demon has made hell incredibly boring with memos and team building and all the things that the movie Office Space made fun of.

It’s fun and it’s a fast read. You almost don’t need to know anything about the Discworld and it’s almost standalone. The only thing you wouldn’t understand is The Luggage that Rincewind inherits from Two-Flower in the first two books.

View all my reviews

Review: Guards! Guards!

Guards! Guards! (Discworld, #8; City Watch #1)Guards! Guards! by Terry Pratchett
My rating: 4 of 5 stars

This is my second time reading this book

We finally are introduced to The Patrician as he will be portrayed for the rest of the Discworld books. He’s no longer the overweight Patrician we saw in the first two books. He’s infinitely more cunning and frightful, especially because he’s not overly mean or violent. We’re also introduced to my favorite character in Ank-Morpork: Carrot, a human raised by dwarves. His innocence and literal-mindedness remains a wonderful trait throughout the series as Pratchett uses the City Watch as both police procedurals and to explore ideas of diversity in a fantasy world. Colon and Nobby are a fun straight man, fun guy pair – reminds me somewhat of Wax and Wayne (from Brandon Sanderson’s Mistborn Era 2) although the class difference isn’t quite as pronounced. I will grow to like Vimes eventually, but not the Vimes from this book. Lady Ramkin is also a great parody of how the confidence of privilege can really skew how you view the world. Of course, it also leans hard on the comedy trope that’s in a lot of British novels – if you act like you *should* be in charge, people will comply.

The plot – as seems to be the case in all the books I’m reading in 2021 – is viewed a little differently in light of the rise in nationalism/fascism around the democratic world. Back when I first read it, it was just a funny detective novel set in a fantasy city. Pratchett’s depiction of the willingness of the mob to oscillate between pro and anti-monarchy is just so prescient in light of what we’ve dealt with over the last 4+ years.

That said, it’s mostly a fun romp through Ankh-Morpork, which we’ve already grown to know quite well over the past 7 books. A power-hungry guy with some power convinces some lower class folks that they’ll all be better off if they help him install a new king. He talks them into it, all the while planning to turn on them and keep the power for himself since he’ll be putting a distant relative on the thrown. How will they get Ankh-Morpork to accept a king? Well, not to dissimilarly from Ozymandias’ plan in Watchmen, they’ll create a crisis that they’ll solve so the folks will turn to them. This being a fantasy comedy world, they’ll summon a dragon to kill. Since they summon it, they have the ability to make sure their man will be able to kill it.

People/Concepts that are continuations from earlier Discworld books:

The librarian from the Unseen University who’s turned into an Orangutang when Rincewind mess with the Octavo in the first book
The idea of Knurd being the opposite of being Drunk – introduced in Sourcery
The Mended Drum – used to be Broken Drum until the owner was introduced to the idea of insurance
The various vices having guilds in Ankh-Morpork. Crime is controlled by limiting it to licenses granted to the various guilds.


As I was telling a coworker this week: this book is often recommended as a first Discworld book and it’s not a bad one. Sure, you won’t know why the Librarian is an orangutang. And you won’t already be familiar with Death. But we’ve already reached the point (if we didn’t before with The Witches) where Pratchett won’t be reconning anything else. And, as I’ve been mentioning during my re-read, those first few books are more pastiches than they are a coherent story. This one is a nice, coherent story that stands on its own and can be a great survey of Discworld without needing too much prior knowledge. I’ve said this for the past 3 reviews, but I expect that in another book or so I won’t be able to say it as much because Pratchett really starts building upon previous books. (Although, if forced, I would say that the other books are probably fine on their own, you’d just be missing about 99% of the Easter Egg jokes).

View all my reviews

Review: InvestiGators: Off the Hook

InvestiGators: Off the Hook (InvestiGators, #3)InvestiGators: Off the Hook by John Patrick Green
My rating: 4 of 5 stars

Another fun entry in the Investigators to read with the kids. The cast of characters continues to grow and reward re-reads of previous books with lots of references to previous events. It’s evident now that Green has written each book to lead into the next. I wonder if he has an endgame in mind or is just taking it one book at a time. Once COVID is over, if he comes back to Baltimore Comic-Con I’ll be sure to talk to him about it.

By now you should know if you like the dad jokes and verbal and visual puns that make up the Investigators series. I just realized that this is just a kid version of the types of jokes in The Complete Multiple Warheads (BTW – that is a VERY MUCH NOT FOR KIDS series). That’s probably why I enjoy Investigators so much. I like when creators take advantage of the medium to make jokes that only make sense in that medium (another example would be the joke credits in the Deadpool movie). This book is more of the usual jokes while moving along the relationship between Brash and Mango. So, if you like that, grab this book now!

View all my reviews

Review: Princess Academy

Princess Academy (Princess Academy, #1)Princess Academy by Shannon Hale
My rating: 4 of 5 stars

My preschool kids have been enjoying Shannon and Dean Hale’s The Princess in Black series (I reviewed a few entries last year). So when I found out that Shannon Hale also does middle grade and young adult books, I recommended them to my oldest, the nine year old. After she read the trilogy, she asked if I could read it with her at night so she could share the books with me. So we began a semi-nightly ritual of reading a chapter a night.

I think Ms. Hale has done an excellent job with the book. Even thought it’s meant for a younger reader, she played with the expected tropes enough to keep me guessing about what the ending would be. In fact, there were about 3 points in the story where it zigged when I was sure it would zag.

If you have any young readers who enjoy stories of falling in love and dealing with the confusion those feelings can bring, I think this is a good book. It seems to be relatively realistic in how it deals with that. It also has boarding school elements – getting along with folks when you’ve been thrown together out of your control. And, since I’m recommending for younger readers: no profanity, characters hold hands – but nothing more sexually explicit, there’s some violence – but nothing gruesome.

Between these two series, it makes me curious to check if Ms. Hale has written any books for adults, because she does a great job plotting out these books when so many authors seem to phone it in when they’re writing for a younger audience.

View all my reviews

Review: Parable of the Talents

Parable of the Talents (Earthseed, #2)Parable of the Talents by Octavia E. Butler
My rating: 4 of 5 stars

Welcome back to the crapsack/grimdark world of America in the 2020s as created by Octavia Butler in the 1990s. It is sometimes eerily prophetic. More about that later.

The addition of Lauren’s daughter’s (Larkin) annotations to her mother’s journals provides a very interesting context to the stories. Similar to the chapter openings made up of Encyclopedia entries in Asimov’s original Foundation book, it helps to prove a premise that has been making the rounds on the internet for some five years now – that spoilers aren’t necessarily bad. When we read Larkin’s annotations, we understand something about the future. We know that Larken suvives to adulthood. We know that she resents her mother and Earthseed. We know that Earthseed as a movement lasts. But we still want to read on to learn the details of how we got there. It’s why people went to see Titanic in the 1990s even though they knew the boat was going to sink.

Larkin’s annotations also keep things fresh and give us some hope. The USA (much of the world?) is still a crapsack world. A dystopia no one but the richest person would want to live in. There’s a lot more hope than the first novel, but it’s still baby hope. And boy is it so hard to read about Jarrett’s presidency after what we went through with the last guy. Shoot, what we might still go through, perhaps with someone more competent. It all makes me wonder if Ms. Butler was just such a great student of psychology that she could see the inevitable direction we were all headed in. Even the depictions of Christian America (the religious sect) seem to have parallels in real world sects that have been in the news here and there recently.

The annotations are also interesting near the end of the book with Len and Larkin accusing Lauren of seduction and manipulation. It makes me wonder if Ms. Butler meant for there to be a slight element of unreliable narrator in the journal entries. Not that Lauren is intentionally being misleading, but that maybe she’s unconsciously lying to herself. There’s definitely enough of that to make for some interesting discussion.

As a side note, it’s odd reading this book with its slave collars after reading The Wheel of Time 2 and the damane sul’man. Something in the air in the 90s?

I read this pair of books because NPR’s Throughline was going to be speaking about Octavia Butler and I wanted to have read some of her books first – both to avoid end-of-book spoilers and to have a better understand of what they were going to say about her work. It was interesting to be reading them around the time of the current Mars lander and having them name the landing spot for Ms. Butler. But it has been VERY tough reading this book and seeing how easily we could tip back into it. Just like some of the episodes of The Dollop, it becomes clear that we could tip into a hole like this one where many folks would be crushed, but just enough folks would be making enough money to keep things moving along. Watching the entire world slowly move towards a gig economy without any safety net seems to be getting us back to a possibility of indentured or semi-indentured states for most workers. It’s already been rigged so that you cannot default on your college loans.

I have to leave this review before I get depressed again – something that has been happening a lot while reading these books. They’re great books, but they’re very heavy. Read them, but understand what you’re getting into.

View all my reviews

Review: Pyramids

Pyramids (Discworld, #7)Pyramids by Terry Pratchett
My rating: 3 of 5 stars

This is my second time reading this book. I have dropped the rating from 5 to 3 stars

This book is all but divorced from all the other Discworld books. There’s at least one other one like this one – Small Gods. In that sense, it makes a sort of nice introduction to Discworld because it can be read on its own and one can understand Pratchett’s Discworld humor. There is some slight continuity – the idea of Ank-Morpok having crime guilds to regulate the amount of crime. Death, of course. But for the most part, it sits fine on its own.

In some ways, the book is very British in that Teppic (our main character) is dealing with an immense and immovable bureaucracy. Even as king, he has his pronouncements reversed from under him by the high priest. It’s also a slight parody of management paradigms in vogue at the time as the scenes where he interacts with the Pyramid builders and embalmers show. Toss in a bit of, “I don’t want this destiny” and there’s your story.

I runs along well and we get Pratchett’s parody of Ancient Greece. I love everyone’s inability to understand Athenian democracy. I believe that becomes a slight running joke throughout the Discworld books.

Based on what I can remember from when I first read through the Discworld, my recommendations to a new reader who wasn’t intending on slogging through the first 5 books just because the other 25 are great, would be:

1. Small Gods
2. Pyramids
3. Guards! Guards! (and then either read The Watch stories [see wikipedia to know which those are] followed by Moist Lipwig books or read sequentially from there on out)
4. Wyrd Sisters (and then read the Witches stories or read sequentially from there out)

View all my reviews

Programming Update for July and August 2021

I didn’t do much coding in July, so I decided to combine the July and August wrap-ups. 

Python

Dreamhost Dynamic DNS

I decided to clean up and update some code that uses the Dreamhost API to allow for Dynamic DNS. I cleaned up the logging output so that I could figure out why it was sometimes deleting one of my domains rather than just updating the IP. The original programmer had it printing out to the terminal. I used the logging package to send logs out to a file. While I was improving the logging, I also decided to use f-strings to make it more obvious what was going into the output string. 

Then I changed some of the logic to hopefully prevent the domains from being deleted just because an update didn’t work. But, just in case (as well as a bonus for when adding new subdomains or domains) I told it at the end to add in any domains in the list. Since making these changes I haven’t had any more issues.

Repo is here.

Extra Life Donation Tracker

I was really busy with this project in July and August with 3 releases (v6.2, v6.2.1, v6.2.2). Some of my changes were fixes to make life easier for users. For example, having the program know if you’ve successfully run it before so that it won’t overwrite your values with the defaults if it can’t reach the API. Other changes involved backend things like moving from urlopen to requests. Lots of the changes came from bug reports from my users. (Always nice to know I have users who care enough to file a bug report)

In September I’m hoping to rip out the API code and move that to its own repo so that it can be used for any DonorDrive projects. We’ll see how that goes.

Project Page.

Repo.

Prophecy Practicum

The Django project I’ve been developing for a friend reached its v4.0 milestone and continues to have quality of life improvements. I’ve learned quite a bit on this project and it’s a great testament to the idea that the best way to learn how to program in a new framework is to use it to solve a problem. 

Repo.

CircuitPython

The most recent Adabox turned out to be the RP2040 Macropad. I’d been wanting to make one of these after the success of my QTPy Streamdeck. The coolest part is that, with its screen it’s even more useful as it can have shortcuts for many programs. I haven’t set it up for that yet, but it’ll come with time. I may eventually get a second one for my Linux computer. I had to modify the code from the Adafruit tutorial a little so that it would work with OBS when it didn’t have focus. But mostly what you’ll want to see in my repo are any macros I add. 

Repo.

Advent of Code

After taking most of July off, I got back the urge to work on Advent of Code 2015. A flurry of coding at the end of August got me up to 36 stars, surpassing my 2020 total. (I finished Days 14-18 in Python and Ruby and all but the last two in Perl) Part of this is due to not being constrained by trying to do each day’s problem. The other part is due to what I learned in the aftermath of 2020 – such as the fact that I usually want to use a dictionary (or hash or map, depending on what the language calls it) rather than a list (or array or vector) for performance and simplicity reasons. See my Day 18 code for a great example of this. 

Before I get to my code, I wanted to share this blog post from the folks over at JetBrains.It discusses using Advent of Code as a way to learn idiomatic Kotlin. (Kotlin is a Java successor language created by JetBrains) It was neat to see someone else advocating AoC for the same purpose I’m using it – as a way to learn a new programming language by using it to solve problems.

Day 15

I originally had some plans to try and find the maximum values and figure out if I was in a local maxima. But someone on the AoC subreddit pointed out that with a modern computer we weren’t looking at too many permutations so it wasn’t too bad to brute-force it. 

from sys import path
from itertools import permutations, combinations_with_replacement
import re
path.insert(0, '../../input_parsing')
import parse_input


def ingredient_score(teaspoon_list, ingredient_list):
    combined_list = zip(teaspoon_list, ingredient_list)
    total_ingredients = []
    for multiplication_tuple in combined_list:
        temp_list = [
            int(item) * multiplication_tuple[0] for item in multiplication_tuple[1]
        ]
        total_ingredients.append(temp_list)
    properties = zip(*total_ingredients)
    final_score = 1
    property_count = 1  # this is to ignore calories for part 1
    for cookie_property in properties:
        if sum(cookie_property) > 0:
            final_score *= sum(cookie_property)
        property_count += 1
        if property_count == 5:
            break
    return final_score


def parse_ingredients(ingredient_inputs):
    pattern = re.compile(r'(-*\d)')
    return [re.findall(pattern, ingredient) for ingredient in ingredient_inputs]

def brute_force_cookie_score(ingredient_list):
    ingredient_combos = [
        element
        for element in permutations(
            range(1, 100), len(ingredient_list)
        )
        if sum(element) == 100
    ]
    score = 0
    for ingredient_combination in ingredient_combos:
        combo_score = ingredient_score(ingredient_combination, ingredient_list)
        if combo_score > score:
            score = combo_score
    return score


if __name__ == "__main__":
    cookie_list = parse_input.input_per_line('../input.txt')
    ingredients = parse_ingredients(cookie_list)
    cookie_score = brute_force_cookie_score(ingredients)
    print(f"The cookie score is {cookie_score}")

It was taking a lot longer in my Ruby code and so I asked on the Ruby subreddit and ended up with a few examples of ways to use Enumerators which are more similar to Python’s generators. Go to the Ruby Day 15 readme to see those examples.

Day 16

I know figuring out this problem this should help me understand how to solve Day 21 of AoC 2020, but I can’t quite make the leap. That said, this was not too hard to figure out. Essentially, I just went through a dictionary of Sues and eliminated each Sue who didn’t match. The important thing was that my input didn’t contain info for each and every attribute. So I had to have guards for not eliminating an Aunt Sue just because she didn’t have an entry for one of the attributes. See how I solved for each language here. Each one had a slight difference in the way I had to handle those None values. 

Day 17

Day 17 turned out to be extremely easy after the day 15 experience taught me how to do permutations where they add up to a specific number. Ruby was slightly more complicated than Python, but once I got rid of empty arrays (I think due to the fact that Ruby doesn’t do list comprehensions), it was pretty easy. 

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

container_sizes = input_per_line("../input.txt")
container_combinations = []
container_sizes = container_sizes.map{|x| x.to_i}
(1..container_sizes.length).each do|x|
  container_combinations.append(container_sizes.combination(x)
                                 .map{|y| y if y.sum == 150}
                                 .compact)
end
container_combinations = container_combinations.compact.reject(&:empty?).flatten(1)
puts container_combinations.length

As of the day I write this, I haven’t been able to write Perl code that’s as efficient as the Python and Ruby solutions. Yesterday after running for hours, it crashed Konsole. We’ll see if I have a proper answer before I post this.

Day 18

This is where it REALLY paid off that I had learned the lesson of using dictionaries/hashes rather than lists in most places. AoC 2020 had at least 2 days with Conways’ Game of Life. On day 11 there was a modified 2D version. On day 17 there was a 3D version. My code for day 11 was a mess and I couldn’t figure out how to do day 17. For this 2015 Day 18 problem: by using dictionaries, I didn’t have to worry about guard clauses. For Python I just used .get and in Ruby it would just return “nil” if it wasn’t there. So I was able to have a much simplified code and I didn’t need to fear Conway as much as I thought I did. See my code here.

Because I’m an info geek, I’ll mention that at the time I write this (mid-day Aug 31 so there may be slight changes if I do more coding this evening, it may change a little), the code in my Advent of Code repo is:

  • 69.7% Python
  • 18.0% Ruby
  • 12.2% Perl
  • 0.1% Shell Code

My Advent of Code repo.

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