poetry auth via .netrc

poetry, the python package manager, provides several ways of authenticating against a repository. What isn’t explicitly documented, because it’s an implicit dependency, is that poetry can also use the ~/.netrc file for authentication when fetching packages.

poetry uses requests under the covers, and requests falls back to the ~/.netrc file. This is the same fallback method for pip for the same reason.

There are several (probably bad) reasons why someone would want to do this vs one of the explicit methods given by poetry. One that comes to mind is needing to install python packages from a private repository from inside a docker container by simply volume mapping the host’s ~/.netrc file to have poetry use the right creds.

This approach probably won’t work when publishing packages — caveat emptor.

While I’m not suggesting that this is a best practice, it’s good to know that it’s an available method in some extreme edge cases.

Sonos, Plex, and “Unable to browse music” on artist search

It’s taken me several months to connect the dots, but I’ve finally figured out why sometimes Sonos is unable to browse music from Plex artist search results. And it’s all about having multiple libraries in Plex.

The problematic behavior is this scenario:

  1. In the Sonos app, search for an artist on Plex
  2. Sonos shows the results successfully
  3. Click on the artist
  4. Sonos returns “Unable to browse music”

If, instead, you search for an album you can click on the results, see the tracks, and play the music. Sometimes this seems to work, sometimes it doesn’t, and it’s taken me months to find the pattern.

The problem is that my Plex system has two libraries: mine and my husband’s. Overall Sonos handles this well and we can play whatever music from whatever library.

But while artist searches are scoped to all libraries in Plex, browsing artist results is only scoped to the current Plex library. If the current Plex library contains the artist you can browse the search results. If not, you get the “Unable to browse music”. If you change the Plex source to the library with the artist it will work again.

I’m not certain if this is a limitation in the API that Sonos is using to interact with Plex, or if this is a bug in how Sonos is using that API, but knowing what the problem and how to work around it is a start.

Lemon Poppy Seed Bread

This recipe is from my Granny Dot who died last year. I’ve been missing her lately and decided tonight was the night for her Poppy Seed Bread.

I’ve annotated where my version differs from my Granny’s with *. See the bottom of the post for details on her original version.

Lemon Poppy Seed Bread

Makes 2x loaves (8.5″ x 4″ pans) or 1 bundt cake.

Bread

  • 3 c white flour
  • 2 1/4 c sugar
  • 1 1/2 tbsp poppyseeds
  • 1 1/2 tsp baking soda
  • 1 1/2 tsp salt
  • 3 eggs, lightly beaten
  • 1 1/4c milk*
  • 1/4 c lemon juice*
  • 1/2 c vegetable oil*
  • 1/2 c butter*
  • 1 1/2 tsp vanilla extract
  • 1 1/2 tsp almond extract

Preheat the oven to 350 degrees. Butter and flour the 2x loaf pans or the bundt pan, whichever you are using.

Mix dry ingredients (first 5) together in a mixing bowl. Add in remaining ingredients and mix well. Place the batter in the loaf or bundt pans (if using the loaf pans, split the batter evenly between them both).

Cook at 350 degrees for 60 to 65 minutes until a toothpick comes out clean. Let cool completely in the pan.

Note: non-dairy milk and butter works well in this recipe too.

Glaze

  • 3/4 c sugar
  • 1/4 c orange (or lemon) juice
  • 1/2 tsp vanilla extract
  • 1/2 tsp almond extract

In a sauce pan, bring all ingredients to a boil. Pour over bread in pans.

Cool for 5 minutes, remove from pans, and cool completely.

Changes from the original

My grandmother’s original bread recipe has no lemon or butter in it, somewhat surprisingly, and instead uses 1 1/2 c milk, 1 c vegetable oil, and 1 1/2 tsp butter extract.

The original glaze recipe also calls for an added 1/2 tsp butter extract.

Casey’s 2021 Playlist

