Tomorrow (in my timezone) is my birthday, so I wanted to get a post in while I’m still 42. I see it’s been another 13 months since my previous posts - hopefully I can break that pattern this year. Fittingly, it feels like I’ve discovered some profound answers in the past year, and yet I’m still left with lots of research to do.

So, a recap of some notable events.

On Mar 8, 2023, I joined the official Python Discourse forum, hosted on the official Python website. I had been trying to hunt down some information about why the Python included with my Linux distribution didn’t appear to have any Tkinter-related functionality, and found a lot of old, disorganized Q&A on Stack Overflow, mainly from beginners who were failing to import turtle for various reasons. On the 7th I posted on the official issue tracker, seeking improvements to the documentation, and found out about the Discourse forum from there. (The link is really not so easily found on the main site; but it was still stunning to learn that this forum had existed for years - from what I can tell, since late September of 2018.)

Anyway, as part of that process, I discovered that PyPI has been hosting a package called turtle (deliberately not linked here) since 2009, which has nothing to do with the turtle standard library; and quite a few people were mistakenly downloading it. In 2017, a policy was introduced that blocks using such distribution package names (which match import package names in the standard library); but existing packages were left alone (they certainly could not all just be taken down, since a lot of them are/were backports for older Python versions). In April, I ended up assembling a lengthy Stack Overflow Q&A with all the information I could coherently fit together about the issue, and making a request to do something about the PyPI package. However, that system is really designed to allow people to recover names they should legitimately have from squatters. I personally have no real claim to the name (and there’s a very long backlog for the process anyway), so this unfortunately went nowhere.

I still have it in mind to contact the author of that PyPI package some time, to see if anything can be done about it. The project is unmaintained since the initial 2009 uploads (15 years now!) and is Python 2 code that breaks on installation in Python 3 (since 2.x-specific code is also found in the setup.py). But for now I’m just happy to be able to explain the issue to others.

A bit after that (the oldest post of mine I can find is from August 2) I joined Codidact and started trying to help build that community. I swore off writing answers on Stack Overflow, for reasons that will have to wait for another post; the last answer I wrote was on August 1.

Since then, however, I have continued doing curation on Stack Overflow, in fits and starts. Most notably, at the end of the year, I searched out hundreds of old unclosed questions about common IndentationError problems and closed them as duplicates where possible. Most of them, as one might expect, were simple matters of not understanding how to indent properly (including problems caused by mixed tabs and spaces - which Python 3 handles a bit more strictly). Those questions are now generally routed to an excellent self-answered Q&A from 2017 that was explicitly created to improve upon previous attempts. I also re-routed many duplicate closures from those other attempts, helping to establish this question as the “canonical” version. It now has over a thousand “linked” questions, making it one of the most “frequent[ly asked]” Python questions on Stack Overflow.

Also around this time, I started thinking more seriously about the Python packaging ecosystem. I got involved in multiple very complex discussions on the Python Discourse forum; I made several proposals and tried to help disentangle some thorny issues - while learning more about them at the same time. Ultimately, none of my own ideas really went anywhere, but I ended up with bits and pieces of a vision for a better way - not one that could likely ever be implemented for Python, sadly, due to backwards compatibility issues. (But this, too, is a subject for another post.)

I also walked away with a rough design for another competing build tool - meant to replace Setuptools (rather, the subset of its uses which are still intended for long-term support), but redesigned from scratch and - importantly - much simpler. I never ended up doing more than an initial, unpublished proof of concept; but it would be nice to come back to it.

And somewhere in there I also started thinking about designing a programming language, and fixing all the things that I think could be improved in Python. Of course, a fresh start like that would also provide a place for those packaging ecosystem ideas.

In March of this year, I got to celebrate a few milestones in quick succession. Of course, March 8 was my anniversary on the Python Discourse forum; a few days before that, on the 3rd, I received an “empathetic” badge automatically from the forum. I hadn’t expected that any such thing existed, in fact; when I received the notification and went to check on the details I was momentarily overwhelmed. Apparently I am the first (and still only) person not on the core Python development team to receive it - and all of them took at least twice as long to get to that point. As much time as I have spent drilling it into others’ heads that Stack Overflow is not a discussion forum (along with other key points about how the site works), I apparently quite enjoy participating in an actual discussion forum environment.

Speaking again of Stack Overflow - in between those events, on March 7th, my Tkinter Q&A (the one that brought me to the Discourse forum in the first place) reached 10,000 views (it’s just over 12,000 now). Incidentally, downloads (almost all of which are almost certainly mistaken) for that package appear to be down 20% or so since then - I like to think I helped with that.

And in the aftermath of those events, I found some motivation to start actually writing code for my own purposes again - for a little while, anyway. I made a good start on some video rendering software that I’ve wanted to have for quite some time - both to make mathematics-themed “explainer” videos as one might do in Manim, and general editing of the sort that one might do in Moviepy. I just don’t particularly like the paradigms of either; the former is absurdly heavyweight for normal uses; and the latter seems to be unmaintained for 4 years now.

On April 8 I made the trip from Toronto to Niagara Falls so I could be within the path of totality of the solar eclipse that day. The experience was overall well below expectation: it was humid and cold (even before the sky began to darken), I was quite under-prepared, and it was so cloudy that the Sun was hard to find most of the time. The only view I ended up actually catching through eclipse glasses was just after totality; I didn’t end up spotting the corona or any of the other really interesting phenomena associated with totality, except for the dark and the cold and perhaps some shadow bands. On top of all of that, the trip home was disastrous, and there was enough light pollution in the area that the complete darkening of the sky felt rather less impressive than I think it ought to have. I rather wish I had gone to Belleville or somewhere around there instead - they apparently had much nicer weather.

In the time since then, I’ve been doing design work for the programming language I mentioned above. Aside from trying to make a “better Python” (although I expect it will look and feel quite different in some aspects), so far I’ve noticed myself drawing inspiration from C#, JavaScript and Lua. Explaining how this all fits together would - nay, will - require an entire series of posts, which is a big part of why I feel optimistic that I can form a proper blogging habit this time. (I do like to think that missing out on the full splendour of the eclipse was, in some way, motivational.)

In March I also came up with a name for this language: Fawlty, after John Cleese’s next work. While it might not be considered the best marketing move to expect developers to speak of “writing Fawlty code”, for me it fits a bit too well to pass up. (And really, the naming of Python itself was rather whimsical in the first place). At any rate, I like the sound of it far better than my original working name - “Py#”. Yes, really.

And I suppose that’s as good a place as any to leave off for now. No real overarching narrative here, just a retelling of events (even if some of them happened to be intertwined). I expect to be quite busy over the weekend - which will also be something to write about.