MLB Spring Training 2025

In 2015 I started going to MLB Spring Training in Arizona. This is affectionately known as The Cactus League. Because there's a bunch of cactus everywhere. There's an east coast version in Florida called The Grapefruit League, which I suppose means there's a bunch of grapefruit in Florida. This post is an archived agenda so I don't have to argue with my friends about where we went previously.

Dates

  • March 5-9

Games

  • Giants vs White Sox at Scottsdale Stadium
  • Cubs vs Royals at Sloan Park (night game)
  • A's vs Guardians at Hohokam Field (rain delayed)
  • Rockies vs Rangers at Salt River Field (rained out / night game)
  • Cubs vs Mariners at Sloan Park

Lodging

  • 5119 E Winchcomb Dr, Scottsdale AZ

Food and Drink

  • Breakfast Club
  • STATS Sports
  • Chompies
  • Tapas Papa Frita at Southbridge
  • The Bread and Honey House
  • 12 West Brewing - Downtown Mesa
  • Mastro's City Hall Steakhouse
  • Snooze, an A.M. Eatery

Starting lineup board at Scottsdale Stadium

Music in 2024

Here's the 2024 musical brain dump. This is very much inspired by jwz's music wrap-up. I know there's still a couple of days left in 2024, but I doubt anything will get added. This is just in order from oldest to newest and I'm not including any commentary other than I'm going to see The Vaccines in Portland and K.Flay in Sacramento. Bands link to the best guess at their website and the ablum links to a service that will link to whatever your streaming service of choice.

Please enjoy...

Coding with Claude

There was something I wanted to and I really didn’t have time for a side quest, so I asked Claude for help. As with most of my coding side quests, I spend a lot of time familiarizing myself with Python, again. Then for this particular quest I would also have to interact with the GitHub API. Oh, and I should probably figure out python virtual environments, because why not?

Ugh, all I want to do is label a bunch of pull requests based on specific files being modified!

If you buy into the AI hype, we’re either weeks away from being replaced or have already been replaced and we just don’t know it yet. Yes, it’s tiresome. Welcome to Technology! So I just threw everything into a prompt to see what would come back and SPOILER ALERT, it wasn’t great. It didn’t even work. Now, that was my fault probably more than a little bit, as I had left out some key details, like authenticating with GitHub Personal Access Tokens (PAT) and that there were close to 10,000 pull requests in this repository.

But, hey…AI is super intelligent! Except, this isn’t artificial intelligence, it’s generative AI. It’s probabilistically picking the next best token based on the garbage input I gave it. Over and over until it’s “done”, at which point it tells you that it’s done and everything is awesome.

A small aside, that most chat bots are so “happy” when you point out how wrong they are is irritating.

It never asked questions to get more context, to get a deeper understanding of the problem domain, or even to think of cases where the generated solution might not be a good solution at all. Nope, it needed to spit out text that would likely be interpreted by the python runtime. Which, that it’s even this good at doing that is truly wild. And yet, I was not feeling great about completing my side quest.

I then threw away everything and decided to start over and be more helpful to my partner in crime. The first iteration was just using a PAT to connect to GitHub and print out basic repository information. It worked! Okay, now let’s get the ten latest pull requests and print them out. It worked! Okay, now let’s test if any files in a specific directory were part of the pull request. It worked! Everything’s coming up Millhouse.

Now we come to the part where the basics are handled and you run into the cold, hard reality that the API doesn’t really handle what you want to do and that you’re going to need to get creative. Unsurprisingly, Claude was not very creative at coming up with solutions. Luckily, Claude had a partner that could help with the problem, which was that we were looking at going through way too many pull requests. Maybe we can batch them? The API supports pagination! Oh, but we still just paging over 10,000 pull requests.

Claude wasn’t aware that I really only wanted to label pull requests after a certain date. So, I provided that detail and we still ran into roadblocks, which I believe are mostly inherent either in the GitHut API or in PyGithub. Again, this was a side quest and I didn’t want to spend a ton of time on this, so we turn to hacks! I knew the ID of the pull request that would be the starting date and I just told Claude to start at that ID and then incrementally iterate through pull requests until we processed them all. It worked!

There’s still tons of problems, the most glaring being that if you don’t stop the script it will just keep trying to request pull requests that don’t exist because error checking is for humans I guess. I can imagine Claude yelling at me, “well, you never asked for error check you idiot. I would have been happy to provide that but noooooooo, you didn’t seem to think it was needed.” There’s a parable here about turning the implicit into the explicit, but that’s out of scope.

All this is to say that, at least for me, slowly walking through a process was far more effective that trying to get it to do everything at once. Anybody that has learned how to program, or even just solve problems, will say, “well, of course you should work in small incremental chunks” but the AI hype is working against that. There’s also the inference cost and context window growing too long, so much that Claude told me I should start a new chat because this side quest was going to blow through my quota faster.

