This year, I attended my first PyCon, which was held in Montréal from April 8-16. PyCon changes location every two years and this year was the second one held at the Palais des Congrès in Montréal, Canada.
The location was great, organization flawless, and the organizers and volunteers provided a great experience for attendees.
The conference itself is divided upon three sections:
I did not attend the tutorials, but I was invited to the Language Summit by Kushal Das (Python Software Foundation board member and CPython contributor). Meeting members of the Python community in person and discovering how discussions and decisions happen was a unique experience that made me want to increase my participation in this community, join the mailing lists, and, who knows, maybe try to tackle some easy-fix bugs.
During the summit, we had a number of presentations about alternative Python compilers, such as Jython. We also had a short presentation by Guido van Rossum, author of the Python programming language, about changes coming in Python 3.5 to support declaring types in the function definition. Another interesting discussion was around the requests library and whether it could ever make it into the standard library. Although I think that specific question wasn't really answered during the summit, it triggered interesting discussion around endorsing external libraries within the documentation of the standard library (i.e., advising users to use requests on the urllib documentation pages). Another interesting discussion involved the state of Python on mobile platforms (Windows Mobile, iOS, and Android). Although more work is needed in that area, Python is making progress.
The second day was more relaxing for me. I took this opportunity to wander around Montréal a little and joined the crew of conference volunteers at the end of the morning to help prepare the ~3,000 attendee swag bags. That was an interesting and fun way to spend a couple of hours with a great crew of volunteers.
The first day of the PyCon conference talks kicked off with keynotes, including one by Catherine Bracy (@cbracy), Director of Community Organizing at Code for America. Catherine's talk about civic coding started with describing the problems the Healthcare.gov site had when it launched, and she talked about how developers help communities by making publicly accessible information and tools. She referenced the article Stop Waiting for Permission: How civic hacking changed the way I saw my city and myself, which is worth reading. Catherine's keynote was inspiring and motivating, and she called for further reflection on the roles FOSS developers have in our society and impacts they make outside our traditional scope (web, desktop, operating systems, and organizations).
Machine Learning 101
In the next session I attended, Kyle Kastner, a graduate student researcher at Université de Montréal, talked about different machine learning algorithms, libraries, and use cases.
Introduction to HTTPS
In her Introduction to HTTPS: A comedy of errors talk, Ashwini Oruganti discussed issues with https in general. I can't say I learned new things in this talk, but the refresher was useful.
Python @ Walt Disney Animation Studios
Paul Hildebrandt, a senior software engineer at Walt Disney Animation Studios, explained where Python fits into the movie-making process. This was a really interesting presentation about the use of IT in general, and Python in particular, which included great images from Big Hero 6 and other movies. Paul also gave an overview of how animated movies are made and how Disney developed their own tools to facilitate this process, insisting on the idea that the tools must adapt to the artist instead of the other way around.
How to Interpret Your Own Genome Using (Mostly) Python
Titus Brown, a professor in the School of VetMed at UC Davis, talked about tools and workflow that can be used to analyze and compare genomes, using a particular population as an example and going down into the genome to figure out what genetically makes this group unique. He also talked about the possibility for high-throughput genome sequencing, and we touched on ethical concerns these technologies raise in the discussion afterward.
How to Build a Brain with Python
Although still bioinformatics, Trevor Bekolay's talk was a different topic than the one before it. This presentation, given by a theoretical neuroscientist, was really about the inner (chemical and physical) modeling of neurons of a brain. Trevor started by introducing a couple of applications used to model a single neuron, and then introduced an application used to model several neurons at once. He gave an impressive and interesting presentation, although knowing more about the biochemical and biophysical properties of the brain would have helped me understand his talk better.
Investigating Python Wats
On the second day of talks, Amy Hanlon, a software engineer on Venmo's scaling team, discussed Python wats (i.e., odd behavior). Although I knew most the examples she presented of curious behavior of Python, I did not understand the reasons behind the behaviors. The presentation was useful because she gave insight into the behaviors and talked about tools to help figure out what is actually happening in the code to cause them.
Data-Driven Analysis of Python Code
Andreas Dewes, a physicist and programmer working on developing QuantifiedCode, a data-driven algorithm for automated analysis and refactoring of software code, described an approach to doing static code analysis, which considers the code as a graph rather than text. This approach helps find bugs caused by typos in property names, for example. QuantifiedCode is open source and free for individuals and organizations as part of the open source plan (public repositories).
Nina Zakharenko, a full stack developer, tackled the topic of technical debt. Anyone who has worked on a sizable project could relate to her presentation. Nina provided tips for figuring out the size of the technical debt, and ideas on how to organize work to reduce this debt.
Achieving Continuous Delivery
James Cammarata, head of core engineering at Ansible, presented on how different companies are using the tool to automate deployments. He gave several example companies, some of which are even integrating Ansible with an IRC bot to allow everyone on the IRC channel to see what other admins are doing.
Build and test wheel packages on Linux, OSX, and Windows
Olivier Grisel, a software engineer at Inria, talked about building and testing wheel packages across different operating systems. Python wheels are a format that can be used to compile Python packages into binaries that can then be installed on multiple platforms. Clearly there are advantages to doing it this way, but I am not quite convinced, especially in regards to architecture-specific code and the different architectures that we have today (e.g., x86, Arch, Arch64, PPC, etc.). Also, because Fedora does not allow shipping binary files directly, wheel isn't an option for me. On the other hand, wheels might be an option for applications such as liveusb-creator or pyrasite, which aim at being cross-platform.
Graph Database Patterns in Python
Elizabeth Ramirez, a software engineer at The New York Times, presented an approach (as well as the tools and library) to store semantic concepts, link them, and navigate the graph they make. After the presentation, I took part in an interesting discussion about the difference between full-graph database and rdf databases, and what the former allows that the latter does not. Although I am still a little unclear about this difference, the conversation was great and the concept is one I would investigate further if I were still working with/on semantic web technologies.
Keynote: Van Lindberg
Van Lindberg, vice president of technology at Rackspace and Chairman of the Python Software Foundation, started his final day keynote by saying, PyCon is my favorite conference all year. I can't express how happy it makes me to be here. He discussed the state of Python and its community, and how the programming language grew from being a trendy language when it was created into something stable. He also talked about other languages that have entered the picture. One quote from his talk really stood out:
A group where people only interact when paid to do so is not a community; it's a bunch of mercenaries.
Keynote: Jacob Kaplan-Moss
Jacob Kaplan-Moss, Django core developer and head of security at Heroku, gave a great talk about the perception that developers have of themselves. For example, did you realize that there are two kinds of developers: the great ones, and the terrible ones? In reality, if the quality of developers could be quantified, we know that, just like everything else, the quality would follow a normal distribution: Most people would be average developers, and only a few would be great or terrible. If you have seen his talk, I would like to say: Hello, I'm pingou. I'm a mediocre programmer. If you haven't seen it, I invite you to watch the video because the talk was really inspiring.
Bokeh for Web Developers
Bokeh is a library that can be used to create interactive graphs, which can be included in web pages. In her talk, Sarah Bird gave impressive examples, and although understanding the different ideas, concepts, and the library itself would have been helpful before seeing this talk, I will dig into Bokeh more the next time I need to do data visualization.
WebSockets from the Wire Up
Although I have heard about HTML5 WebSockets, I haven't had the opportunity to play with them. Christine Spang, cofounder of Nylas, discussed the history and principles of WebSockets, giving a nice overview of what they can be used for. Now I want to play with them and build more reactive UI using WebSockets. For the projects I work on these days, however, I feel it would be a little overkill. Maybe for the next one.
This presentation was similar to the one Guido gave during the Language Summit, in which he presented the work coming into Python 3.5 to support type documentation in function definition. As in his summit talk, I like the idea, but the syntax of putting the type in the function definition is really not appealing to me. It makes the function definition both harder to read and, in some case, much longer. To be honest, I would love to see the same syntax be supported in docstring, which is where I believe it belongs. (Plus, as a bonus, it kind of encourage developers to document their code. If you start writing docstring for the type, maybe you can add documentation about the arguments themselves and the function, and so on.)
Keynote: Gary Bernhardt
Gary Bernhardt's keynote was probably the most technical keynote I saw, with the exception of Guido's presentation just before it. Gary, who runs Destroy All Software, presented a comparison between strong type languages and dynamic type languages.
And that's it for the talks I attended. There are more talks I would have liked to see, but either I was doing something else or there was another talk at the same time. Luckily, PyCon 2015 talks were recorded and quickly posted to the PyCon YouTube channel. Which PyCon videos do you think are the must-sees? Let me know in the comments.