Podcast Appearance and FOSS Navel-Gazing
Happy belated New Year dear friend,
I hope 2022 is treating you better, than its nasty cousins 2020 and 2021! Last time I was wondering where Omicron will take us and so far, it looks promising! While almost everybody I know had it (or have it – get well soon George!), Berlin has already peaked and I'm fully-booked for PyCon US in Salt Lake City and PyCon Italia in my beloved Florence, and I'm writing this to you to procrastinate on packing for Cabo Verde – my first trip outside of the EU since 2019.
As for conferences, I won't write a regular talk this year (that's something I decided last year, given the uncertainties and the work I put into my talks), but my friend Christian has tricked me into agreeing to give a lightning talk about Don't mock what you don't own. after shitposting about it. Might get good!
I certainly hope that conference season 2023 will allow me to return to the stages in more profound ways. I have some interesting ideas lined up.
Talk Python To Me
I was a panelist on the biggest Python podcast, talking about Running Python in Production along with my very good friend Glyph and the wonderful Emily Morehouse-Valcarcel:
Episode #352 Running Python in Production - [Talk Python To Me Podcast]
Do we talk about running Python in production enough? I can tell you that the Talk Python infrastructure (courses, podcasts, APIs, etc.) get a fair amount of traffic, but they look nothing like what Google, or Instagram, or insert [BIG TECH NAME] here's deployments do. Yet, mostly, we hear about interesting feats of engineering at massive scale that is impressive but often is also outside of the world most Python devs need for their companies and services.
It's an hour long, but I had notes for at least another 5h of podcasting and Glyph told me he felt like we were just getting started too. 😅
It was quite obvious who of us four is used to be on video calls and it's not me. While I have a decent microphone (Yeti X), I didn't have a boom which meant I had to lean forward when talking which made me high-pitched and cramped, sounding like I'm holding my breath. The fact that I don't get to talk English a lot lately, courtesy of COVID, and the fact that I'm tired at 8pm gave me the rest. I mean behold Valley Hynek in his full glory:
https://twitter.com/pgMustard/status/1492633145748951047
The late recording time, however, also offered some comedy gold: I've got home automation to save electricity and it includes switching off the power of my computer at 8pm. That of course was in the middle of the recording. You can see it on the YouTube recording: first my feed freezes, then you see me frantically trying to get power back on my phone, then my feed goes black, because it switches stuff around, then the monitor illuminates my face again, and I make a very relieved face. Fortunately, it's a notebook which is probably the reason why the connection didn't really die and my recording was intact.
But all in all after skimming the livestream, I went rather deflated out of the whole thing.
Fortunately, in the final podcast, I don't sound quite as bad which already made me thank Michael for the post-processing. ?ukasz, who actually knows a thing or two about sound, was also kind enough to help me find a boom and shock mount, so I hope at least that part will improve with my next audio recordings.
Which there might be more of in the future! I've spent money on this stuff, so why not use it. Given the uncertainties around conferences, I'm also currently exploring whether it would make sense to branch out and transform some of my blog posts into YouTube videos. I feel like I could reach a new audience and honestly I'm rather frustrated by the non-conference Python content there. Given the incredible growth Python went through in the past years, a lot of content mills and opportunists are jumping on the bandwagon with sometimes horrifyingly bad content that is very well-produced and looks deceptively legit.
I'd be interested to hear from y'all what you think about that, but of course it sounds like a lot of work.
import attrs
I've also published a blog post in December! I didn't send out a newsletter about it, because I've already sent one that month and because the post by itself is rather navel-gazy and I didn't have much director commentary to add:
import attrs
An attempt at catharsis. This is a deeply personal blog post about the most influential project I’ve ever created: attrs, the progenitor of modern Python class utilities. I’m retelling its history from my perspective, how it begot dataclasses, and how I’m leading it into the future.
As the lede gives away, I didn't even expect a lot of people to read it and the fact it got quite a bit of positive feedback was genuinely heart-warming to me!
The article traces back how I've created attrs, how I helped Guido and Eric create dataclasses, and how I got screwed over subsequently. Writing it out helped me dealing with it better, especially because I can now just point at an URL, even though I can't name actors.
Finally, it shows off attrs's new APIs that I've been talking about in the last newsletter (and in the past years, no less) that also have been enthusiastically received, which was great given how much time and agonizing went into it. I honestly felt like I've missed the opportunity window.
I'm glad this post exist, I'm even more glad that people read and like it. Either way, it's a historic document.
Tidbits
TIL
I've been a bit lazy – only two new TIL posts:
- How to properly conditionally import types across different Python version.
- How to work around flaky Eve Extends. Yes, it's obscure, but may save someone a lot of headaches which makes it worth it.
FOSS
- attrs: well, duh. :) As teased in the last newsletter and elaborated above: 21.3 (and due to a minor regression 21.4) is out and took attrs into the future. Since I've been sitting on the release for a long time, due to
import attrs
, the release would've been impressive even without it. - prometheus-async: I've tried to drop wrapt (it's great, but resulting callables aren't pickleable and
ParamSpec
needs*args, **kwargs
), learned again how difficult it is to write a proper decorator in Python. After two attempts to rewrite it, I gave up, but expect a blog post in March. :) Anyhow, 22.1 with full type hints and OpenMetrics exposition is out. - structlog: December was busy and there was one more release: 21.5 with a bunch of long asked for features like a logfmt formatter and tools to automatically extract metadata from the call site.
Bonus Art
I wrote my first Haiku (the hours of Ghost of Tsushima finally paid off) and I've dabbled in painting.
Best,
—h