It’s been three years since any of us have been able to attend PyCon in person. I had mixed feelings about attending this year because despite what most of us are being told officially, Covid isn’t over. When PyCon staff announced the health and safety guidelines for in-person attendance, I decided to go. I’m really glad I did.
PyCon is way too big for any one person’s summary to tell the whole story, but I’m happy to share some of my personal highlights from this year’s event.
The Education Summit started in 2012, and it’s been a part of every PyCon since then. This year’s summit was much smaller than in previous years, but still well worth attending. It was organized into a morning of longer talks, a few lightning talks after lunch, and then some smaller group conversations to close the day. The Education Summit brings together k-12 teachers, post-secondary educators, corporate trainers, authors, and anyone else interested in how we can help people learn Python as efficiently, effectively, and accessibly as possible. This year’s talks represented the full range of these perspectives.
I gave a lightning talk about django-simple-deploy, a project that aims to automate initial deployments for people who are just learning to use Django. I also got to listen to a professor who teaches from my book, which was humbling, inspiring, and really helpful in terms of figuring out what kinds of resources to develop next.
I missed the official welcome and opening keynote. I tried to go, but I woke up to a jet-lagged alarm and by the time I walked into the convention center I just felt terrible. I walked right back out and slept another hour at the hotel, and made it back in time for the first round of talks. I wasn’t the only one that lost some conference time to jet lag and adjusting to the elevation. If you go next year, sleep well and drink lots of water. :)
The opening talk about Python’s type system by Łukasz Langa was well received, I believe. I’ll probably make time to watch it once the video comes out in the next week or two.
Note: At the time of this writing, videos of talks have not been released yet. Once the videos have been released, links will be provided for each talk.
I only made it to one talk this year! I had a long list of talks I wanted to see, but other things kept taking priority after that first talk.
The talk I went to was called Best Practices for Continuous Integration in Python, by Moshe Zadka. I’ve enjoyed Moshe’s previous talks, and I haven’t used CI yet, so I was looking forward to their perspective on the subject. It was really helpful; rather than focusing on specific CI providers, they focused on how to think about CI. Moshe talked about how to recognize when you need to start using CI, how to evaluate CI providers, and how to evaluate your CI workflow once it’s set up.
Since PyCon releases videos of all talks after the conference, it’s easy to prioritize other aspects of the conference when you’re there. I had some specific goals for this conference that kept me away from the talks, but next year I’m going to make a stronger effort to attend a few more talks. Seeing a great talk in person is really enjoyable, and the speakers absolutely deserve an enthusiastic and relatively full live audience.
I’m planning to watch a number of talks when the videos come out:
I’ve met Reuven several times over the years, and the joy he exudes about helping others understand Python at a deeper level is infectious. I’m sure I’ll learn something from his talk, and I know I’ll come way inspired for my own work as well. Also, Reuven’s new book looks fantastic, and I’m going to recommend it to Python Crash Course readers. It’s called Python Workout, and it looks like a well-curated set of exercises, with discussions and solutions.
Open source is critical to our community, and it’s a priority for all of us to manage these projects well. We need to avoid burnout ourselves, and we need to help others in the community recognize and avoid burnout. I don’t think this talk is about burnout specifically, but any talk that helps us understand how to approach open source efficiently and effectively will help us keep our community healthy.
Python’s error messages were improved significantly in 3.10, and they’re only getting better in 3.11. Pablo is behind a lot of this work, and I’m really curious to hear his full talk. There are few projects that have an equally significant benefit for beginners and experienced developers alike. This is one of those projects; beginners are given much more specific information that helps them spot errors quickly, and experienced developers spend less time hunting down the errors they make. When you add up the minutes these new error messages are saving all of us, this project is saving literal decades of people’s time.
As a tech writer, I’m curious to watch this and see if there’s any new insight I can pick up. The Python teaching community pays attention to good pedagogy, and I appreciate people sharing what they’ve learned in producing quality learning materials.
Kelly and Sean have been teaching Python to middle school students in Florida together for the past few years, and they’ve been hosting a podcast about their experiences the entire time. In this talk they share some of their takeaways from working with this resiliently curious age group, and what lessons we can learn from their students. They also released an episode at 35,000’, called PyCon US 2022 Debrief, on the way home from PyCon. So if you like their talk, give that episode a listen.
Wow!! This is going to be fun! pic.twitter.com/v2Fsf9aPlr— Kelly Schuster-Paredes (@KellyPared) April 30, 2022
Anthony Shaw reminds me of Reuven Lerner, in that every time I have a conversation with him I come away inspired to dig deeper into Python. The Python code I write is almost always fast enough without focusing on optimization, but I’m starting to do some projects with larger datasets and I find myself needing to pay more attention to performance. I’ve been around long enough to know that doesn’t mean Python is slow; it almost certainly means I just need to know a littler more about how to optimize the exploratory code I write early in a project. I look forward to hearing what Anythony shares in this talk. By the way, if you like what he has to say, take a look at his book CPython Internals: Your guide to the Python 3 Interpreter.
Some people complain about it, but I love testing. I enjoy writing tests, I enjoy running them, and I enjoy learning how to manage a growing test suite. I learned about testing much later in my programming career than I should have, which leaves me with an appreciation for all the tooling that’s been developed for testing over the years, and the knowledge that’s been built up about how to manage testing well. There’s nothing like catching bugs before your users ever have a chance to see them, and having the freedom to try new ways improve your code without worrying that you’ll unknowingly break backwards compatibility.
There were many more talks, so check out the full list of titles and descriptions here, and be sure to watch the videos that interest you most when they’re released.
There were several sessions of lightning talks (5 minutes or less), and they can be really enjoyable. There are a lot more corporate talks than there used to be, but people have learned to focus on things that are relevant to the community and avoid talks that are thinly-disguised ads. It’s always fun to see a lightning talk about a newer project, and then see that project grow over the following years.
My favorite lightning talk this year was about refactoring, by Chris May. His talk was inspired by his reading of Sandi Metz’ work, which is fantastic. I was reading through some of Sandi’s work, and Chris boiled down some core elements of her thinking into a really concise example. He showed how to refactor a simple set of functions following a clear, well-defined process, and the following point struck me: “You can walk away from any step in the process, and still have code that works and passes all your tests.” I can usually refactor without following such a strict process, but it’s nice to be reminded of a more structured approach to refactoring when I do have to be more careful about the process.
I signed up to give a lighting talk about a project I’m working on to predict landslides in southeast Aalaska, but I signed up too late in the weekend. I wasn’t too disappointed though; watching others’ lightning talks was the nudge I needed to start putting together a full talk on this subject.
Lightning talks took place Friday evening, Saturday morning and evening, and Sunday morning. Videos of the lightning talks will be posted along with the videos of the full talks.
There were several keynote speakers throughout the weekend in addition to Łukasz’ opening keynote. The most talked-about keynote was definitely Peter Wang’s talk about PyScript, which uses Web Assembly (WASM) to run Python in the browser. He resurrected the infamous
Another keynote by Sara Issaoun showed how Python is used to coordinate a global network of satellites to image black holes. It’s hard not to be fascinated and inspired by this work.
A big part! Software development is a pillar of modern science 🙏 python and astronomy go hand in hand https://t.co/KA8YNWhQmI— Dr. Sara Issaoun (@SaraIssaoun) April 30, 2022
On Sunday morning there was a short presentation by the Diversity and Inclusion Work Group, and another presentation by two members of the Python Steering Council. Both of these groups’ work is vital to the ongoing growth and maintenance of the language and the community, and I always look forward to these in-person updates about how this work is going.
There was a closing keynote as well, but that deserves its own discussion later.
The PyCon organizers post a couple large boards with one-hour time slots for a large number of smaller conference rooms. If you have a topic you’d like to discuss with others, you can post the topic in one of the slots, and discuss your topic with anyone who shows up. It’s a great way to connect with other people at the conference.
I always do an AMA-style open space for anyone who wants to connect around Python Crash Course. I enjoy listening to readers’ stories, and answering any questions people have about Python, writing, life in Alaska, and whatever else is on people’s minds. I met someone who runs a small farming business who has just learned the basics of programming, and wonders how that might help them run their business. I met people trying to switch careers, and some people who just wanted to say thank you for writing the book. :)
If you go to PyCon, make sure to visit the Open Spaces boards periodically, and go to some of the sessions that sound interesting to you. Also, consider posting an Open Space yourself if you don’t see anything relevant to you or your work.
When people hear the phrase vendor booths, it’s easy to imagine a bunch of sales pitches that you’re supposed to walk up to. The reality is far from that; most people at the booths are happy to just share how their company or organization uses Python. They largely trust that sharing their information will lead to people using their products, and applying for jobs.
I’m working on a project to simplify the deployment process for people who are just learning Django, so I wanted to visit each of the vendors that offer a deployment platform: AWS, Microsoft (Azure), and platform.sh. Each of these platforms has extensive documentation, but it’s incredibly helpful to speak in person with the people who build and maintain these platforms.
I also visit the No Starch booth regularly; it’s a nice way to meet readers and talk face to face with No Starch staff that I only ever get to work with remotely outside of PyCon. This year I got to meet a group of high school students from Kentucky who are learning from Python Crash Course. Meeting young people in the Python community is just as inspiring as meeting the adults that build and maintain the language.
Vendors also bring a lot of swag, and with this year’s lower attendance you could get any shirt, sticker, notebook, cookie, or other swag you wanted. I also noticed the shirts seemed to be higher-quality this year than previous years.
If you’re not actively looking for a job, there’s not a whole lot of difference between the vendor booths, startup booths, and job fair booths. Interactions at the job fair are a lot faster because it’s just a two-hour block of time, but people are happy to give a quick overview of their companies and products.
It was really interesting to learn about the StaticFrame project from Research Affiliates. Their customers are investment fund managers. They have a research division, and an engineering division. The researchers are financial experts, and many of them have basic programming skills. They develop investment strategies, and write exploratory code to evaluate the strategies they’re working on. Then they hand off that exploratory code to the engineering team to productionize. In this work, they often want to use pandas dataframes, but they often need an immutable version of the standard DataFrame. They open sourced their implementation as
StaticFrame, because they recognize it would be implemented better as an open project, and it would be useful to many others as well. This conversation gave me insight into another layer of the investment industry I didn’t know about, and it gave me a much clearer understanding of why some companies decide to open source certain aspects of their infrastructure.
I finally got a better understanding of “serverless” databases from someone at the Cockroach Labs booth. I met people working at Rivian, got a great shirt from Blue Vine, and learned that Bloomberg has full-time staff who focus solely on training other employees in Python. I thought all corporate training was done incidentally as needed by experts in the company, or through freelance contractors. This was one of the most appealing jobs I’ve heard of. I like the opportunity to be deeply technical within a company, but also stay grounded in the work of teaching others. I’m not currently looking for a job, but it made me realize I could look for full time work as a trainer instead of taking the freelance route if I want to someday.
The hallway track is the official name for all the unplanned side conversations you find yourself in at a conference. For people attending their first PyCon, it’s a chance to meet other programmers with shared interests. For peope who’ve been to many PyCons, it’s a chance to reconnect with old friends. Since this was the first in-person PyCon in three years, the hallway track was an emotional experience for many of us who’ve made lifelong friends in the Python community. I was deeply moved at how grounding it was to see many of the people I’ve come to know in this community. I’m definitely one of the people who “came for the language, and stayed for the community”.
I enjoyed connecting with Python Crash Course readers, other authors, people who maintain the libraries I depend on, and people who have just plain become friends over the years. I met a number of people who I already can tell are likely to become lifelong friends in this community. I look forward to seeing people in the next few years who were not in attendance this year. Many of you know who you are, and hopefully know how much you are missed.
Dinners at PyCon are amazing. I tried to eat outside when I could, and in smaller groups than usual, because this was the only event at which I had any significant exposure to Covid. Dinners are amazing because of all the different perspectives you get to hear. Also, I live in a small town in southeast Alaska where there are about ten restaurants that we regularly eat from. Any restaurant outside of those ten is an interesting experience for me.
One night I ended up at dinner with a group where I didn’t know anyone well, and I started to wish I was back at the hotel alone after a long day of more social interaction than I’ve had in years now. But at one point someone started talking about their work at an insurance company, of all things. I asked if their work as a programmer at an insurance company had changed their perspective on the insurance industry at all. They responded with an emphatic “Yes!”, and started explaining how insurance agents and companies “share risk”. “Imagine someone wants to insure their McLaren F1 for several million dollars, and an agent prices out a policy for the car. That company can’t keep that policy to themselves, because even though it’s a fair price, it’s too much risk for that one company to carry indefinitely. So they bundle the policy and sell it to another insurance company.” This person’s company figures out how to bundle policies so that risk is shared appropriately across different insurance companies. The person I was talking to wasn’t an insurance expert, but had learned a lot about the industry through their work as a programmer. A lot of the public examples we see in the data science world are about scientific topics such as weather and biology and some generic economic data. But when people apply to data science jobs, this is the kind of work a lot of people end up doing. It’s fascinating to hear about these random but specific aspects of society firsthand.
I realized this is why I go to dinners at PyCon; you never know what insights you’ll come away with, personal or professional. I spent a long time at dinner with this group, and then we kept talking in the hotel lobby until we were falling asleep in front of each other and called it a night.
Naomi Ceder gave the closing keynote. This year’s conference was the 20th PyCon, and Naomi has attended all 20. Everything I’ve mentioned about feeling deeply connected in this community, Naomi has felt even more fully.
It’s hard to summarize a talk that was so deeply personal, and so deeply important to how we continue to grow as a community. I’ll just share some thoughts that stuck with me after a couple days’ reflection. One of her messages was that we are a community, but the people who lead the community and the language are constantly pressured to treat the language as a business. That pressure might seem understandable at times, because so many indivudals and organizations make a substantial amount of money from their work with Python. But as I’ve been discussing throughout this post, Python is so much more than a language, and so much more than a business. Naomi emphasized, over and over again, that we are a community. It’s imperative that we maintain ourselves as a community if we want to continue having the experiences that bring so many new people to PyCon each year, and bring so many people back as well. It’s certainly “just a language” or “just a tool” to many people. But to many, many others the Python community becomes an integral part of our lives. This is true in our daily work as well as our experiences at the conference itself.
There were few dry eyes as we listened to Naomi speak so clearly and with so much conviction about the community we’ve built, and that we share. “Our futures are all entangled,” she said at one point. I didn’t catch her next words clearly enough to quote, but it was something along the lines that we’ll all be okay because these are good people to be entangled with. I look forward to clarifying that quote when the videos are released.
I spoke to a number of people since the keynote who wished we had given Naomi a standing ovation. I think her talk hit too deep for people to respond quickly enough with a standing ovation. So Naomi, please know that a standing ovation happened in many people’s minds during, after, and since your talk. I believe her talk will be a guiding framework in how we navigate the coming years, and the ever-increasing pressure to treat Python as a business, rather than the community it really is.
After the main conference, PyCon has a number of additional days reserved for sprints. Most of the open source projects we depend on are maintained by teams of developers spread out around the world. Since PyCon is the one time many of these people gather in one place, the organizers reserve a few days where people can work together in the same space. The sprints are an incredibly productive time for many individuals and teams.
I spent two days working on django-simple-deploy, a project that aims to make the initial deployment process much friendlier to people who are just learning Django. I wrote up a much cleaner contributing page for people who are considering working on the project. I also got the infrastructure in place to generate a user-friendly summary of the deployment process, which should help people understand the work this tool automates for them, and leads them in a supportive way into their platform’s official documentation. I hope this project becomes a useful tool for people who are going through the deployment process for the first time. It should also be useful to people who are developing tutorials that involve simple Django projects where deployment would be helpful, but shouldn’t be the focus of the tutorial.
I didn’t work with anyone else on this project, but it was still really good for me to sit with other Python people while doing my own work. I don’t know anyone else who uses Python in my small home town, so much of the year I work alone on my projects except for online interactions. It’s incredibly grounding for me to work with others in person, even if we’re working on different projects. I got to sit with Al Sweigart, the author of Automate the Boring Stuff with Python. I really enjoy spending time with Al because people often work through our books in succession, but also because he’s just a fantastic person. I got to eat lunch with a number of people who maintain Python itself, and people who maintain some of the larger projects in the community. It’s wonderful to get to know the people behind these projects.
Sprints are bittersweet, though. Some people stay for a half day of sprints, and some people stay until the venue closes for good. That means instead of one hard set of goodbyes on Sunday afternoon, you have goodbyes spread out over several days. The hotels, venues, and restaurants can get eerily quiet after the intensity of the full conference.
I had one other experience worth sharing from the sprints. Everyone who’s sprinting is invited to give a one-minute overview of the project they’re working on, on the main stage right after the closing keynote. I gave my one-minute description and then sat in an empty row of chairs off to the side off the stage to listen to the rest of the pitches. A man about my age walked over and sat right next to me, and looked directly at me. That was unusual, because with Covid most people don’t sit right next to anyone they don’t already know. He said “Hello”. I said “Hi.” I thought he might be curous about the project I had just described. “You don’t recognize me, do you?”
I asked him if we met at PyCon in 2019, because I meet a lot of people each year through book signings and hallway conversations. He laughed and told me his name, and my head started spinning. I went to a school with 10,000 undergrads, but only 3 of us majored in Physics. John was one of those three people, and we were good friends in school who drifted apart afterwards, as so many do. I hadn’t seen him since 1994. I’ve googled his name every few years, with the intent of trying to meet up somewhere for a hike or a climb after one of these conferences. But I never reached out. He heard my voice during the sprint announcements, and walked over to see if it was really me. We talked for a bit, and then had a wonderful dinner catching up on 30 years of life. This, once again, is why Python is so much more than just a language or just a business.
It’s always bittersweet to leave a conference. But, I’m also very happy to be heading back home to my family after a full week away. I loved my time in SLC, and loved being back in person at PyCon again.
I know some people are testing positive after getting back home. If you stayed home this year because of Covid, you were absolutely right that it’s hard to attend the conference without any real exposure. I extend my deepest appreciation to PyCon staff for ensuring that none of us (almost certainly) got Covid at the conference itself.
I look forward to next year, and hope to see you in SLC or wherever Python brings us together next. :) :) :)
Goodbye, #PyConUS2022! I couldn’t have asked for a better return to in-person events.— Eric Matthes (@ehmatthes) May 4, 2022
I spent the flight writing up my highlights from the week. I’ll post it in the next few days, when I can spend some time typing. :) pic.twitter.com/iSX2pbqbFR