Side quest, completed.

I Finally Got Covid

It's weird to finally get COVID-19, seeing as how it's June 2024. It was a good run, while it lasted. Having gotten the original vaccination and every available booster they would let me take, it hasn't been anything other than my standard summer cold. What's my standard summer cold? Two days of agonizing nasal congestion that prevents me from getting any meaningful amount of sleep and then 5-7 days of a rib-cracking cough.

Which, is what I'm going through now.

A COVID-19 test strip showing a positive result.

Yes, as soon as I started feeling symptons I masked when I went out. I didn't even think to test until Kat suggested it. That probably cost me two days of knowing, but...I'm not sure what I would have done different. Maybe I would have tried to get one of the anti-virals? I don't know.

I have noticed that trying to keep my blood sugar down has been...challenging to say the least. I'm having trouble finding the studies, but the gist is that the inflamatory response impacts how the body uses insulin which can lead to higher blood sugar. CAN CONFIRM! Keeping my sugar down has been tough and super frustrating for me because I typically has this very dialed in and completely under control. Very, very frustrating...

But, even though I finally did get COVID, I feel confident that my case is relatively mild is thanks to vaccines. Fuck yeah, science!

EV Data Update

A few years ago, Kat got a Volkswagen ID.4. It’s our first electric vehicle of any kind. With the purchase came three years of free charing from Electrify America. Fun fact, Volkswagen created Electrify America as part of their settlement with the EPA around Dieselgate.

The CAA 2.0 liter partial settlement requires Volkswagen to invest $2 billion in ZEV charging infrastructure and in the promotion of ZEVs.  The ZEV investments required by the CAA 2.0 liter partial settlement are intended to address the fact that consumers purchased these illegal vehicles under the mistaken belief that such vehicles were lower-emitting than others. Electrify America, LLC, was created by Volkswagen Group of America to implement this requirement.

But, that’s not why I bothered starting to write today. Today we’re going to run some numbers!

In the three years that we had free charging:

  • 6388.43 kWh
  • 176 charging sessions
  • 25,854 miles driven

This, on average, gets us 144.44 miles per charge and about 4mi/kWh. If we had paid for this, assuming an average price of $0.50/kWh, that would be about $3,200. Not bad. Please keep in mind these numbers are all based on averages and some charges got fewer miles due to average speed (going fast is bad for EV mileage as well) , temperature (too hot is bad, too cold is bad), and did we do more uphill then downhill (going uphill is hard, thanks a lot, Gravity). On that last you you can reasonably argue that it all buffs out as we eventually return home, so we did as much downhill as uphill.

At the end of the day it costs, ignoring everything but electricity, $0.14/mi to use the ID.4. In comparison, my GTI costs $0.17/mi.

The Black Keys – Ohio Players

I'm not the biggest Black Keys fan in the world, but I'm really digging their new album, Ohio Players. The first track is constantly in my head.

I can't tell if this is a Miller High Life commercial or a family vacation from one of my friends. While you're on YouTube, do not miss this hilarious video from the same album. Be sure to watch all the way to the end for the amazing cameo.

The 2023 NFL Betting Spread

Overall

Underdogs beat the spread 126 times (46.3%)
Favorites covered the spread 140 times (51.5%)
There were 6 pushes (2.2%)
Last year was 144/118/9

A pie chart showing the percentage of favorites versus underdogs.

This is a pretty big swing from last season, where the underdogs beat 53.1% of the time.

Large Numbers

The largest spread this year was 16.5 in the Week 10 matchup between Dallas and the New York Giants. Dallas covered that spread. Dallas had the highest spread in 2022 as well.

Common Numbers

The 3 point spread roars back into top pick of Vegas and went 27-16 to the favorites. The adjacent spreads of 2.5 and 3.5 went 18-17 and 14-14 respectively.

Odd Numbers

Let’s face it, the underdogs had a rough year, but the one bright spot was at 5.5 where they managed a 13-9 showing. Well done, all you 5.5 underdogs! The 8.5 spread also had a 6-2 for the underdogs and the 7 spread was 7-3 for the favorites. Again…rough year to be the underdog.

Favorites

This won’t console any 49er fans, but they were favored in every single regular season game and covered the spread 11 times to take the crown. Dallas and Detroit tied for second with 10 covers as favorites.

Buffalo and Green Bay tied at 8 for failing to cover the spread. But what, where’s KC because we know they suck at beating the spread as favorites! They failed to cover 7 times, so…they were in the running and they were favorites 16 times. Woof.

Underdogs

Arizona, Chicago, and NYG tied for first at beating the spread as underdogs with 8 a piece.

Carolina, last years darling at beating the spread as an underdog, failed to cover 11 times. Ouch. The closest teams were Arizona and Tennessee with 9 failures. Yes, Arizona was the underdog for every regular season game, good catch.