PyCon 2019 Recap[ ]
Two years or so ago, I was delighted to learn that PyCon was going to be in Cleveland for both the 2018 and 2019 meetings, putting it only about a 3-hour drive from my house. I’d been hacking on Python stuff for a few years by that point, and was excited to have the chance to rub elbows with some of the people I’d been interacting with online in various ways. In 2018, I got to say hello to the big Python podcasters, Michael Kennedy , Brian Okken , and Tobias Macey , as well as Travis Oliphant , Ernest W. Durbin , Brett Cannon , and numerous other well-known figures in the Python universe. I also had the chance to eat lunch with Guido and others from Dropbox, which was quite fun. All in all, it definitely whetted my appetite to return in 2019.
This year, I was able to attend for all three days of talks, plus part of
the first day of sprints. This post is an attempt to record everything I can
recall about the experience, though I’m sure I’ve forgotten a substantial
fraction. Apologies to anyone I’ve missed, or for any incorrect details!
Lacking any particular organizational plan for this, I’m just tossing
everything into a few sets of loosely-related bullets/sections.
It was a great experience, though, and I highly recommend that anyone
interested in attending a future PyCon should make the effort
to come if at all possible!
I got to give a lightning talk! I submitted
my early-stage side project for extraction of structured data from free text,
and was slotted into the Saturday PM session .
I thought it went quite well,
especially given that I made a live code demo of it. (Typing accurately through
stage nerves is an … interesting… challenge.)
As I mentioned in the talk, the docs
are still in progress…they’re the next thing on my list after I finish this post…
and after I take care of my slides for
I need to make particular note here, though: the talk wouldn’t have happened
if not for the generosity of Jonas Neubert
, who loaned me his laptop for a couple
of hours. Thanks again, and my apologies for leaving your
set to 28-pt black-on-white….
I had decided to stay for one day of sprints, if I could; I’d learned about the Packaging Mini-Summit planned for that day, and figured it would be a good way to get more insight into some of the internals of the packaging decision-making, and maybe even help out some. In order to kickstart discussions and help people recognize one another, a PyPA/packaging meet-and-greet open space had been scheduled for first-thing Friday morning. I briefly met Carol Willing , Sumana Harihareswara , Chris Jerdonek , and Pradyun Gedam there, as well as at least 3-4 other people whose names didn’t stick (sorry!). The mini-summit was scheduled to be part of the packaging sprints, which Sumana was broadly orchestrating. First-thing on Monday, I was tasked with co-facilitating the process of onboarding some people new to Python packaging via running through the official PyPA packaging tutorial, which mostly involved answering a handful of questions while everyone otherwise ~breezed through.
During this initial chunk of time, Brett Cannon came over briefly to say hello, and I remarked about how I’d unexpectedly been put in charge of a thing. He noted that it’s really not that hard to “move up in the ranks” within the Python community … that all it really takes is being nice and expressing a desire to help out. Pretty straightforward!
The mini-summit started up mid-morning, broke over lunch, and wrapped up in the early afternoon. Paul Ganssle led most (all?) of the summit, ceding the floor to domain experts as relevant. Requests for topics to discuss had been solicited through a discuss.python.org post, with priority decided based on the combined number of likes on each topic at the discuss.python post plus the number of in-person ‘in favor’ votes. The following topics were addressed:
- Status of PyPA Security Grant
- External Dependencies
- PyPA Governance
- Future of Editable Installs
- Strictness of PyPI/pip with Regard to Metadata
- src/ Layout
- Storage of Requested/Installed Extras
- Mechanism to Upload Wheels for Packages Owned by Others
More detail (lots more) can be found at the
housing the notes from both the mini-summit and from the remainder of the sprints.
I had volunteered to take notes throughout the mini-summit, as had
Chris Wilcox ; he put together the majority of the
mini-summit content in the Doc, and I filled in some gaps/details where I could.
Keynote, Russell Keith-Magee
The overall theme of the talk centered on the ‘Black Swan’ concept of significant events that are unpredictable in advance but seem obvious in retrospect, based on the book of the same title by Nassim Nicholas Taleb, as applied to Python. Russell highlighted a few possible Python Black Swans, and described some of his experiences in trying to address them through his work on the BeeWare project. He specifically made the point, though, that the most important Python Black Swan over the next decade may well be something that no one has thought of yet. He used the stories of the Australia II yacht and C. Y. O’Connor as examples/metaphors providing food for thought on the nature of open source in general, and Python in particular, and inspiring a handful of calls to action.
“Wily Python: Writing simpler and more maintainable Python”
I’d heard about
wilybefore, probably on either Talk Python or Python Bytes, and so I stopped into Anthony’s talk to learn a bit more. I still don’t fully grok cyclomatic complexity, and I’d definitely have to do a bunch more detailed reading to understand the math behind the metrics
wilyuses, but I definitely feel like I’d have a pretty solid idea of the meaning behind the metrics if I ever decided to add
wilyonto any of my projects.
I caught part of the lightning talks Friday afternoon; out of all of them, the one that stuck most in memory was by Anthony Lupinetti , which described a Scratch-like modular language built on Python and Google’s
blockly, called Snappy Code . I suspect our older son will be at an age soon where programming will start to interest him, and Snappy Code seems like it has the potential to be a great starting point.
Keynote, Shadeed “Sha” Wallace-Stepter (no video available)
I ended up getting to the convention center on the late side Saturday morning, so I only caught part of Sha’s keynote. The main hall was packed, so I ended up listening from the overflow area in the trade show area and probably missed a number of details. What parts I did catch were really impressive. Sha was fortunate to have so many resources made available to him through the prison system he was in, and did a great job making and sticking to a plan for trying to build a new life. Sha’s keynote covered far more ground, though; check out Jessica McKellar’s recap Twitter thread for a more complete overview.
Keynote, Jessica McKellar (no video available)
I heard Jessica’s talk from the overflow area also, and thus probably also missed a number of details here, too. However, she made a compelling case that the US prison system, as currently constituted, (1) does a decidedly poor job of providing rehabilitated individuals the resources and connections they need to actually get clear of a cycle of release and reincarceration, and (2) operates in a manner that leads to substantial racial disparities. She posed a challenge to everyone in the room, to make a concrete difference in their local context prior to PyCon 2020; see her Twitter thread recap for more details.
“Floats are Friends: making the most of IEEE754.00000000000000002”
This talk definitely won my “cleverest title” award for the meeting. I use variations on Dory’s “Just Keep Swimming!” all the time, so I was an immediate sucker for ‘floats are friends’ in particular. I also was interested in the technical aspects of the talk, though–I knew generally that floats can’t represent the entire number line to arbitrary precision and that this behavior can cause subtle problems, but I very much appreciated this overview of the details of float implementation.
“8 things that happen at the dot: Attribute Access & Descriptors”
This is probably the talk that I’m most likely to re-watch repeatedly for my own edification. Attribute access kicks off a crazy-complicated series of context-dependent dunder method calls, and AFAICT this talk neatly both summarized that call cascade and described how it can be tweaked/hijacked for fun and/or profit and/or mischief.
I was at this entire session of lightning talks, though I wasn’t really able to pay close attention to many of them due to nerves from either being about to speak, or having just spoken. The one talk I remembered most clearly from the session was one by Scott Sanderson , where he’d fiddled about in the internals of Python to allow one to define types without having to use the
selfinstance reference, or even the
classkeyword. Fascinating, yet horrifying!
Keynote, Python Steering Council
Barry Warsaw , Brett Cannon , Carol Willing , Guido van Rossum , Nick Coghlan
I frankly don’t recall a lot of the specifics from this keynote, but I definitely enjoyed it. With the transition in Python governance to the Steering Council model, I think it was valuable and important for the Council to have this opportunity to introduce people to themselves. The laid-back, conversational format worked really well, I thought. I’ll reiterate here what I said on Twitter back in February : I was really glad to hear that Guido was willing to be a member of the Council, and that the stresses leading to his stepping back as BDFL hadn’t turned him off from a prominent role in Python leadership.
Poster, “Exploring Scientific Databases with Python”
Here, Andrey presented on some work he had done to develop a robust method for importing a particular chemoinformatics data format (can’t remember which one…). It struck close to home, being along similar lines to
pent, and I enjoyed learning a bit about why and how he’d put his tool together.
“A New Era in Python Governance”
In this talk, Shauna provided an overview of the mechanics of the transition to the Steering Council model, after Guido’s stepping back from the BDFL role last year. It was a great counterpart to the Steering Council keynote earlier in the day. I had kept an eye on the process as it developed, so I was familiar with most of the high-level content, but there were some smaller details I hadn’t been aware of. For anyone who didn’t follow the transition, though, I expect it was quite informative.
“Lowering the Stakes of Failure with Pre-mortems and Post-mortems”
Not being a professional developer, I haven’t had the experience of debriefs after the emergence of major problems with a piece of code. So, those aspects were interesting to me as a window into the experiences of professional developers. Additionally, coming from a chemical engineering background, the pre-mortem and post-mortem concepts reminding me strongly of best practices in the chemical process industry: respectively, the Process Hazard Analysis conducted during the design phase of a new process, and the Near-Miss Analysis (Phimister et al. Risk Analysis 23(3): 445, 2003). In both contexts, the pre-mortem seeks to answer the question What all could go wrong, and how can we minimize that likelihood?, and the post-mortem tries to answer What went wrong here, and how can we try to avoid it happening in the future?. Very good talk; the emphasis on facilitating non-accusatory post-mortems was especially important, I think.
“Escape from auto-manual testing with Hypothesis!”
Quoting myself : “I want to pick up
hypothesissomeday and actually make sense of how to use it. I’ve attended a couple of talks and listened to a couple of podcasts on it, and I still just don’t quite get how property-based testing would be useful, at least to the projects I’m working on.” This was a solid talk, which cemented my confidence that
hypothesisis worth learning, but it unfortunately still left me unsure how to get started. Fortunately, I posted the above tweet in reply to one by David MacIver (who I only later realized is the author of
hypothesis<facepalm>), who pointed me to a really good intro article and (indirectly) reassured me that I’m not alone in my mystification.
Keynote, Nina Zakharenko
Nina’s keynote was just fun. She demo-ed the Circuit Playground Express (CPX) that all attendees got as part of their swag bag, illustrating the simplicity of controlling the board just by editing its magic CircuitPython
code.pymodule, all as part of a broader intro to the wide range of microcontroller-based projects that are now widely accessible thanks to a powerful combination of hardware and software. Her talk provided some pointers on effective use of the CPX built-in LEDs, pushbutton and switch, and she noted some non-obvious gotchas to working with a CPX that will probably be helpful to newcomers (e.g., adding a
sleepwhile polling the pushbutton status to avoid multiple logic-signal events being fired from a single button press). In addition, she held up admirably in the face of repeated signal issues from the camera she had pointed at the board…just fiddled with it until it started behaving again and kept on going.
- I ended up spending a fair amount of time at the JetBrains booth on the
trade show floor, where I:
- Talked to Matt Harrison about his training services
- Got some tips about tracking down PyCharm keyboard shortcuts from Elizaveta Shashkova .
- Talked a bit with a few other JetBrains employees, as well as with Michael Kennedy , Christopher Burke , and Stephen Schroeder .
- Was in the audience for the live recording of Python Bytes (#129), which I had missed last year.
- Caught bits and pieces of some of the various content-creators’ mini-presentations they’d scheduled
I ran into Brian Okken a couple of different times, and in one of those conversations I asked him about parametrizing pytest fixtures. I had tried just applying
@mark.parametrize, but that didn’t work at all. The discussion prompted me to take a closer look at the pytest docs, whereupon I learned that you have to pass the parametrization iterable to the params argument of
@pytest.fixture(). I of course promptly reorganized some rather smelly test code in one of my packages,
Friday evening I tagged along with a group headed out to dinner, and ended up talking mostly to Pradyun and Jonas Neubert , plus a couple of quick exchanges with Julian Berman . This proved serendipitous, given Jonas’s generosity in loaning his laptop for my lightning talk.
During the job fair/poster session on Sunday, I saw Russell Keith-Magee and chatted with him a bit, mostly about his keynote and what the future of BeeWare in particular, and Python in general, might look like.
After the closing keynotes on Sunday, I ran into Meredydd Luff and Ian Davies of Anvil fame , and talked to Ian for a little while. I’d talked to Meredydd a bit at PyCon 2018, and it was good to learn more from Ian about how Anvil works under the hood and how things are going for them. The Anvil booth was consistently packed this year, so they’ve clearly gotten a lot of people’s attention!
This conversation with Ian was fortuitous, because during the course of it a group of people convened in the vicinity and started making dinner plans. One of them was Pradyun , who very kindly invited me along. So, I ended up getting dinner and ice cream with Pradyun, Sumana , Nathaniel Smith , Josh Oreman , and Sviatoslav Sydorenko , which was a really great time. There was an unexpectedly prolific amount of ST:TNG and Square One TV/ Mathnet geeking-out with Sumana, which was awesome.
During the brief ‘Python packaging newcomers’ session Monday morning, I met someone who’d bookmarked my pyproject.toml/src post for later use—THAT was simultaneously a cool and also a decidedly odd experience … “Somebody I don’t know actually read my thing!”
- At lunch on Monday, I happened to sit at the same table as Anthony Sottile , and it was great to have the chance to talk to him in person for a bit.