Diversity Panels at Conventions in the 2020s

Earlier this morning I came across this tweet by Mary Fan, an author I met at the Farpoint convention and whose books I quite enjoy:

I gave a short reply, but I felt Twitter was inadequate to truly express myself. Of course, Diversity Panels have been around long enough that by 1997’s Chasing Amy (source of the header image), they were already making jokes about how some folks were always relegated to the Diversity Panel (click to play):

Chasing Amy in which the characters discuss Alyssa’s constant appearance on Diversity Panels

I also attended the diversity panel at Worldcon last year where the big topic was on the diversity of protagonists. Mary Fan’s tweet made me think about the utility vs the negative (if there is a negative) of having diversity panels as well as a bit of a meditation on the fact that they’re still extant. Let’s take these one by one.

So, what’s the utility of the diversity panel? The biggest utility I see is when other writers from various marginalized groups are in attendance. It’s been shown that seeing others that share your identity (whatever that means to you) doing whatever it is you would like to do shows you that it’s possible. Until recently if you’re an Asian actor you might think your only Hollywood roles are kung fu master or exotic babe. Then we get Crazy Rich Asians and it paves the way for Always Be My Maybe and suddenly both Hollywood and would-be actors learn they can have “regular”-person roles instead of being stuck stereotyped. The same goes with authors. Back in the day, many women had to write SFF under pseudonyms, the most famous example being Alice Bradley Sheldon, who wrote as James Tiptree Jr. But as more women have been recognized via awards like the Hugos, more women have joined the fray, seeing they can make it and get awarded. To the point where there was a very sad, very lame backlash.

What are the potential negatives? I’m reminded of my undergrad years at Cornell, 2001-2005. At that time (not sure if it still exists) there was some affinity housing. There was an African-American dorm named Ujamaa and there was a Latinx one, but I can’t remember the name. At any rate, the affinity housing existed as a potential place (especially for Freshmen) to get acclimated to a college that was majority white. (And also at least seemed majority from the North East USA) To those who loved it, this was a literal safe space (not the metaphorical one that has been fought about for the past decade or so) to recover from culture shock and microaggressions (even though we didn’t have that word yet when I was an undergrad). To those who were against it (oftentimes, but not always, members of the Young Convervatives club), it was a harmful segregation, even if it was self-imposed. Like many things, I think the reality lies somewhere in the middle. I think it could definitely be a bad thing for anyone who retreated so much that they did not gain experience with others outside their affinity group. So, bringing it back to diversity panels at cons – there’s a chance that these become ghettos of a sort. Yeah, the same old folks can be on the main stage. But it’s OK because we have [name your identity: women, latinx, African-Americans, wheelchair riders, etc] in the diversity panel. It dovetails with what RF Kuang said when Tor.com made her guest editor – when are we going to move away from Asian SFF and just call it SFF? And the author just happens to be Asian. Sometimes these things can be self-perpetuating.

And finally, there’s the sad fact that this conversation is still taking place in 2022. I mean, it’s somewhat unsurprising. The Japanese Internment (I know others have other words besides ‘internment’ to use here) was just 80ish years ago. But it wasn’t until 1988 that the US Government apologized, and that’s only 34 years ago. And around the world things seem to be slipping backwards in terms of progress. After this week’s Supreme Court leak, even anti-miscegenation laws seem to be back on the table with a potential overturning of Loving v Virginia coming.

So just maybe we need to keep the panels going for now. To provide hope for other writers who feel marginalized. To show others that success can be had no matter what. And to push, even in this small way, against the back-sliding of the equality we’ve spent so long building up.

Dealing with the Illusion of Change

This week Our Opinions Are Correct aired an episode about the Illusion of Change. They do an excellent job explaining what it is – when long-running fiction (comics, Soap Operas, etc) has to eventually return to the status quo. They cover infamous examples like that time that Satan dissolved the marriage of Peter Parker and Mary Jane. Finally, the hosts cover the biggest reason the corporations that own Marvel and DC always resort to the status quo: so that folks jumping onto the series don’t have to deal with 50-100 years of backstory in order to understand what’s going on with the characters now.

In the past I’ve covered many possible ways around this issue, starting with the fact that we have the Internet now. Fan could always quickly catch up with any important storylines. But the solution that stood out the most to me while listening to the episode is actually pretty simple. I think what the big 2 companies could do is have 2 lines of books. For example, for Batman they could have one series that is just a series of Batman cases. He could always be in his 30s and any reader could jump in. The other Batman series could allow Batman to continue to age and tell stories about him growing older. It’s not as though there isn’t a market for this – people loved The Dark Knight Returns and the cartoon Batman Beyond. As I said before, there are stories to be told about getting older and the evolution of how you see yourself in the world. We’re robbing ourselves of these stories by not letting our superheroes age. And this doesn’t even take into account the lack of stakes when we know the big events and deaths don’t stick – the biggest reason I’ve moved on to creator-owned comics, which usually have an ending in mind.

Programming Update: March/April

In March I went back to Advent of Code 2016. In an effort not to get stuck, I decided to go as far as I can in Python before going back around and working on the other languages. So I did days 6 and 7 in Python. Overall, relatively easy Regex problems.

And that’s it. It was not a big month for programming. I mostly focused on playing with the kids and cooking. May/June are looking like they’re going to contain quite a bit more programming, at least relatively speaking. I’m hoping to both get back to work on some of my projects and also get back to Advent of Code.

2022 Credit Union Cherry Blossom Race

Last fall I finally got to race the official Credit Union Cherry Blossom 10 mile course. This year, I FINALLY was able to run the race on the course in the spring. It was nice for the race to return to its place as the “Rite of Spring”. Although the cherry blossoms reached peak bloom a week before the race, they still made a nice, pretty setting for the race.

It was also the first time I had someone I knew watching me at the race. My mother, who had wanted to see the cherry blossoms in DC for nearly a decade, came this year in order to also watch me race. She was right at the beginning of the race as I took off. Thanks to the fact that the course has tons of loops, she was also able to be at a few other locations and also be near the end when I finished as well. This was great for mom’s enjoyment and also getting some great photos (which will be sprinkled throughout this post) as well as seeing the beginning and end of the race. The only bad thing (and that’s stretching the word “bad” a bit) was that she was in very crowded areas so I didn’t see her or even hear her calling for me. So this photo is an amazing coincidence that I’m looking right at her.

a photo of me running (also other runners and spectators)
I didn’t hear my mom calling me, but ended up looking right at her! (Taken by Carmen Mesa)
gym bag full of racing gear with the event's big on top


I love getting my bag ready the night before. it really brings a certain finality to things. The race will be here tomorrow.

As with last year, I was using runCoach.com to train for the race. There are many ways to train for a race, but I find this one to work very well for me. I’m not sure if it’s because this year I was doing a bunch of NYRR races, but for my long runs, it never got anywhere as long as it did last year where they had me doing up to 12 miles. Nonetheless I felt extremely well prepared for the race.

Pinning on my Bib in the Reagan Center garage
Pinning on my Bib in the Reagan Center garage

As I did last year, I woke up at 0445 with a goal of leaving the house by 0515.  I had one measured cup of cereal and forced my body to empty out so that I wouldn’t have to stop at a porta potty during the race. Something happened with my mom’s alarm (maybe AM/PM confusion?) so we left a little closer to 0525. We drove to DC and parked in the Reagan Building. Got my bib attached to my bib belt, put my cell phone in there, and we headed upstairs. I took another chance to pee since I knew it wouldn’t be crowded. Heading out onto the sidewalk I felt slightly chilly – I was wearing the Tracksmith Merino Wool Thaw shirt, Thaw half-tights, and Thaw cap. I knew I’d be OK once I got warmed up and the sun came up. 

Last year I didn’t have enough faith in myself to do what runCoach recommended and have a 10 minute warm up before my race. I thought I might waste energy I needed for the race. But this year I’ve been actually doing the 10 minute warm up before my NYRR races without any negative consequences. So I ran my 10 minute warm up around the base of the Washington Monument. 

Afterwards I made one more trip to the restrooms near the base (much closer to my yellow corral than the porta potties) and then it was announced that it was time to fill the corrals. 

I had my raisins with me, but so close to the start I decided not to eat any. I put them in the half tight’s pockets in case I needed them later.

Many thousands of runners begin to cross the starting line

The Race

The horn goes off; you start your watch; the adrenaline flows