Time dilation during the pandemic has been a very real thing for me. 2021 feels like it’s lasted both 4.3 days and 43 thousand years. And somehow this year’s playlist was crafted during that window and yet is only 43 minutes long.

  1. To Live – Norah Jones
  2. Perfect to Me – Anne-Marie
  3. Good as Hell – Lizzo
  4. I’ll Be There – Jess Glynne
  5. Juice – Lizzo
  6. Walk Me Home – Pink
  7. Cups – Anna Kendrick
  8. Farther We Go (A Capella) – Walk off the Earth
  9. Happy Now – Pentatonix
  10. Better Days – Ant Clemons feat. Justin Timberlake
  11. Epiphany – Trent Reznor and Atticus Ross (from the Soul Soundtrack)
  12. Just Us – Trent Reznor and Atticus Ross (from the Soul Soundtrack)
  13. Fate – Rui Fujishiro
  14. Happiness Does Not Wait (2021 Version) – Ólafur Arnalds

Every year’s playlist ends with an instrumental track, but this year features 4 of them. Sometimes when I get really stressed out — which has happened a lot during the pandemic — I’ll go into a dark room, sit on the floor, play those 4 tracks, close my eyes, and just breathe.

You can listen to the songs on Spotify. As always, the order of the songs has been carefully curated. You may not be able to listen to them in order with the Spotify free account.

You can find prior year playlists under the mix cd tag (yes, they’ve been going on that long).

Bye ExtraHop, hello Invitae

I’m excited to announce that I am starting a new job with Invitae as a Staff Software Engineer in their Office of the CTO on Monday, Sept 27th. I’ll be helping teams across the engineering organization solve intractable problems, foster the use of software development best practices, assist with designing performant & scalable architectures, and just rolling up my sleeves and helping out. I’m looking forward to a new challenge on a team with a broad mission.

I’m very sad to be leaving the wonderful people at ExtraHop, in particular my amazing Perf & Tools team. It’s been a fun 2.734 years and I got to work on some company-changing projects like Reveal(x) Cloud, ExtraHop’s first SaaS product, which we developed and shipped in just 4 months. I still heartily recommend ExtraHop as a company.

My last day at ExtraHop is this Friday, Sept 10th then I have two weeks of funemployment before starting at Invitae.

Pottery Journal

I’ve been throwing pottery for ~19 years. Since 2006 I’ve kept a journal of my pieces to help me track them through the multi-staged process and remember what I’ve done for each piece.

I started doing this when I was throwing in teaching studios to track pieces going in and out of the kilns. In teaching and community studios everyone’s dry pieces get put in the same rack to get bisque fired. If you didn’t keep a record of what pieces you had getting fired you would lose them! Similarly everyone’s glazed pieces would get put on the same rack before getting glaze fired which could take many weeks and it was easy to forget what you had coming out of the kilns.

I quickly started adding what glazes I used on each pieces as well, so if something came out particularly good, or bad, I could remember what I had done for next time.

Since I’ve become a home potter I’ve also started keeping track of the clays I’m using. This was less of an issue when working with teaching or community studios where they often only have one white/porcelain and one blush.

As an example, here is a small bowl that I threw recently and the markings on the bottom:

The stylized K (actually a K made with a C — KC, get it?) is my potter’s mark so I know that piece is mine. The pot has the year it was made and a number that I increment for every piece in the year. This was the 18th piece I threw in 2021.

Here’s the journal entry for the piece in the 2021 section:

bowl-journal

My handwriting is horrible, but it includes the number (18), a short description (small bowl with foot), the clay (SEA Mix 5), the dates that it went into the bisque (BI), out of the bisque (BO), a missing date for when it went into the glaze fire (GL), and a final date when I got the finished piece back (F). Perhaps most importantly it includes the glazes that I used (Snow with a splash of Mulberry under) and what I thought of it (Lovely!).

Pieces get added to the journal after they’ve been successfully trimmed since that’s when their life really begins.

While the journal is for me, one of the side benefits is that I will often encounter a bowl that I made for someone and turn it over to see when I made it. And while it’s rare, there have been times where I’ve wanted to replicate (or try to replicate, this is pottery, let’s be realistic) the glazing of a piece and I’ve had the records to duplicate it.

I also laugh at myself thinking that sometime in the far future some art historian will be cataloging my pieces and be able to quip with gusto “oh, a 2013 — this was his black on porcelain period”!

Adult Cherry Cokes

I’ve loved the cherry cokes from Sonic Drive-In forever, but sometimes you want something that has a bit of a kick to it for those pandemic Zoom happy hours. My BFF made this upscale, adult version of a cherry coke which I heartily recommend.

Adult Cherry Coke

Mix the liquid ingredients together in a tumbler and then add the ice.

