This year, for the first time, I have been lucky enough that I could attend
PyCon, the Python Conference.
This conference changes location every two years and this year was the second
edition at the Palais des Congrès in Montréal, Canada.
Before I venture further into the conference itself, I would like to thank the
organizers. The location was great! The organization flawless! And, as an
attendee, everything went really smooth.
The conference itself is divided upon three sections
- The tutorials and the language summit (2 days)
- The conference per say (3 days)
- The sprints (4 days)
I did not attend the tutorials but I was invited to the language summit by
Kushal Das (PSF board member and CPyton contributor).
I was a unique occasion for me to meet and discover how things are discussed
and decided within the python community. I must say it made me want to
participate more in this community, join the mailing lists and, who knows,
maybe try to tackle some easyfix bugs :)
During the summit we had a number of presentation about alternative python
compilers like jython. We also had a short presentation by Guido about
changes coming in python 3.5 to support declaring types in the function
definition. Another interesting discussion was around the requests
library and if it could ever make it into the standard library. While I think
that specific question wasn't really answered during the summit, it triggered
some interesting discussion around endorsing some external libraries within the
documentation of the standard library (ie: advising users to use requests on the
urllib documentation pages).
Another really interesting topic that has been presented was the state of python
on mobile platform (Windows Mobile, iOS and Android). While there are still
some more work that needs to happen things seems to be progressing on that front
and I'm quite looking forward the day we'll be able to easily ship python
application in the different store.
The second day of the tutorials was more relax for me. I took this opportunity
to wander around Montreal a little and joined the crew of volunteers at the end
of the morning to help preparing the swag bags for every attendee of the
conference.
We first took out all the goodies shipped to the conference by the different
sponsors and align them on two long tables.
Then in the middle of the afternoon we started the 'bag stuffing' process :)
This is a complicated process in which experts are carrying bags along the two
long tables and another set of experts are translated items from the table into
the bags.
Placing myself at the very beginning of the chain, I have probably been in
contact with 2500+ bags of the 3000+ bags prepared (I would set the bags and
be helped by one or two person that would either give away the bags or help me
setting them up depending on the stash of prepared bags :)).
These were some interesting, fun, relaxing and sportive two and half hours!
If you have not had the opportunity to stuff bags this year and are going to
pycon next year, I highly recommend you to join this crew. It is a lot of fun!
The following three days have been the conference itself. To summarize, here
is an overview of the talks I went to over the three days:
Friday
- Opening: Julia Evans
- Keynote: Catherine Bracy
on the Coding For America project and in a broader
sense what I would call, civic coding. (ie: how developper can help
the community at large by making publicly accessible information and
tools).
This was a really great keynote, her talk was inspiring and
motivating as well as calling for further reflection upon the roles
of FOSS developper in our society within our field of expertise
(developing) but outside our traditional scope (web, desktop, OS, company).
- Machine learning 101: Kyle Kastner
This was also a very interesting talk going over the different
machine learning algorithm, libraries and use-cases. That helped
getting an overview of the field
- Introduction to HTTPS: A comedy of errors: Ashwini Oruganti & Christopher Amstrong
This was presenting what are the current issue when dealing with
https in general, within python or not. I can't say I learned new
things in there but it is always good to get refreshed on this topic
- Insite the Hat: Python @ Walt-Disney Animation Studios: Paul Hilderbrandt
This was a really interesting presentation about the use of IT in
general (and python in particular) at Walt-Disney Animation Studios
and of course it was full of pretty pictures from Big Hero 6 as well
as some other pretty pictures from a couple of other movies.
Paul also presented the overview of how animation movies are made and
how Disney developed their own tools to facilitate this process
insisting on the idea that the tools have to adapt to the artist
rather than the other way around.
- How to interpret your own genome using (mostly) python: Titus Brown
This talk presented tools and workflow that can be used to analyze
and compare genomes, taking a population that had a particular history
as example and going down into the genome to figure out what (at the
gene level) makes this population so specific.
It also gave an overview of the possibility for high-throughput
genome sequencing and the application that can derive from it as well
as touching the surface of the ethical concerns that raises from these
technologies.
- How to build a brain with Python: Tevor Bekolay
While still being bioinformatics this was a very different topic than
the previous talk I attended. This presentation was really about the
inner (ie: chemical and physical) modeling of neurons of a brain. The
presentation started by introducing a couple of application used to
model a single neuron and then introduce their own application used
to model several neurons at once.
Quite impressive and interesting presentation although knowing more
about the biochemical and biophysical properties of the brain would
have probably lead to a better comprehension of the work presented :)
Saturday
- Introducing python wats: Amy Hanlon
While I must say I knew most the example she presented of curious
behavior of python, I must say that I did not know completely the
reason of these behaviors. The presentation was really nice in that
it gave some clues and as well as some tools to help figuring out
what is actually happening in the code and why these, sometime
surprising, behaviors.
- Learning from other's mistakes: Data-driven analysis of python code: Andreas Dewes
This was an interesting presentation describing the approach develop
by this company to do static code analysis but considering the code
not as text but as a graph.
This approach allows to find out bugs in the code due to, for example,
typos in property names.
It seems that the service is freely available but unfortunately, if
I understood correctly, the tool is not FOSS.
- Technical Debt - the code monster in everyone's closet: Nina Zakharenko
The interesting bit about this presentation is that anyone that worked
on a reasonable size project could relate to what was presented.
There are many times where I thought that I have been in the situation
described and some time when I thought I wasn't doing too bad (but
here I guess it depends on the projects).
There were some good elements to help figuring out the size of the
debt as well as some good ideas on how to organize the work to reduce
this debt.
- Achieving continuous delivery: An automation story: James Cammarata
This presentation was about Ansible and how different companies are
using it to automate their deployments.
Several examples of companies were given, some even integrating
Ansible with an IRC bot allowing everyone on the IRC channel to see
what the other admins are doing.
- Build and test wheel packages on Linux, OSX and Windows: Olivier Grisel
Wheel are a format that can be used to compile python packages into
binaries that can then be installed on multiple platforms.
There are clearly some advantages in this but I am not quite convince
especially with regards to architecture specific code and the
different architectures that we have today (x86, arch, arch64, ppc...)
But anyway, since Fedora does not allow shipping binary files directly
wheel isn't quite an option for us. On the other hand it might be one
for applications such as liveusb-creator or pyrasite that aim at being
cross-platform.
- Graph database patterns in python: Elizabeth Ramirez
The presenter of this talk works at the New-York Times journal and
was presented the approach the use internally (as well as the tools
and library) to store semantic concepts, link them and navigate the
graph they make.
After the presentation I ended up having a very interesting talk about
the difference between full-graph database and rdf databases and what
the former allows that the later does not. While I am still a little
unclear about this difference, it was a really interesting conversation
and something I would like to look further into if I was still working
with/on semantic web technologies.
Sunday
This was a presentation from the head of the PSF board about the state
of the python community and python in general, how it went from being
a trendy language when it was created into something stable and sure
these days, but also how other languages are growing, potentially
threatening python by being the new trendy languages.
Community wise, I have written one quote from this talk that I really
like:
A community where people interact only when they are paid to do
so is not a community, it's a bunch of mercenary
- keynote: Jacob Kaplan-Moss
This was a great talk about the perception that we have as developers
of themselves. For example, did you realize that there are two kinds
of developers: the great ones and the terrible ones while if the
quality of a developers could be quantified we know that just like
everything else it would follow a normal distribution, ie: most people
would be average developers and only a few would be great and a few
would be terrible.
If you have seen it 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 it as it was an
inspiring talk, really.
- Interactive data for the web - Bokeh for web developers: Sarah Bird
Bokeh is a library that can be used to create interactive graph that
can be included in web pages.
The examples shown during the presentation were really impressive
and while it probably needs some understanding of the different ideas,
concepts and of the library itself, it is definitively something
I will look into the next time I have to do some data visualization.
- WebSockets from the wire up: Christine Spang
While I have heard about web-socket I have not had the opportunity
to play with them more than this. In this talk the history and
principles of web-socket was described, giving a nice idea of what
they can be used for.
I must say I know kinda want to play more with them, build more
reactive UI using web-sockets. However, for the projects I work on
these days I feel it would be a little bit overkill.
Maybe for next one ;-)
- Type hints: Guido Van Rossum
This was a very similar presentation to the one Guido gave during the
language summit, presenting the work coming in python 3.5 to support
type documentation in function definition.
Here, as well as during the language summit, I got quite enthusiast
about this 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).
This keynote was probably the most technical keynote we had (except
for Guido's presentation just before). It presented a comparison
between strong type languages and dynamic type languages.
This is 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 all the talks have been recorded and are available on
youtube.
Among the talks I would like to see are:
- Building secure systems - lvh
- What can programmers learn from pilots? - Andrew Godwin
- "Words, words, words": reading Shakespeare with Python - Adam Palay
- Is your REST API RESTful - Miguel Grinberg
- l18n: World domination the Easy Way - Sarina Canelake
- Good test, Bad test - Dan Crosta
- How our engineering environments are killing diversity (and how we can fix it). - Kate Heddleston
- Open Source for Newcomers and the People who want to welcome them - Shauna Gordon-McKeon
- Cutting off the internet: Testing applications that uses requests - Ian Cordasco
- Rethinking packaging, development and deployment - Domen Kozar
- Describing descriptors - Laura Rupprecht
- Avoiding burnout, and other essentials of Open Source self care - Katheleen Danielson
- Python performance profiling: the Guts and the Glory - A. Jesse Jiryu Davis
As you can see I'm in to spend few hours watching youtube videos :)
The third part of the conference was the sprints.
The idea of the sprints is to take advantage of the fact that many developers
come to the conference to keep them a little longer and offer them projects to
work on.
During these four days, you can see people hacking on Django, MailMan, Jython,
CPython itself, sage, pypy and many more projects.
I took this opportunity to spend more time with the people from my team
not that we don't work together most of the time but it is nice to be working
together in the same room.
As for the project, most of the time has been spent on making pagure closer
to something we would want to deploy/use.
I must say that at the end of this week, since are looking good. Pagure now has
support for webhooks, pull-requests can be assigned, they have a score and the
project can require a certain score for a pull-request to be merged.
Basically, for what I want pagure needs: a) more documentation, b) more unit-tests
and c) more tests and d) support to upload tarball/release (although this might
arrive only in 0.2).
So once documentation and unit-tests are there, I will tag a 0.1 release and
move pagure to production (I'll announce it here so keep in touch! ;-))
As final words, I started this (long, sorry) blog post with saying how lucky I
am to actually having been able to attend this conference and I would like to
thanks Red Hat in general and more precisely the OSAS team that funded my flights
and pass for the conference.