It was great this time to be up front where I could see the elite women take off for their start at 0718. As I waited there while we went through the various festivities and ceremonies before the whole race and between the women’s and men’s starts, I found that even though I’d already peed 4 times before the race (and drank less than a cup of water before the start) I had to pee. Well, I wasn’t going to leave the corral, so I hoped it wouldn’t get bad enough that I’d have to stop at one of the course porta potties. I might need to do that at a half marathon or full marathon, but I was going to try not to do so for this 10 miler. As a consequence, I only grabbed water at 2 of the 4 or 5 water stations. I wanted to stay hydrated, but I didn’t want to have to pee so badly it was a choice of stopping my race or peeing on myself.

This race was my first time using Garmin’s PacePro feature. Previously I’d just used the watch and checked my pace vs the pace I was trying to achieve. This is OK for a simple or short course, but harder the longer the courses get and if they have hills or other things that would keep you from running an even pace. The other thing is that either you need to have run the race before and recorded a GPS track OR someone else has to have done so and made it public. This allows you to tell Garmin your finish time and Garmin looks at the course, elevation, etc and comes up with a pace per mile for you. You can also tell Garmin if you want to do positive or negative splits and work harder on hills. I left it at neutral for everything for this particular race. What worked best for me is that it keeps track of how ahead or behind you are for the entire course. Once I reached an ahead of 4-5 seconds during a hill where I ran a little faster, I decided to try and maintain that by staying on pace for the rest of the laps. The only disappointment was the fact that we went under a few overpasses and that messed with the GPS. For a car they would have been no big deal. But at human speed, it caused PacePro to lose track of where I was for a bit and that meant it was up to me to try and keep pace by keeping my legs at the same speed. Sometimes it took 30 seconds to get it back, sometimes a minute or more. Easier at the beginning than at the end. Overal, it was a bit positive and I will DEFINITELY use it for any race that I’m running for the second (third, etc) time. 

The course was great other than mile 6 seeming to have way more potholes than any other mile on the course. It was hard to make sure not to twist my ankle or fall. Since I’d just run the course this fall, I still remembered a lot of details about the end. As we did the final southern loop, I felt great. Unlike last time I didn’t feel like dying around miles 7-8. I started feeling a little tired at mile 9 / 15k mark, but I still had energy to push it hard at the end. I felt good at the end with my legs slightly sore. It might just be me or maybe a few folks finished at once, but I didn’t hear my name at the finish line (and they WERE announcing folks). That was a slight bummer as it’s my favorite part of finishing a big race.

I thought about maybe consuming the raisins around the halfway point of the race if I felt like I was flagging. But, as has been drilled into my head over the last few weeks, NOTHING NEW ON RACE DAY. And I hadn’t done any training runs where I ate raisins while running. So I just left it alone. 