If you want to make it even better, use drive-in ice (for that real Sonic experience) and top with a Luxardo Maraschino Cherry.

While you may be tempted to skimp and use an inexpensive grenadine like Rose’s, don’t. The pomegranate flavor is what really makes this drink so don’t compromise on it. Similarly those bright red “maraschino” cherries from the grocery store aren’t doing you any favors either — go for the real deal.

Saving my risk points for friends

Since being fully vaccinated as of Memorial Day we’ve enjoyed sharing indoor airspace, hugs, and meals with a few vaccinated friends. While many folks are rapidly ramping back to large groups and ambitious travel, we’re saving our risk points for those more intimate encounters with friends.

Daniel and I have been pretty risk adverse during the pandemic — for our health as well as our community’s — and that’s likely to continue for many more months. We’re eating out a bit, but only outdoors. We still wear masks in the grocery store and continue to limit our time indoors in public. And while I would truly love to hop on a plane and go somewhere, we’ll be staying close to home for the next long while.

Why so reserved if we are both fully vaccinated? Because we know that breakthrough infections happen even if those aren’t life threatening (thanks vaccines!) and Delta is on the rise. And while it appears that breakthrough infections are unlikely to result in long COVID, it’s still a bit too early to tell for sure. Most importantly we want to continue spending time with friends and their young kids who are still not eligible to be vaccinated. I simply can’t risk being an asymptomatic carrier for others.

So while it would be awesome to get back into the gym, see Black Widow in the theater, or see the upcoming Acrobatic Conundrum show at SANCA we’re saving our risk points for spending time with close friends over dinner and board games.

Dear brain: the pandemic isn’t over; get your shit together

I received my first COVID shot on Monday and all week I’ve been fighting my stupid brain. I guess I’ve been buckling down for 13 months with the objective of “just need to get vaccinated”. And now that I’ve gotten one single shot my brain is telling me “woohoo, time to live again!”.

But of course I have 5 more weeks and a second dose before I’m fully vaccinated. And even then life doesn’t “return to normal” as I have several friends who won’t be fully vaccinated by then. Not to mention necessary and sensible precautions to help protect others in our community, including the families of our friends with young kids.

The gorgeous, sunny, warm weather this week has only made things worse, oddly.

All week I’ve been simultaneously delighted and distraught.

Beware the blues after your first post-COVID gathering

We’re all anxiously awaiting being vaccinated and finally getting to visit friends in person after more than a year of social distancing. Be prepared for a bit of an emotional rollercoaster — up and down — on that first post-COVID gathering.

A month ago our good friends K & M reached out and asked if Daniel and I were interested in getting together for several days of visiting, food, board games, movies, and visiting after some mutually-agreed-upon quarantining prior. All 4 of us are fully work-from-home and have been following very similar stringent quarantining protocols for the past year which certainly made things simpler.

Daniel and I readily agreed and we had several Zoom visits discussing what “super-quarantining” (my wording) meant to all of us. We then super-quarantined for 2 weeks before Daniel and I drove out to their place for a delightful 5 days. Our car was loaded with food & board games we got to share with others at the same table.

The visit itself was amazing. By the third day I had, surprisingly, stopped even thinking about the pandemic and analyzing every decision to see if it was a safe one. It was like the Before Times!

While I anticipated some initial anxiety on seeing them in-person (OMG: inside with people without masks!?), and the heady high from eating at the same table, I was not prepared for the extreme emotional drop the day after we got home.

And wow was there an emotional drop! We got home on a Wednesday evening and Thursday was the most depressed I’ve been in a very very long time. It wasn’t any one thing — or maybe it was everything? Maybe it was because I was coming back to being stuck in my house and working from my basement for an unknown number of weeks (months?). Maybe it was because I had a taste of the Before Times and the transition back to the now-COVID Times happened in 12 hours instead of 12 months. Regardless, I was not prepared for it and it was a very dark day.

Friday, the day after, was better. Saturday I felt like a new human being. Actually, I felt better than I had in a very long time and that mental state has stuck with me these past few days. It’s as though I finally remembered what hope was. I remembered what life was like before COVID and the knowledge that something like it was in my not-too-distant future.

When you have your first post-COVID gathering, I hope it is joyous and everything that you were missing for months. Plan to give yourself some space and time a few days after for some transient blues.