YouTube, svcs, Pull Requests, … omg So Many Things
Greeting friend!
It’s been a minute. Last time, I wrote right before EuroPython 2023 in Prague – and while attending, I got many compliments that my newsletter is fun to read, strengthening my resolve to write more. That was July.
And it’s weird because I enjoy writing to you, my friends! It’s less pressure than crafting precise words in blog posts that are always at risk of being “misunderstood” by professional pedants on orange-tinged websites. In many ways, it’s also cathartic because I get to finish thoughts I’ve had since the last time I wrote. But obviously, that’s not always comfortable, and I guess that’s something to ponder.
Well. At least I’ve got a bunch of things to write about!
How a Misunderstood Python Package Made Me a YouTuber
Readers of the first hour might remember that I’ve been flirting with the idea of starting a YouTube channel for a while. Readers of the last issue might remember that I observed a significant loss of reach with my blog posts after Twitter’s loss of relevance and that it’s getting more challenging to get my talks to conferences.
If I weren’t too lazy to write more, you would already know about my latest and greatest Python project: svcs, which is a service locator for Python. Given the Python architectural landscape, I found it extremely difficult to explain to people, especially in writing, what it’s good for and why it’s cool. Without exaggeration, I spent more time writing the docs than writing the code, yet it never landed1.
So, I’ve decided to tackle all three problems simultaneously and set out on my Autumn 2023 project: produce a video introducing svcs. In the best case, I’ll get into video production, learn new skills, and have a new creative outlet. In the worst case, I’ll have a video I can link from svcs’s README.
The jury is still out on where the project lands, but I can say already that I have never gotten so much positive feedback for anything I’ve done that I could remember. If that was you: Thank you so much!. The endorphins were real! And it’s been kinda surprising to me given my radio face and newspaper voice/accent – I never expected anything featuring those two aspects of mine would be interesting to anybody – but we live and learn! What I do like is that it allows me to let in more of my personality and silliness than when writing, so I’m curious if this thing has any legs.
I’m also grateful for how supportive my friends are – to the point of bullying. This video wouldn’t be possible without Łukasz Langa constantly kicking my butt to work on it, creating the credits music, and last-minute fixing the sound levels while keynoting PyCon Thailand. And a special shoutout to Lynn Root for creating svcs’s awesome Bestagon logo (she also created the new structlog logo which is even more amazing:
A+, can’t recommend enough having artistic friends if you can’t draw a straight line or clap on a beat.
Anyhow! Here’s the video that took me 2.5 months to create because everything is always much more difficult than expected:
As of writing, the video has just over 950 views – I’m sure y’all can help push it over? And, of course, please consider doing the regular like and subscribe stuff that friends do for friends. 😇
If there’s interest, I may write about my setup in the future, but to answer the most obvious question: it was filmed on an iPhone 15 Pro Max (don’t buy FILMiC Pro) because I do not own a video camera. And my biggest challenge was my tiny flat and finding a background that was not too noisy.
Anyhow, let me know what you think! I’m already aware that I swallow too many words, slouch too much, and shouldn’t put any text where the subtitles go, but I’m open to more observations. The reply button is right there!
The next one will be on loose coupling and the delineation of dependency injection, service location, and if there’s a difference in practice!
“I had no idea you’re Czech!”
That’s a sentence I’ve heard many times – once in the variation “You didn’t lie about being Czech!”. Apparently, it blew some minds when they heard me actually speaking Czech2. :D
EuroPython was in my birthplace I left when I was seven, which came with all kinds of emotions, some of which can be observed in the video of my talk others I’ve tried to express on the train home3.
There is only one thing that I dread: not to be worthy of my sufferings.
— Viktor Frankl
One thing I touched in there is something I got reminded in the hallway track: It is incredibly vital for humans who spend a lot of time volunteering for a community to actually meet the community. I’ve talked to other people who spend a lot of time serving communities, and we all agreed on how hard the video call times have been on us – feelings of directionless sadness, bordering on depression.
Meeting the people you serve and feeling their appreciation is as energizing as you can imagine because the work becomes meaningful. While conferences will have to reinvent themselves, I cannot stress enough how vital face-to-face meetings are for the mental health of the people serving the community and, therefore, the community as a whole.
It was also great to come back to Prague and see how the city has improved since I was there in the mid-2000s. Only one thing: stop pretending Trdelník is in any way traditional Czech. I heard of it for the first time at a Christmas market in Berlin, and now Prague is full of “traditional Bohemian specialty”. It’s Slovakian. I don’t like it either, but we have to deal with it.
It was also great to connect to the Czech community, and standing with them together at the end in a beer garden gave me unexpected pangs of belonging that I still haven’t fully processed.
Another ZIRP
What’s not going great is that FOSS sponsorships have gone to the cellar all over the board. I have lost ~50% of my GitHub income, and even high-profile projects like OctoPrint or urllib3 report similar numbers.
This is probably the result of the recession and stuff just got hard for everybody. Educators are also reporting having a hard time with corporate budgets slashed. Since I know that both former and existing sponsors are subscribed here: Thank you so much to both – and those who got into financial hardships due to… points at everything, I hope 2024 will be kinder to you.
While this sucks for me individually, it gets me even more concerned about the fact that FOSS sponsorships turned out to be another Zero Interest Rate Phenomenon. I hope everything will bounce back when times get a little more precedented, but I can’t help being a tad cynical about it.
PyCon UK
PyCon UK was absolutely phantastic. It was the first time I’ve attended, the venue was gorgeous, and I was immediately warmly taken in. I’m 100% coming back.
Giving my 45-minute talk without pressure revealed the actual length is 60 minutes. The room was packed, and the discussion afterward was insightful and interesting.
I even got to finally punish Harry for the template subclassing in his otherwise excellent book:
(Plot twist: he works for Kraken now.)
I’m immensely grateful to have experienced speaking in such a setting, and it only showed me what I’ve been missing in the past years. And spending my first night in a British pub, yelling at each other such that we had no voice the next day for the first time is a memory that I also will cherish.
As announced in the last newsletter, I’ve financed this trip entirely from my GitHub Sponsors income, so thanks again to everyone who made it possible!
And because it was so good, I’ve decided to spend more of my sponsorship money on going to smol conferences and have booked my flights to PyCascades! Sadly, their talk slots are only 25 minutes, so I’m not speaking. But I’m looking forward to meeting old and new friends and seeing Seattle!
Tidelift Blog Feature
Speaking of sponsorships: After complaining about the rising expectations from enterprise users on FOSS maintainers, I was approached by Tidelift and asked if I’d like to write about it verbatim for their blog. And I did: Not all open source work is equal4.
There’s not much more to add except that I’m super grateful for their continuing support!
Don’t Start Pull Requests From Your Main Branch
I’ve got only a short blog post for you this time that I was compelled to write after having to help a contributor through some painful repository surgery, and my plea resonated on Mastodon widely among fellow maintainers:
Don’t Start Pull Requests from Your Main Branch
Read it, share it, link it – you can save someone from themselves!
Tidbits
I have enough tidbits for a book, so I’ll have to edit myself heavily:
TILs
- How to Stop macOS from Stealing Focus after Switching Apps Across Desktops: Oh my god, this one is huge. I’ve been running into this bug for a few years, and only very few people seem affected by it. Shortly: switching apps across desktops causes the window manager to steal focus from the new app, and you must activate it again. I’ve solved it. I’m so happy. Keep an eye out for people complaining about this and send them my way – there’s nothing on the web otherwise.
- What to Do If a Beryl AX Can’t Connect to a Wi-Fi: I’m very much on the record on being completely in love with this device, and if I were getting provision from sales, I’d be retired by now. But there’s occasionally the slight hitch where I couldn’t connect it to some hotel Wi-Fi (usually ones with a captive portal). But I’ve figured it out, and it’s already one of the best-performing articles on my blog, so I guess I’m not alone.
FOSS
- I’ve already mentioned svcs. I think it’s a big deal. Check out the video and/or the Why? chapter of the documentation. Your company probably already has 1–4 worse bespoke implementations of it in production.
-
stamina was surprisingly successful! Given how low-key I’ve been playing it, I was surprised I got approached because of it several times at conferences!
I keep being baffled by how the more conventional a project is, the more successful it is. Apparently, I’m not the only one copy-pasting Tenacity configurations around! Since July, it has grown configurable retry hooks and Trio support, which both are pretty cool, if you ask me.
- structlog has grown many new features regarding its console output – and I plan a final 23.3.0 release this year after I’ve merged the PR that gives users complete freedom in formatting their events. The console renderer started out as an afterthought, but somehow, it’s become a prime feature attracting the most interest! In that sense, 2023 has been a game-changer.
- Heads up: if you followed my How to Ditch Codecov for Python Projects guide for collecting Python coverage across GitHub Actions runs, do not update to
(upload/download)-artifact
to v4. GitHub has thrown us a major curveball and only thought about helping to mitigate after being yelled at for days. I’ll need to update the guide when I have time.
Picks
Just a quick list of things that really impressed me:
- The aforementioned Łukasz has started a great new podcast with Pablo Galindo Salgado of Python 3.10 & 3.11 release manager fame. It’s called core.py, and they discuss various topics around Python core development and already have an impressive 5 episodes out. Highly recommended!
- I have just started watching The Bear after hearing about it for the first time because it got an Upgradies award, and holy shit, this is one of the best, most intense shows I have ever seen. Like, I wasn’t bored for a second, and I’m halfway through season one. If you knew it’s this good and didn’t tell me: shame on you! It’s streaming on Hulu/Disney+, which has another recent-ish favorite of mine: Only Murders In The Building.
- If you have a Mac and use Docker for Desktop, I beg you to try OrbStack. Firstly, it’s update works! But even other than that… it removed all frustrations I’ve had and even has terrific virtual machine capabilities – with full Rosetta support and easy inter-vm communications! It even doesn’t consistently peg the CPU at 20% just by running an idle container – imagine that! This is a beautiful example of a whole class of problems just going away. It’s not free, but so is your mental health.
-
There are a lot of read-later apps out there, but for me, they all suck. I can’t get over how incredibly bad the text extractors especially from Pocket and Readwise’s Reader are. I’ve tried them with all kinds of texts I read, and all of them misparsed stuff, removed essential content, and so forth. And if I don’t trust the reading app to show me what I’m reading – what’s the point!? And instead of improving on that or reacting to my reports, they’re now busy adding AI tools to it. Cool.
Enter Omnivore. I’m even a bit afraid to praise them because I’m mortified they might take the wrong turn if they ever get successful, but: They’re open-source, their parser will rather leave in an ad before it removes vital information, and they make it very easy to switch to the original web page if something is sus. In Readwise’s Reader it’s like five taps and it’s infuriating. It’s currently also free.
- I’m loosely involved with my friend Caspar’s KeepTheScore. If you ever need a cool online scoreboard, check it out!
Alright, this has to do! I wish you happy, drama-free holidays, and let’s hope 2024 is gonna be a bit less of a tire fire than 2023 was!
Cheers (the joke Tweet I always linked here has been deleted 🫡),
—h
-
To be clear, this is not new to me! I was getting blank stares and resistance for attrs and structlog too. Both of which are staples and models for other projects now. But somehow attrs compelled some dude to write a blog post just to make clear he’s not gonna use it because reasons. ↩
-
When I say English is my third language, this is numero uno. ↩
-
If you didn’t know: Mastodon has (opt-in) search now!
from:hynek prague
and I had it! 🥳 ↩ -
I’ve just noticed that they misspelled my name – let’s see if I can get them to fix it in the middle of the Holiday season ↩