The race went extremely well for me. Last fall I wrote in my blog post that it would be incredible to go from 1 hour 14 minutes to 1 hour 10 minutes. It would have required me to go from a 7:30 mile to a 7:05 mile. And yet that’s exactly what I did. It was the most incredible surprise and points to the fact that I may not yet have discovered my running peak (having come to this so late in life and on my own without a true coach. According to the records kept by Garmin I also got new PRs for my 5K and 10Ks. Since that’s not something that typically happens in a longer race (where one has to conserve energy) I think it means I should be able to get some nice PRs later in the year when I do my scheduled 5K and 10K races. Looking at my Garmin watch now, based on what Garmin knows about my fitnes level it predicts the following for me:

  • 5K – 18:42 – 3 minutes faster than I ran at the Washington Heights 5K in March
  • 10K – 39:42 – 7 minutes faster than I ran the 10K in February
  • Half Marathon – 1:31:27 – I have not yet tried an in-person HM at race pace, so I have no comparison here. I believe runCoach predicts a 1:37 HM for me.
  • Marathon 3:30:33 – I haven’t tried yet virtual or in person


Those are results to make one proud! (not even counting dropping 4 minutes off my time!) For the age group that’s top 14% (148/1053). Gender is top 13% (838/6315). And overall top 7%!! (1085/14665)

Garmin Data

Let’s first take a look at the GPS track:

2022 CU Cherry Blossom GPS Tracks over Sat Map
2022 CU Cherry Blossom GPS Tracks over Sat Map

Taking a look at my heart rate and and pace as recorded by Garmin:

Pace and Heart Rate
Pace and Heart Rate

You can see the pace was incredibly stable. And you’ll see that soon on the image comparing my splits to the PacePro recommendation. It looks as thought my heart rate was relatively low for the first half of the race. After that it picked up quite a bit, but seemed to stay pretty stable. Here’s my time per heart rate zone:

Heart Rate Zones
Heart Rate Zones

When you look at the PacePro splits below, be aware of the GPS caveats I mentioned above. After all, the watch thinks I maintained a 7:01 pace while the official race pace is 7:05.

Garmin PacePro Splits
Garmin PacePro Splits
me crossing the finish line with another person. Other runners behind


It’s over. Time to think about your accomplishments and plan for next time.

After the race was over, mom and I took some photos and basked in the glory of the end of a race, especially once in which I’d earned a new PR. Then it was time to head back home. By the time I got home I was famished! I had a full bowl of cereal with a focus on Kashi Go Crunch Peanut butter and Trader Joe’s Just the Clusters Pecan cereal (I like to pour a mix of cereals into my bowl for a mix of textures and tastes) A couple hours later I had a lunch of some bratwurst that I’d grilled the day before in a sub roll. I didn’t eat the bratwurst yesterday since eating fatty foods can lead to unfortunate results during a race. 

I had some of the usual tibial tendon inflammation that I get when I race really hard so I took a couple ibuprofen that morning and iced my ankle before bed. The inflammation stuck around for a few days, but had mostly faded by Thursday. My legs were a little sore going up the stairs, but by Tuesday my legs were fine.

What’s Next 

What’s literally next is a half marathon in a couple months. But, thinking about my running as a whole, I’d like to see how fast I can push myself on my 5K and 10K. I also have another 10 mile race later this year and I’d like to see if I can bring my time down even lower. I didn’t feel “dead” at the end of the race, so there might be room to veer into the sub-7 minute mile pace. If I can eventually get to a 1 hour 10 mile race, I think I’ll be very happy with myself. Next year is the 50th anniversary of the Cherry Blossom run. Part of me thinks it’s silly to imbue any particular number with any significance. Why is 50 more important than 49 or 51? But part of me is still a human with human psychology and would like to try and be a part of that milestone. The race organizers are also planning something special to commemorate. We’ll see if I win that lottery selection.

Podcasts I’m Listening to in 2022

This time around I’ve written a Python script to take the OPML file from Podcast Republic and generate the list along with URLs and official descriptions for all the podcasts. If I have additional thoughts I’ll add them after the official description.

The World Around Us

99% InvisibleOfficial Description: Design is everywhere in our lives, perhaps most importantly in the places where we’ve just stopped noticing. 99% Invisible is a weekly exploration of the process and power of design and architecture.

Freakonomics RadioOfficial Description: Discover the hidden side of everything with Stephen J. Dubner, co-author of the Freakonomics books. Each week, Freakonomics Radio tells you things you always thought you knew (but didn’t) and things you never thought you wanted to know(but do) — from the economics of sleep to how to become great at just about anything. Dubner speaks with Nobel laureates and provocateurs, intellectuals and entrepreneurs, and various other underachievers.

Nice Try!Official Description: Nice Try’s second season, Interior, is all about the lifestyle products that have been sold to us over and over, and the promises of domestic self improvement they have made, kept and broken. From Curbed and the Vox Media Podcast Network.

Reply AllOfficial Description: “‘A podcast about the internet’ that is actually an unfailingly original exploration of modern life and how to survive it.” – The Guardian. Hosted by Alex Goldman and Emmanuel Dzotsi from Gimlet.

The AllusionistOfficial Description: Adventures in language with Helen Zaltzman.

RadiolabOfficial Description: Radiolab Eric’s Commentary: Radiolab is a lot like This American Life except with a much bigger focus on sound effects. It is, in a way, the descendant of the old radio shows of the 30s and 40s.


Alt.LatinoOfficial Description: Alt.Latino is a spotlight on the world of Latinx arts and culture through music, stories and conversation.

Television and Movies

Boars, Gore, and SwordsOfficial Description: Ivan Hernandez and Red Scott break down every episode of Watchmen, Game of Thrones, Westworld, Counterpart, Lovecraft Country, WandaVision, and now Loki. Eric’s Commentary: As you may be able to tell from the name, this started off as a Game of Thrones podcast. Ivan and Red covered all the books and TV shows. Once that was over, they moved on to cover a variety of TV shows. Sometimes they’ll do a whole season or series. Other times, it’s just the opening episode.

Doesn’t Sound like Anything to Me: A Westworld Recap – Official Description: Writer Ivan Hernandez and comedian Red Scott break down everything Westworld, including every episode of the HBO series and also the original movies. Eric’s Commentary: If you like Boars, Gore, and Swords this is more of that, but focused on Westworld.

Failure to AdaptOfficial Description: Is the book always better? Are they better off as Movies?? Finally, an answer. Author Maggie Tokuda-Hall and Comic Red Scott talk media that moves from one form to another. Whether it’s Stephen King books becoming Steven Spielberg movies, Fairy Tales loosely inspiring animated Disney musicals, or People transmuting into Wolves, this is the podcast with the conviction and insight to determine a story’s correct form. Eric’s Commentary: This is the same Red Scott as the previous two pocasts, but this time paired with Maggie Takuda-Hall. It results in a different dynamic with a slightly more thoughtful (but no less funny) Red Scott.

How Did This Get Made?Official Description: Have you ever seen a movie so bad that it’s amazing? Paul Scheer, June Diane Raphael and Jason Mantzoukas want to hear about it! We’ll watch it with our funniest friends, and report back to you with the results.

TwinsiesOfficial Description: Every two weeks, comedians TJ Chambers and Andy Wood get together to take a look at what happens when Hollywood has the same idea twice.

Unclear and Present DangerOfficial Description: New York Times columnist Jamelle Bouie and freelance writer John Ganz delve into the world of 90s post-Cold War thrillers with Unclear and Present Danger, a podcast that explores America in an age of transition to lone superpower, at once triumphant and unsure of its role in the world.

UnspooledOfficial Description: Listen up, film fans! Actor & comedian Paul Scheer and film critic Amy Nicholson want your advice as they make the ultimate list of the greatest movies of all time. In Season 1, they watched every one of the AFI’s Top 100 films…and decided they could kick off half. Now, they’re filling in the gaps by investigating wildly diverse areas of film through miniseries on topics like horror movies, documentaries and romantic comedies, with help from listeners’ picks. Along the way, they’ll dissect iconic scenes, spotlight their favorite characters, and talk to some of the actors and directors who worked on these classics. And when Unspooled has built their own list of the best movies on earth, they’ll blast them into space to be immortalized for eternity. Seriously.

ZOOMOfficial Description: ZOOM is a new podcast from Focus Features for movie lovers who want to know everything. Fueled by the inquisitive mind of film critic and host Amy Nicholson (“Unspooled,” “Halloween Unmasked”), each episode uses a modern-day movie as a launch pad to discover mind-bending facts about science, technology, and history. What kind of planet might E.T. come from? Do superstar horses “act”? Which Edwardian rules of etiquette could trip up Downton Abbey’s Lord Grantham? Featuring interviews with an eclectic mix of experts and filmmakers, ZOOM explores Hollywood’s uncharted questions.

Talkin’ Toons with Rob PaulsenOfficial Description: Rob Paulsen, one of the most accomplished and well-known voice actors of our time, sits down with various other voice actors to discuss their experiences! And yes, of course, there’ll be plenty of voice acting games.


BlindspotOfficial Description: “Blindspot: The Road to 9/11” (Season 1) brings to light what happened before the 2001 terrorist attacks – 10 years of botched leads, near misses, and bureaucratic inertia. Host Jim O’Grady draws on interviews with FBI agents, high-level bure
aucrats, security experts, and people who knew the terrorists personally to create a gripping, serialized audio experience. “Blindspot: Tulsa Burning” (Season 2) transports listeners to the thriving Greenwood District in 1921 – a Black city within a city – and its destruction by a mob of white supremacists. Host KalaLea tells the story of this remarkable neighborhood through the stories of survivors, descendants, and inheritors of its legacy. The series is a co-production of The HISTORY® Channel and WNYC Studios.

Dan Carlin’s Hardcore HistoryOfficial Description: In “Hardcore History” journalist and broadcaster Dan Carlin takes his “Martian”, unorthodox way of thinking and applies it to the past. Was Alexander the Great as bad a person as Adolf Hitler? What would Apaches with modern weapons be like? Will our modern civilization ever fall like civilizations from past eras? This isn’t academic history (and Carlin isn’t a historian) but the podcast’s unique blend of high drama, masterful narration and Twilight Zone-style twists has entertained millions of listeners.

Dan Carlin’s Hardcore History: AddendumOfficial Description: Interviews, musings and extra material from the makers of Dan Carlin’s Hardcore History.  If it did not fit in the HH feed it’s probably here

Tides of HistoryOfficial Description: Everywhere around us are echoes of the past. Those echoes define the boundaries of states and countries, how we pray and how we fight. They determine what money we spend and how we earn it at work, what language we speak and how we raise our children. From Wondery, host Patrick Wyman, PhD (“Fall Of Rome”) helps us understand our world and how it got to be the way it is.

The Dollop with Dave Anthony and Gareth ReynoldsOfficial Description: Comedians Dave Anthony and Gareth Reynolds picks a subject from history and examine it. Eric’s Commentary: The main setup is that Dave Anthony is telling a true story from history to Gareth Reynolds who doesn’t know ahead of time what the story is going to be.

ThroughlineOfficial Description: The past is never past. Every headline has a history. Join us every week as we go back in time to understand the present. These are stories you can feel and sounds you can see from the moments that shaped our world.

Business and Finance

Business WarsOfficial Description: Netflix vs. HBO. Nike vs. Adidas. Business is war. Sometimes the prize is your wallet or your attention. Sometimes, it’s just the fun of beating the other guy. The outcome of these battles shapes what we buy and how we live. Business Wars gives you the unauthorized, real story of what drives these companies and their leaders, inventors, investors and executives to new heights — or to ruin. Eric’s Commentary: many of these series are very interesting, especially when you see how history has set up the business world we have today. I tend to skip the businesses I don’t care about.

MarketplaceOfficial Description: Every weekday, host Kai Ryssdal helps you make sense of the day’s business and economic news — no econ degree or finance background required. “Marketplace” takes you beyond the numbers, bringing you context. Our team of reporters all over the world speak with CEOs, policymakers and regular people just trying to get by.

Planet MoneyOfficial Description: The economy explained. Imagine you could call up a friend and say, “Meet me at the bar and tell me what’s going on with the economy.” Now imagine that’s actually a fun evening.

The Indicator from Planet MoneyOfficial Description: A little show about big ideas. From the people who make Planet Money, The Indicator helps you make sense of what’s happening today. It’s a quick hit of insight into work, business, the economy, and everything else.


Cautionary Tales with Tim HarfordOfficial Description: We tell our children unsettling fairy tales to teach them valuable life lessons, but these Cautionary Tales are for the education of the grown ups – and they are all true. Tim Harford (Financial Times, BBC, author of “The Data Detective”) brings you stories of awful human error, tragic catastrophes, and hilarious fiascos. They’ll delight you, scare you, but also make you wiser.

You Are Not So SmartOfficial Description: You Are Not So Smart is a show about psychology that celebrates science and self delusion. In each episode, we explore what we’ve learned so far about reasoning, biases, judgments, and decision-making.


Codebreaker, by Marketplace and Tech InsiderOfficial Description: None Eric’s Commentary: A tech podcast. Season 1 asked the question “Is it Evil?” of various technologies. still on my feed, but hasn’t release a new episode since Dec 2016.

Command Line HeroesOfficial Description: Stories about the people transforming technology from the command line up. Eric’s Commentary: A podcast produced by Red Hat that tackles different tech topics, organized around a seasonal topic. Season 2 was about programming languages and introduced me to the Python podcasts that I listen to. Season 3 is about the history of computer hardware. The current season is about malware.

Open Source Security PodcastOfficial Description: A security podcast geared towards those looking to better understand security topics of the day. Hosted by Kurt Seifried and Josh Bressers covering a wide range of topics including IoT, application security, operational security, cloud, devops, and security news of the day. There is a special open source twist to the discussion often giving a unique perspective on any given topic.

Python BytesOfficial Description: Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.

Talk Python To MeOfficial Description: Talk Python to Me is a weekly podcast hosted by developer and entrepreneur Michael Kennedy. We dive deep into the popular packages and software developers, data scientists, and incredible hobbyists doing amazing things with Python. If you’
re new to Python, you’ll quickly learn the ins and outs of the community by hearing from the leaders. And if you’ve been Pythoning for years, you’ll learn about your favorite packages and the hot new ones coming out of open source.

The Real Python PodcastOfficial Description: A weekly Python podcast hosted by Christopher Bailey with interviews, coding tips, and conversation with guests from the Python community. The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what’s new in the world of Python programming and become a more effective Pythonista.

Non-Financial, Non-Political News and Current Events

Common Sense with Dan CarlinOfficial Description: Loud, fast-talking and deceptively funny, this politically-independent “forward-thinking pragmatist” looks at the events shaping our world through a uniquely American lens. It’s smarter than you think, and faster than you expect. Eric’s Commentary: I like this show because Dan Carlin takes the same analytical mind he uses for Hardcore Histroy and applies it to current events.

Fresh AirOfficial Description: Fresh Air from WHYY, the Peabody Award-winning weekday magazine of contemporary arts and issues, is one of public radio’s most popular programs. Hosted by Terry Gross, the show features intimate conversations with today’s biggest luminaries.

The Daily Show With Trevor Noah: Ears EditionOfficial Description: Listen to highlights and extended interviews in the “Ears Edition” of The Daily Show with Trevor Noah. From Comedy Central’s Podcast Network. Eric’s Commentary: Also currently contains the audio of the full TV episodes.

Misc Pop Culture

Conan O’Brien Needs A FriendOfficial Description: After 25 years at the Late Night desk, Conan realized that the only people at his holiday party are the men and women who work for him. Over the years and despite thousands of interviews, Conan has never made a real and lasting friendship with any of his celebrity guests. So, he started a podcast to do just that.Deeper, unboundedly playful, and free from FCC regulations, Conan O’Brien Needs a Friend is a weekly opportunity for Conan to hang out with the people he enjoys most and perhaps find some real friendship along the way.

Decoder RingOfficial Description: Decoder Ring is the show about cracking cultural mysteries. In each episode, host Willa Paskin takes a cultural question, object, or habit; examines its history; and tries to figure out what it means and why it matters.

It’s Been a Minute with Sam SandersOfficial Description: Each week, Sam Sanders interviews people in the culture who deserve your attention. Plus weekly wraps of the news with other journalists. Join Sam as he makes sense of the world through conversation.

SmartLessOfficial Description: “SmartLess” with Jason Bateman, Sean Hayes, & Will Arnett is a podcast that connects and unites people from all walks of life to learn about shared experiences through thoughtful dialogue and organic hilarity. A nice surprise: in each episode of SmartLess, one of the hosts reveals his mystery guest to the other two. What ensues is a genuinely improvised and authentic conversationfilled with laughter and newfound knowledge to feed the SmartLess mind.

WTF with Marc Maron PodcastOfficial Description: Marc Maron welcomes comedians, actors, directors, writers, authors, musicians and folks from all walks of life to his home for amazingly revealing conversations. Marc’s probing, comprehensive interview style allows guests to express themselves in ways listeners have never heard.

Song ExploderOfficial Description: Song Exploder is a podcast where musicians take apart their songs, and piece by piece, tell the story of how they were made. Each episode features an artist discussing a song of theirs, breaking down the sounds and ideas that went into the writing and recording. Hosted and produced by Hrishikesh Hirway.

Short Story Podcasts

Escape PodOfficial Description: The Original Science Fiction Podcast Eric’s Commentary: This podcast features great selections of short stories. I added it to my podcatcher to get a dose of fiction among the more non-fiction podcasts I usually listen to. Also, there’s something great about short-form fiction where you have to build the world AND tell the story in a very concise way.

Give Me FictionOfficial Description: Give Me Fiction is a prose reading series hosted by Ivan Hernandez. Each month at GMF’s live show, some of the finest minds in comedy, literature, and the arts write pieces based on a theme. Each week on this podcast, we deliver one of those stories to the listening public. No new episodes since May 11, 2015


FiveThirtyEight PoliticsOfficial Description: Nate Silver and the FiveThirtyEight team cover the latest in politics, tracking the issues and “game-changers” every week.

On the MediaOfficial Description: The Peabody Award-winning On the Media podcast is your guide to examining how the media sausage is made. Host Brooke Gladstone examines threats to free speech and government transparency, cast a skeptical eye on media coverage of the week’s big stories and unravel hidden political narratives in everything we read, watch and hear. Eric’s Commentary: It’s not always about politics, but that’s often a key reasons for a lot of the media matters they discuss – especially over the past 2 decades.

Political GabfestOfficial Description: Voted “Favorite Political Podcast” by Apple Podcasts listeners. Stephen Colbert says “Everybody should listen to the Slate Political Gabfest.” The Gabfest, featuring Emily Bazelon, John Dickerson, and David Plotz, is the kind of informal and irreverent discussion Washington journalists have after hours over drinks.

Politically Re-Active with W. Kamau Bell & Hari KondaboluOfficial Description: W. Kamau Bell and Hari Kondabolu are comedians who take politics seriously; and longtime friends, trying to help keep each other sane. Join them as they pull the alarm on the dumpster fire that is American politics, and talk to the creators, thinkers, and leaders doing the work to defend and reinvent our democracy.

What Roman Mars Can Learn About Con LawOfficial Description: Professor Elizabeth Joh teaches Intro to Constitutional Law and most of the time this is a pretty straight forward job. But when Trump came into office, everything changed. During the four years of the Trump presidency, Professor Joh would check Twitter five minutes before each class to find out what the 45th President had said and how it jibes with 200 years of the judicial branch interpreting and ruling on the Constitution. Acclaimed podcaster Roman Mars (99% Invisible) was so anxious about all the norms and laws being tested in the Trump era that he asked his neighbor, Elizabeth, to explain what was going on in the world from a Constitutional law perspective. Even after Trump left office, there is still so much for Roman to learn. What Roman Mars Can Learn About Con Law is a weekly, fun, casual Con Law 101 class that uses the tumultuous activities of the executive, legislative, and judicial branches to teach us all about the US Constitution.

The ExperimentOfficial Description: Each week, we tell the story of what happens when individual people confront deeply held American ideals in their own lives. We’re interested in the cultural and political contradictions that reveal who we are.

Radiolab Presents: More PerfectOfficial Description: From the producers of Radiolab, a series about how the Supreme Court got so supreme.

Science Fiction and Fantasy Culture

Imaginary WorldsOfficial Description: Imaginary Worlds is a biweekly podcast about science fiction, fantasy and other genres of speculative fiction. Host Eric Molinsky talks with novelists, screenwriters, comic book artists, filmmakers, and game designers about their craft of creating fictional worlds. The show also looks at the fan experience, exploring what makes us suspend our disbelief, and what happens when that spell is broken. Fantasy worlds may be set in distant planets or parallel dimensions, but they are crafted here on Earth and on some level relate to our daily lives. Employing his years of experience in public radio, Eric brings a sophisticated, thoughtfully produced voice to the far-out and fantastical.
Intentionally BlankOfficial Description: Join bestselling authors Brandon Sanderson and Dan Wells as they search for the perfect podcast name and talk about the weird things they love—such as food heists, the perfect popcorn salt, and whether any art can truly be perfect. Listen for commentary on movies, TV shows, books, video games, and wherever else their conversation leads them.

Our Opinions Are CorrectOfficial Description: Explore the meaning of science fiction, and how it’s relevant to real-life science and society. Your hosts are Annalee Newitz, a science journalist who writes science fiction, and Charlie Jane Anders, a science fiction writer who is obsessed with science. Every two weeks, we take deep dives into science fiction books, movies, television, and comics that will expand your mind — and maybe change your life

The Sword and LaserOfficial Description: Different worlds, different discussions! Eric’s Commentary: The official podcast of the Goodreads reading group of the same name.


Probably ScienceOfficial Description: Professional comedians with so-so STEM pedigrees take you through this week in science. Incompetently. Featuring hosts Matt Kirshen, Andy Wood (and sometimes Jesse Case or Brooks Wheelan) along with a rotating cast of special guests from the worlds of comedy and science.

StarTalk RadioOfficial Description: Science, pop culture and comedy collide on StarTalk Radio! Astrophysicist and Hayden Planetarium director Neil deGrasse Tyson, his comic co-hosts, guest celebrities and scientists discuss astronomy, physics, and everything else about lifein the universe. Keep Looking Up!

The Infinite Monkey CageOfficial Description: Witty, irreverent look at the world through scientists’ eyes. With Brian Cox and Robin Ince.


ProofOfficial Description: A disappearing food franchise. The story behind how a Vietnamese spring roll ended up on the menu of Senegalese restaurants. We take America’s Test Kitchen’s inquisitive and relentless approach to telling unexpected, funny, and thought-provoking narratives about food and drink. This is not a recipe show. And this is not a show about celebrity chefs or what they like to eat. Proof plunges into history, culture, science, and the psyche to uncover the hidden backstories that feed your food-obsessed brain. Hosted by Kevin Pang. A production of America’s Test Kitchen.


Writing ExcusesOfficial Description: Fifteen minutes long, because you’re in a hurry, and we’re not that smart. Eric’s Commentary: Famous SFF authors talk about the craft of writing. Tends to be organized topics which take 4-8 episode to fully explore. Even though I do not want to become a fiction author, I love the behind-the-scenes view into how the storytelling craft works.

NYRR Washington Heights Salsa, Blues, and Shamrocks 5K

racing shoes by the wall in a hallway


A couple weeks ago, anticipating the coming spring showers and the possibility of having to race in the rain, I bought an outfit from Tracksmith’s new Thaw collection. As usual, I brought all my running clothes to NYC, not knowing what the weather has in store. After all, it wasn’t supposed to snow last race. I woke up at 0500 since the MTA trip planner told me I’d need to start my journey at 0544 to get to The Armory by 0730. It was in the 40s outside so while I brushed my teeth I waffled about what to wear.  By race time (0900) it would be in the 50s. Complicating things: it was almost guaranteed to rain during the race. So my mid-layer was out. My jacket was waterproof, but that would certainly be too hot for the race. Should I wear it and unzip? In the end, I decided to go for just the Thaw long sleeve shirt, Thaw half tights, Thaw beanie, and inverno gloves. I had my usual pre-race breakfast of a quarter cup of raisins and headed out the door.

The walk was fine. I felt I had chosen the right clothes. The train arrived on time and my journey to to Washington Heights had begun.

selfie on a NYC train
morning train ride to the race site

This is my third in person race this year and my first in-person 5k since the race that inspired this whole racing journey at the Red Hat Summit 2019. I believe it’s also my first time in Washington Heights. I don’t believe the wife and I have ever traveled up here in the 21 years we’ve known each other.

The Armory in Washington Heights
The Armory

When I arrived at the 168th St stop, it was a bit windy and while I know my outfit was perfect for the run, I wasn’t sure I could be outside for an hour and a half until the race started. Luckily, the bib pickup was at The Armory, which has been converted into a track and field space. (Tracksmith filmed a documentary there about a guy who tries to beat his mile record every year at midnight January 1st) I took advantage and used the indoor restrooms instead of the porta potties. I stayed in there until about 0815 when I decided it was time for my warmup run.

people in a race corral

The Race

Having completed my warmup, I headed to my corral. As usual, I was the only one there until just a few minutes before the run. At that point, it was time to try and keep warm, listen to what I could hear from the race warmup guy, and psych myself up for the race. This was the first race where I could barely hear the National Anthem being sung. As they got ready to sound the horn, it started raining lightly and I was happy with my choice of clothing. It became apparent that this shirt wouldn’t keep me dry in a downpour, but it served well to keep me dry so I wouldn’t freeze. The rain either stopped shortly after our was light enough for me to ignore while focused on the race.

This was the first road race I’d done with NYRR. Yes, technically we were running (at least partially) on roads in Central Park but this was the first time on major roads. Consequently I had to keep my eyes on the road to make sure I wouldn’t break my ankle by stepping into a hole; there were a few near misses. The course was almost a straight there-and-back affair, but there was a loop at the top between miles 1 and 2. I kept watching for where we were going to loop around, but suddenly found myself on the other side of the loop. It was a nice boost to see that I suddenly only had one mile left. One nice thing about a road race in New York is that as I was nearing the end I could see how many blocks I had left and pace myself accordingly.

GPS track of NYRR Washington Heights 5K race
GPS track of NYRR Washington Heights 5K race

Speaking of pacing, I had a goal of achieving negative splits. Ever since that first 5k, I had learned that in 5k you are supposed to do each mile faster than the last. I thought that was absurd. How could you possibly have any gas left in the tank as you deleted more and more of your reserves? But I resolved to try. I’m happy to report that I succeeded! If you look at the splits from Garmin, there’s a slight hitch in mile 2, but there are two causes for that. First, mile one’s average is a little extra low because I came out of the gate a little hot. I can find and maintain a good pace for a race, but I’m not yet good at realizing my pace without checking in with the watch. Second, because of the way the course was laid out, there was a bit of an uphill part in mile 2 where I got stuck behind someone. I definitely clocked faster mile 3 than mile 1. I also felt I had more energy than I expected at the end so I may program in a faster pace for my next 5k; I was able to sprint at the end without feeling like dying, for example.

race stats

Once again, I’m really happy with my results compared to the field. Overall in the top 12%. Gender: top 20% Age group: top 28%. My heart-rate zones during the race:

Heart rate zones graph

Every race so far has had folks who weren’t volunteering with NYRR cheering us on. The last race even had someone with a DJ system playing music. This was the first race that had live musicians playing. That was a lot of fun even if, at a 5k pace I wasn’t going to hear too much of it before I was past it.

selfie post-race


It was a great 3rd race for me and I’m excited for the rest of the race calendar. I’ve got some big, exciting races coming up and I can’t wait to tell you about them as they happen. I’m also excited for it to warm up. I know running when it’s hot isn’t fun, but I’d like to not be freezing in the pre and post race time. 

selfie post-race
After the NYRR Washington Heights 5K

Next up is a virtual half marathon next week. I paid at the level that not only gets me a physical medal, but also guaranteed entry for next year. (And hopefully a shirt!) I’m not sure if I’ll blog about that, but we’ll see.

One last little thing – I was looking at my NYRR runner overview and I was tickled by the distances

Sure, the running distance isn’t a perfect half marathon, but it’s nearly a half marathon and right next to a virtual 10K, I just found that fun. I also like that all my personal bests are listed here. I’m hoping to beat some of those in the coming year, so here’s to hopefully toppling some of those in the future.

Stats slightly different due to GPS vs race path

Programming Update: January/February 2022

I started off the year not expecting to do much programming. Compared to some months in 2021, I barely programmed, but I did end up programming much more than I expected. Let’s take a look at what I worked on in the first sixth of the year.

Python Programs

End of Year Video Games Helper

Coming off of last year in which I finally used Python to pull my last.fm data and create graphs, I decided to do the same for my End of Year Video Games blog post. I haven’t posted the code to Github, but here it is:

"""Go through Let's Play directories and sum up total time per video. Assumes directory per game."""

from datetime import time, timedelta
from pathlib import Path
from rich import print
from pymediainfo import MediaInfo

def sum_times(directory: Path) -> tuple:
    """Sum the duration of all videos in this directory.

    Return a tuple with the name of the game and the total time.

    Assumption: names of directory is name of game.
    video_files = [item for item in directory.iterdir() if not item.is_dir()]
    total_length = timedelta(0, 0, 0, 0)
    for video_file in video_files:
        video_info = MediaInfo.parse(str(video_file))
        for track in video_info.tracks:
            if track.track_type == "Video":
                video_dict = track.to_data()
                video_length = video_dict['other_duration'][4]
                split_video_length = video_length.split(":")
                total_length += timedelta(hours=int(split_video_length[0]), minutes=int(split_video_length[1]),
    return directory.parts[-1], total_length

if __name__ == '__main__':
    starting_directory = Path("my_videos/")
    gather_subdirectories = [item for item in starting_directory.iterdir() if item.is_dir()]
    games_and_lengths = []
    annual_total = timedelta(0, 0, 0, 0)
    for subdirectory in gather_subdirectories:
        game, length = sum_times(subdirectory)
        annual_total += length
        games_and_lengths.append((game, length))
    sorted_games_and_lengths = sorted(games_and_lengths, key=lambda game_length: game_length[1], reverse=True)
    with open("games_and_times.txt", 'w') as file:
        for position, game_tuple in enumerate(sorted_games_and_lengths):
            file.write(f"{position+1}. {game_tuple[0]} ({game_tuple[1]}): \n")
        file.write(f"Total Time for 2021: {annual_total}")

It worked very well and saved me hours of time going through each video to sum up the total play time. This is, as I have said, the best use of programming.

Extra Life Donation Tracker v7.1.0

This year was the first year in which I didn’t make an initial donation when I signed up for Extra Life. Turns out there were a few issues I’d never realized existed for someone who wanted to use my program without any donations whatsoever. I fixed those issues and cut a new release.

Prophecy Practicum (Django)

I’ve previously mentioned the project I created for my friend to help reduce the barrier on one aspect of his spiritual practice. He had asked me to work on a few quality of life issues. After I knocked those out (for a 5.0 release), I was very motivated to keep going. The 6.0 release was about beautification (mostly with CSS) to make the site look a bit more modern. I ended up using the Bulma CSS framework (apparently CSS has reached that level of modernization to where folks use frameworks instead of manually creating CSS). Of course, in the course of creating and testing the CSS changes, I found a few more places to improve the code to make it better for the users. It made me incredibly happy to make things work better for my friend and the other users.

Python Learning

As I continued to read through Data Visualization with Python and Javascript, I started to gain an understanding of CSS (which helped above when I worked on the Django project). I’m reading the book on the side as I work on other stuff so it’s slow going, but I hope to use it to visualize my last.fm data going forward.

I also started going through the Talk Python Pycharm class. I’ve been using Pycharm for a year or two now, but I’m learning so many new features that are already helping to make my programming work a lot easier – especially around refactoring.

Advent of Code

I did one tiny bit of Advent of Code in February – I implemented Advent of Code 2016 Day 5 in Go. This allowed me to learn about creating MD5 hashes in Go as well as practice functions and remind myself of the Go syntax since it’d been a couple months since I last coded in Go.

// Solution to Advent of Code Day 05 -- Do You Want to Play a Game

package main

import (

// createHash returns a md5 hash of a string
func createHash(textToHash string) string {
	hash := md5.Sum([]byte(textToHash))
	return hex.EncodeToString(hash[:])

// validateHash returns true if this is a hash with 5 leading 0s
func validateHash(hashToCheck string) bool {
	for position, char := range hashToCheck {
		if position < 5 {
			if string(char) == "0" {
			} else {
		if position == 5 {
			return true
	return false

// createDoorOnePassword takes in the input for this question and produces the password
func createDoorOnePassword(aocInput string) string {
	var password string
	numericalSuffix := 0
	for len(password) < 8 {
		testHash := createHash(aocInput + strconv.Itoa(numericalSuffix))
		if validateHash(testHash) {
			password += string([]rune(testHash)[5])
	return password

// createDoorTwoPassword takes in the aoc input and uses the new rules to produce the door password
func createDoorTwoPassword(aocInput string) string {
	var password [8]rune
	var locationCheck [8]bool
	numericalSuffix := 0
	for locationCheck[0] == false || locationCheck[1] == false || locationCheck[2] == false || locationCheck[3] == false || locationCheck[4] == false || locationCheck[5] == false || locationCheck[6] == false || locationCheck[7] == false {
		testHash := createHash(aocInput + strconv.Itoa(numericalSuffix))
		if validateHash(testHash) {
			probableLocation := string([]rune(testHash)[5])
			if probableLocation == "0" || probableLocation == "1" || probableLocation == "2" || probableLocation == "3" || probableLocation == "4" || probableLocation == "5" || probableLocation == "6" || probableLocation == "7" {
				location, _ := strconv.Atoi(probableLocation)
				character := []rune(testHash)[6]
				if locationCheck[location] == false {
					locationCheck[location] = true
					password[location] = character

	return string(password[:])

func main() {
	aocInput := "ugkcyxxp"
	doorOnePassword := createDoorOnePassword(aocInput)
	fmt.Printf("The password to door #1 is %s\n", doorOnePassword)
	doorTwoPassword := createDoorTwoPassword(aocInput)
	fmt.Printf("The password to door #2 is %s", doorTwoPassword)

Review: Terms of Enlistment

Terms of Enlistment by Marko Kloos

My rating: 4 of 5 stars

As I mentioned in one of my updates, this book follows in an esteemed lineage. We have Starship Troopers, written from the perspective of a Korean War vet. It’s the epitome of society to join the military. The Forever War, written by a Vietnam Vet, in which Earth’s best and brightest are wasted on a pointless war. Scalzi’s Old Man’s War series is a reconstruction of the genre – showing some tropes to be silly and others to make sense within the genre. This book, written within the last decade, is about the military as an escape from a crapsack future in which most folks are on the dole and instead of The Projects being some apartment buildings, it’s whole cities. The military is an escape of sorts – a way to live a sort of middle class life. And I think that’s actually not too far from the truth in the modern USA military, although scaled down. That is to say that our current military recruits far more heavily from poorer parts of America for the enlisted folks. And so it can potentially be a way up into the middle class for some people.

As for the story itself – it’s very well written. We follow Andrew Grayson, a welfare recipient who joins the military to escape. I was not surprised to read the author bio at the end and find out that Kloos was in the military himself. There’s a level of detail that belied either having served or being a huge mil-nerd. That isn’t to say that things get too technical and get in the way. More that you can tell the author has some experience. As per the usual tropes in these books Grayson goes to boot camp and then moves on to seeing action. The pacing and tone work well. Once Grayson got out of boot camp, I couldn’t put the book down.

Ever since I started reading Cory Doctorow’s books, I’ve looked at protests differently. It was definitely strange reading the riot chapters in 2022. I think perhaps if what I talk about in the next paragraph were resolved, I might feel differently, but as-is it was just a bit off. I can’t really describe it too well, because Kloos definitely does give Grayson pathos. He feel empathy on some level with those folks. He expresses a “but for grace there go I” attitude as well. But the lack of stated motivation makes it seem just odd after what we’ve seen over the past few years.

I have only two complaints. They’re relatively minor as you can tell since I gave the book a 4/5. First, there’s either a missed or dropped plotline that I was sure the book was going to tackle. To avoid spoilers, I’ll talk about it this way – there’s a battle that Grayson takes part in, maybe halfway through the book. In that battle there’s a lot of hints dropped that something very odd is going on with the skills of the enemy and with the equipment the enemy has. I thought that was going to lead to a potentially fascinating plot of intrigue and/or sabotage. Instead the thread is dropped. Second complaint, while the book ends at a point in which most of the major plot threads are resolved, it seems to have been developed with a planned sequel or two. It doesn’t end on a cliff hanger, but it does definitely end with a big tease, given the last couple chapters.

Overall, if you’re into space marine narratives like the ones I mentioned in the first paragraph, this is a good read. Just know you’re probably going to need to at least read the first sequel to get some satisfaction of the major reveal.

View all my reviews

Review: Interesting Times

Interesting Times by Terry Pratchett

My rating: 4 of 5 stars

This is my second time reading this book. I didn’t record a prior rating

I remember liking this book the first time I read it. I definitely enjoyed the parodies of the Confucian system and the mistakes at translating from one language to another. But I had forgotten a lot of it, especially the Cohen the Barbarian part.

Upon re-read this is my favorite Rincewind book. I think there’s only one more – the one where he’s on XXXX (Discworld Australia) and I don’t remember liking that one. Of all the Rincewind books this one has the most well-baked plot. It makes me wish Rincewind got more stories like that, although his first stories were also Pratchett getting to know what would eventually become the massive Discworld series. Basically (mild spoiler), Two-Flower has returned to the Agatean Empire (Discworld China with a little Japan thrown in) and written a travelogue. This has led to Rincewind being involved in a plot back in the Empire, so he’s requested. Well, they ask for the Great Wizzard and, eventually, the faculty at Unseen University realize it’s Rincewind. He ends up sent there and eventually gets involved in his main plot (don’t want to spoil it). While there is a bit of Rincewind runs from problem to problem and ends up somewhere, it’s much more focused this time around. We also get to understand the Agatean Empire from his point of view. It’s a nice compromise from the absolute chaos of his first 3 books.

The B-Plot involves Cohen The Barbarian and a bunch of other Octagenarian Barbrians forming a horde along with a well-meaning Teacher who’s both doing a wish-fulfillment thing in being part of a tough crowd and also doing a variation on the plot of My Fair Lady as he tries to civilize The Horde. They’re in the Agatean Empire for their last big barbarian mission. No spoilers here, but the eventual reveal is funny. I also enjoyed the barbarian simplicity (not stupidity, just simplicity – like with Corporal Carrot in The Watch books) clash against the court intrigue of the main families in the Agatean Empire.

Also, I kept giggling my ass off that in the Five Families, four of them have asian-ish surnames and the fifth one is the McSweeneys. Not sure if there’s any British joke that that specific surname, but I liked it. Then again, I like dad jokes.

Strangely, for all that I said, this could probably not be a horrible stand-alone book. You wouldn’t understand that Rincewind is going to be selected to go on the mission. And you wouldn’t know about his previous relationship with Two-Flower. But most of the rest can work on its own pretty well.

View all my reviews

Review: The Empress of Salt and Fortune

The Empress of Salt and Fortune by Nghi Vo

My rating: 5 of 5 stars

I received a free copy of the novella as a voting member of WorldCon 2021

That. Was. Awesome! It’s no wonder that it won the Hugo for best novella. I wasn’t able to get to it in time to vote, but this month it’s the Sword and Laser pick and I’m so glad that it was! Because this story seems short even for a novella (71 pages in my PDF version; not counting the preview for the next entry in the series), it’s a bit hard to convey too much about why I liked it without spoiling the story. Here’s my attempt:

First off, the cover is metaphorical. The animals will all make sense by the time you’re done with the story, but it’s not an Aesop Fables situation. Accordingly, the fantasy elements are minimal. They’re almost non-existent. Really they boil down to: ghosts are real, our main character has a bird that can talk, people can (in a Greek mythology fashion – although, given the context of this book, maybe it spans more cultures than that) become animals because of their grief or strong emotion.

Second, the frame story is one of our cleric (either non-gendered or perhaps losing conception of gender by becoming a cleric) from a monastery with a mission to catalog all lost information. The cleric heads to a house that was used in the past as a location to exile certain people the Emperor didn’t want around, but didn’t want to kill. (Don’t want to spoil too much there) The cleric meets someone there who tells the main story of the book.

The story unfolds as it is told and leads to many twists and surprises that delighted me.

It takes place in a (as far as I can tell) second world fantasy location that is reminiscent of China or, perhaps, a pan-asian identity since many of the cultures there refer to older folks as “grandma” even if not related by blood, etc.

I could not put the book down and heartily recommend it. It’s a very, very quick read (I think on Sword and Laser they mentioned that the audiobook is 2-3 hours long) and so even if you don’t like it, you’re not settling in for a long slog. Although I won’t get to it until later this year, I’m looking forward to reading the next book in the series.

View all my reviews

Review: Star Wars: From a Certain Point of View

Star Wars: From a Certain Point of View by Elizabeth Schaefer

My rating: 5 of 5 stars

This collection had all kinds of stories, from dramas to silly stories. I loved it! Here are my reviews per story:

Raymus (Gary Whitta) – a story from the point of view of the captain side so is boarded at the beginning of A New Hope. The anthology starts off well by giving some pathos to one of the first characters to did in the movie. It gets a little sadder when you find out where he’s from.

The Bucket (Christie Golden) – This continues the modern (although I’m sure there are older antecedents) trend of finding sympathy in enemy troops. A recognition that, to some degree, soldiers are following orders and also ?patriotic motives. It’s really just the point of view that makes a difference. So we follow one stormtrooper in the opening scene of A New Hope as he captures Princess Leia. We see his conflicted emotions. Overall, not too surprising now that we’ve had a bunch of seasons of Clone Wars and the other Star Wars cartoons.

The Sith of Datawork (Ken Liu) – A story about someone who works in the IT department for The Empire. We often just look at the exciting parts of war – the soldiers. The same goes, of course, for spy fiction or police procedurals. There’s been a trend over the last decade (including a british show I came across on PBS) depicting the IT department or at least the folks back in the office that are enablers to those on the front. It’s a refreshing understanding that there’s a giant logistics trail to the battlefront. (An understanding, or lack thereof, that has led to wars being prosecuted correctly or incorrectly going all the way back to Julius Caesar) The tale turns out to be a fun little bit of bureaucratic obfuscation.

Stories in the Sand (Griffin McElroy) – Griffin gives a sense of humanity and intelligence to the Jawas. In the movie they’re just child-like traders. But by seeing their thoughts and their wants and needs, they become even more. I’m really starting to like this anthology a lot.

Reirin (Sabaa Tahir) – Another story to humanize one of the faceless, seemingly monstrous inhabitants of Tatooine. This time it’s a sand raider who wants off-planet. An interesting parallel to our usual main character – Luke Skywalker. This is the first story that, as far as I can tell, doesn’t link directly to the plot of A New Hope.

The Red One (Rae Carson) – changes the story of the droid that breaks two seconds after Luke/Uncle Owen buy it from a sad, comedic beat to one of self-sacrifice. Very creative – I wouldn’t have thought someone could really change the emotions behind that moment.

Rites (John Jackson Miller) – The Tuskan Raiders that attack Luke get a backstory. I appreciated many aspects of this story more for having seen the second season of The Mandalorian and his fight with the creatures on Tatooine.

Master and Apprentice (Claudia Gray) – For the first time, the perspective of a Force Ghost. We get a beautiful short story between Qui-Gon and Obi-Won in which the old master gives some comfort to his old Padawan. It also suggests that Ben was not alone the entire time on Tatooine. I guess if the Kenobi TV show gets off the ground we may see some of this undone (if any of it was ever blessed as canon), but I truly like the idea.

Beru Whitesun Lars (Meg Cabot) – A bit of a cheat since we’re hearing from Beru from beyond the grave, but it’s not as though it’s an uncommon technique in movies and books. It allows us to get to know Beru a bit better. Of all the characters who have received more of a backstory, however, she’s needed it the least. The actor that played her in the movies conveyed a lot of warmth and a lot of her love for Luke was apparent. This isn’t to say that Cabot shouldn’t have written the story. It’s just that she was already well-humanized. (I guess Qui-Gon didn’t need his story either, although it does make Ben’s time on Tatooine less sad)

The Luckless Rhodian (Renee Ahdieh) – A Greedo story that actually makes him less sympathetic. He seems to be a bitter person who hates everyone else and is “racist” against everyone at the Cantina.

Not for Nothing (Mur Lafferty) – really fun story about the cantina band. Presented as an excerpt from a memoir written by one of the band members. I thought it was nice and witty.

We don’t serve their kind here (Chuck Wendigo) – we learn that the bartender at the Most Eisley Cantina hates droids because of the Clone Wars.

The Kloo Horn Cantina Caper (Kelly Sue Deconnick and Matt Fraction) – The longest story so far, it’s another cantina story that covers a bunch of lesser-knowns in the cantina. Tone totally matches what I know from Fraction and Deconnick’s comics.

Added Muscle (Paul Dini) – Dini gives us Boba Fett’s perspective on the newly added scene from the special edition where Jaba confronts Han Solo and Solo steps on Jaba’s tail. It’s funny reading this while watching The Book of Boba Fett. Dini’s Fett is more of a jerk as in the movies. Fett from the TV show is a more sympathetic character, and not just because he’s the main character. So definitely some cognitive dissonance here. But I liked Dini’s writing.

You Owe Me a Ride (Zoraida Cordova) – First story that, I think, really almost has nothing to do with the movies. I don’t remember these characters at all. But it’s a fun story of sisterhood. Definitely enjoyable.

The Secrets of Long Snoot (Delilah S. Dawson) – At first it seems that this is going to be like previous story and not tie into the main story of A New Hope. But then it turns out the Long Snoot was the one who alerted the storm troopers to where The Millenium Falcon was berthed.

Born in the Storm (Daniel Jose Older) – Told in the form of an after-action report, we get to hear from one of the troopers that Kenobi uses Jedi mind tricks on when their speeder is stopped. It’s a pretty fun story with a great framing device.

Laina (Wil Weaton) – A rebel on Yavin sends his young daughter away in case the moon base is attacked.

Fully Operational (Beth Revis) – What I like most about this story is the realism. It involves one of the men who’s in the room where we first see Vader force choke someone. He believes that perhaps there is a weakness in the Death Star. However all the older men consider him to be paranoid. This makes sense. There can be (at times) an irrational faith in the power of one’s military and leadership chain, but it’s never 100%. There’s always someone doubting. What changes history is whether folks listen to that person or not.

An Incident Report (Mallory Ortberg) – Another story (like Born in the Storm) that involves a bureaucratic report. This time it’s the guy who Vader force-chokes writing a report to try and get Vader reigned in. I like the tone, it’s not explicitly funny, but there is a slight dark humor to it since we know what happens in the greater story of A New Hope.

Change of Heart (Elizabeth Wein) – a look at the horrors one has to endure when working for the evil empire. Very well written.

Eclipse (Madeline Roux) – a story to humanize Leia’s adopted parents. It helps bring some human sympathy to a tragedy as large as the destruction of an entire planet.

Verge of Greatness (Pablo Hidalgo) – A Tarkin character study that shows his ambition. I’m curious if all this knowledge about Scarif is from Rogue One (which I have not seen) or from the Extended Universe.

Far Too Remote (Jeffrey Brown) – a one-panel comic about Leia’s deception about Dantooine.

The Trigger (Kieron Gillen) – an intergalactic Indiana Jones type gets caught up in the imperial sweep of Dantooine after Leia says that’s the rebel HQ.

Of MSE-6 and Men (Glen Waldon) – A story about the little mouse droid that Chewbacca yells at. At first I thought it was going to just be silly because of the subject matter, but then it turned into a story about a relationship between some folks in the imperial forces. And then it tied in again with A New Hope with the stormtrooper. Very clever, Mr. Waldon.

Bump (Ben Acker/Ben Blacker) – Once again we’re with one of the stormtroopers who Kenobi used the Jedi Mind Trick on. The authors use it to explore what it might be like to have had your will messed with like that.

End of Watch (Adam Christopher) – coincides with Han Solo taking over a section of the Death Star. I don’t remember there ever being women in the imperial military originally (before the prequels or tv shows).

The Baptist (Nnedi Okorafor) – Okorafor gives the monster in the trash compactor sentience and a purpose. And why not? It’s a sort of prejudice against non-bipedal creatures to think it’s just a monster. It also, and maybe I’m reading too much into it, read somewhat as a metaphor for slavery through kidnapping. Very neat story.

Time of Death (Cavan Scott) – Scott has Kenobi relive his live after death so we can learn why he never trained Luke.

There is Another (Gary D Schmidt) – about Yoda’s love in the first movie. Best part is that he would prefer to train Leia, not Luke.

Palpatine (Ian Doescher) – a fascinating and strange short in which Palpatine appears to exist in a Shakespeare play.

Sparks (Paul S Kemp) – a tale from one of the pilots who does the rebel run in the Death Star.

Duty Roster (Jason Get Fry) – This must be based on some kind of internet meme or old fandom thing – the whole Fake Wedge thing. Otherwise none of the setup for this story makes sense. But someone with the nickname “Fake Wedge” watches from the command center as the attack on the Death Star happens.

Desert Son (Pierce Brown) – Told from Biggs’ point of view as they storm the Death Star, it’s a mini-study in friendship, trust, and seeing your friends grow up. Well-written.

Grounded (Greg Rucka) – If Rucka’s never seen combat, he certainly writes like someone who has. He does a great job of depicting the grief that goes to the ground crew left behind while the soldiers go on to do their work. It does a great job of fleshing out the world of Star Wars without being as fan-service-y as the (for example) Cantina based stories above (even if those were really good).

Contingency Plan (Alexander Freed) – Perhaps partially because of the age at which I saw Star Wars (middle school – so somewhere between 12-14), while watching the Death Star battle I only thought of the consequences for the rebels who were right there in battle and on the moon of Yavin. This story shows what the consequences would have been for the entire Rebel Alliance had they failed in A New Hope. This is among the best of what these stories can do even while not necessarily being canon – bring more scope and emotion than an action movie can do.

The Angle (Charles Soule) – We check in on what Lando is doing when the rebels blow up the Death Star.

By Whatever Sun (EK Johnston) – A seemingly random pilot thinks about how she went from refugee to rebel pilot. Maybe she’s from one of the movies I haven’t seen?

Whills (Tom Angleberger) – A fun meta-commentary on the fact that the original script (before Anakin and Darth were the same person) was called The Journal of the Whills.

View all my reviews

Review: Soul Music

Soul Music by Terry Pratchett

My rating: 2 of 5 stars

This is my second time reading the book. Original rating was 4/5 stars

I’m surprised that I had previously rated this book as 4/5 because I don’t remember liking it that much. That was confirmed on this re-read. Yes, the book continues Death’s story from Mort, but so much of the story seems a retread. Once again Death stops being death for a while. This time it’s his granddaughter, Susan, who takes up the mantle. Sure, what she does with it is different than what Mort did, but it’s still repetitive. The rest of the book is mostly an excuse to have a bunch of band names that are plays on words from 1950s-1980s band names.

We follow Buddy of the Holly and his band as they introduce rock and roll to Ankh-Morpork and the surrounding cities and towns. The wizards also get into it and the magic makes them act like teenagers. Compared to Moving Pictures, the other media Discworld book, I like this one a bit more, but that’s because it stays in Ankh-Morpork and deals with the regulars there. Contrasted with other books that introduce modern tech like the telegraph, stamps, and money – it’s just not as much fun to read.

I think you could easily skip this one and not lose too much. I mean, you won’t know who Susan is when you get to Hogfather, but Pratchett usually does a good job of catching folks up.

View all my reviews

Review: Leviathan Falls

Leviathan Falls by James S.A. Corey

My rating: 4 of 5 stars

And so The Expanse is over (except for the Epilogue novella still to come). I think this was the perfect conclusion to the series, everything about it was the perfect cap to all that had come before. We even learned why the proto-molecule creator’s enemies were upset with them.

This book had less to say about humanity, technology, politics, etc than the previous books because James S.A. Corey have already said all they wanted to say. This was just the end to the story. The pace of the book seemed to me to be closer to that of the Imperial Radch series for a good chunk of the book. But that allowed JSAC to provide the appropriate levels of empathy with the protagonists for what was to come in the end. I think some of the neatest meditations in this book were explorations of what it would mean to lose individual identity and what it would be like for a civilization that arose from a slower-paced animal – analogizing, for example, to a tortoise society.

Overall, perfect end to the series.

View all my reviews

NYRR Gridiron 4 mile 2022

My second race for 2022 came right on the heels of the previous one. This time it was for the NYRR Gridiron 4 mile race. After this one I have a break for a little bit before the next race I’m running.

a self-portrait at the race with snow on my head
Yup, there’s snow accumulating on my head

This turned out to be my first race run in the snow. I got pretty lucky with my running wardrobe, but I’ll get to that in a second. Early in the week, I checked the weather to see what kind of running clothes to pack; there was a 17% chance of precipitation. Based on the forecast temperature of 33F (versus last week’s 18-22F), I was just going to wear the Tracksmith Brighton base layer, quarter-zip mid-layer, and tights. But I figured that it wouldn’t hurt to just bring my entire Tracksmith wardrobe. The night before the race I once again checked the weather. There was now a 50% chance of snow or rain. When I woke up, the forecast was now 90% chance. So I went with the same getup I had last week – the Brighton base layer, quarter-zip mid-layer, jacket, and Bislett pants. The jacket and pants are both wind and water resistant so I figured they’d keep me a lot warmer. The Bisless pants proved to be especially great to have because they have stirrups that keep the pants from moving up and, therefore, keep the legs from getting wet when it’s snowing. It was snowing when I left the house, on the train ride up to Central Park and as I warmed up. Luckily, the snow stopped right before race started and didn’t start up again until I was done.

At first thought I was going to be disappointed with my time. Not only was I trying to be cautious because snow (both melted and not) night make the course slippery, but I also got stuck behind a lot of slower folks; hemmed in. So i was stuck at a slower pace for the first 0.24-0.5 mile.

graph of pace as recorded by Garmin watch
pace, recorded by the Garmin I was wearing

You can see the long ramp up in the beginning to get to my desired pace. The variations are both related to the various hills on the course and to times where I got stuck behind someone again. I think the blip at 16:40 must be a temporary GPS error. If not, it probably reflects one of the times I had make a sharp turn on the course.

Speaking of the course, it was a nice course, taking us near the Museum of Modern Art. It was very pretty and I probably would have enjoyed the snow on the trees and grass more if I hadn’t been keeping my eyes on the road to keep from slipping.

NYRR Gridiron  4M GPS overlay on sat map
NYRR Gridiron 4M GPS overlay on sat map

Overall the course was not too slick as long as I stayed away from the edges where the water and snow pooled up.

Once again I was happy with my scores and got a much better pace than I thought I would after such a slow start.

NYRR Gridiron 2022 Race Stats
NYRR Gridiron 2022 Race Stats

For my first race under precipitation conditions, it went exceedingly well. I had a great time, but I can’t wait until my spring races start up! Here’s my post-race selfie – the slight difference in time/pace is due to the GPS measurements vs the NYRR course measurements:

NYRR Gridiron 4M Post-Race
NYRR Gridiron 4M Post-Race