Sunlight at PyCon 2014

by

Last week, a flock of Sunlighters flew north to join fellow Pythonistas in the community’s annual celebration of hacking in the language we love. As a bonus, this year’s conference was held in Montreal, giving us a chance to learn some Français Québécois, sample the finest poutine and hang out with local Montrealer and [OpenNorth](http://opennorth.ca/) founder James McKinney. As usual, we learned a lot from the excellent talks, and had a great experience at the PyCon development sprints.

## The State of the Python Community is Strong

The Python community continues to earn its reputation as an inclusive and eclectic one, where hackers, researchers, newcomers and cutting-edge developers are both teaching and learning from each other. We’re happy that Sunlight Labs has attended for many years, and we’re better off for the experiences that we have at such an exciting conference.

The tone was set early this year. An [uplifting keynote](http://pyvideo.org/video/2587/keynote-john-perry-barlow) from John Perry Barlow, former songwriter for the Grateful Dead and co-founder of the [Electronic Frontier Foundation](http://www.eff.org), who seemed to be speaking directly to us at times:

> “…I dream of a day where the right to know is understood to be a natural human right that extends to every being on the planet who is governed by anything. The right to know what its government is doing, and how, and why. And I depend on people like you, who are building the plumbing.”

Other keynotes that stood out to us were [Fernando Pérez’s talk](http://pyvideo.org/video/2683/keynote-fernando-perez) on the amazing [IPython](http://ipython.org/) project and [Jessica McKellar’s talk](http://pyvideo.org/video/2684/keynote-jessica-mckellar) on the Python community’s role in encouraging a diverse population of American kids to engage with computer science in meaningful ways. These talks had a natural synergy, because IPython has given both teachers and researchers new tools with which to communicate and document good code practices as well as subject matter in fields like math, science and statistics. When Kaitlin Devine set up Python training for Sunlighters, her course made good use of [the IPython notebook](http://ipython.org/notebook.html) as a tool for engaging those new to coding.

The Open Spaces at PyCon, an unconference going on in parallel to the scheduled talks, also featured examples of excellent community building. The [Geekfeminism](http://geekfeminism.org) and feminist hackerspace meetup, Trans* Pythonistas and Allies meetup, and Regional PyCon organizer meetup are examples of conscious efforts to build a broader community that is welcoming to traditionally under-represented groups, and share ideas about the future.

## New Friends

Other sessions at Open Spaces included the “Birds of a Feather” (BoF) meetups. At the Data Workflow BoF, we saw some new offerings in shareable data visualizations from [plotly](https://plot.ly/plot), a (https://github.com/mozilla/eideticker) used at Mozilla for product testing and [lifelines], a [survival analysis](http://en.wikipedia.org/wiki/Survival_analysis) package developed by Cameron Davidson-Pilon (more [here](http://camdp.com/blogs/lifelines-survival-analysis-python)). At the Vim users BoF we met up with our PyCon buddy and fellow DC developer [Matt Boehm](https://twitter.com/mattboehm), developer of the excellent [unstack](https://github.com/mattboehm/vim-unstack), a plugin to help decode Python stack traces. A few other excellent plugins to brag about to your Emacs frenemies: [vimdeck](https://github.com/tybenz/vimdeck) for terminal-based slide presentations, [vim-ipython](https://github.com/ivanov/vim-ipython) for integration with IPython, and [syntastic](https://github.com/scrooloose/syntastic) for all your code highlighting and linting needs.

## Open Data Sprinting at Pycon

Finally, we’re happy to report that there was not one, but *two* Open Gov / Open Data BoFs! We organized one on Saturday night and also stopped in to talk with a separate one the following day. The second BoF was organized by Sarah Bird of [Aptivate](http://aptivate.org/), who was working on [Open Data Comparison](http://ocds.stage.aptivate.org/opendatacomparison) a project comparing metadata across different open sources of government contracting data. We all decided to sprint together, using a [shared hackpad](https://opencontractingdata.hackpad.com/PyCon-2014-Sprint-Projects-wpJvs8HRVED) and collaborate where we could.

During the sprints, James tried out some of the new devops software that was generating buzz at PyCon, including [Ansible](http://www.ansible.com) and [Vagrant](http://www.vagrantup.com/). Lindsay prepared FARA data for mapping. Paul made some new converts, both to Hy and to government transparency. Daniel worked on tests for the [python-sunlight](https://github.com/sunlightlabs/python-sunlight) package, which is a wrapper for [Sunlight’s APIs](http://sunlightfoundation.com/api).

This year’s sprints also saw the beginning of Bob’s [influence-usa](http://influence-usa.github.io/) project as a community-driven effort. [Michael Mulich](https://github.com/pumazi) contributed data validation and import scripts to our work on [federal lobbying disclosure](https://github.com/influence-usa/lobbying_federal_domestic). [Aaron Rothenberg](https://github.com/arothenberg) lent a hand in identifying the availability of campaign finance data in various states, and wrote some initial scraping code for [Ohio](https://github.com/influence-usa/campaign-finance_state_OH). Finally, we were lucky enough to receive some advice from [Catherine Devlin](https://github.com/catherinedevlin), whose [ddl-generator project](https://github.com/catherinedevlin/ddl-generator) (still under development) will be of immense use to projects like influence-usa and the unitedstates org. Because the ideal output of our transformation scripts is json text files, having a tool that suggests SQL create and insert statements will target a general need for RDBMS users that want to ingest that data.

## Our favorite talks

So many talks, so little ability to exist in multiple rooms simultaneously! There were some times when choosing between two co-occurring talks was difficult, but thankfully PyVideo had most talks posted very promptly — even the *same day* in many cases. Here are our staff picks:

### Paultag’s Hy talk

paultag delivers a talk on Hy. quote: "Hy turns out to be a really good way to talk about some of the neat Python internals we have"

Paul blows our minds with Hy

Coming in at an obvious #1 is our very own Paul Tagliamonte’s [“Getting Hy on Python”](http://pyvideo.org/video/2616/getting-hy-on-python-how-to-implement-a-lisp-fro). Call us biased, but Paultag commanded a very engaging talk despite difficult material and technical difficulties. Many attendees rushed the stage to discuss [Hy](http://docs.hylang.org/en/latest/), a Lisp that compiles to Python, with its creator afterwards.

### Broad Subjects

– [The Birth and Death of Javascript](https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript): We won’t be the only attendees to rave about this entertaining and insightful talk from Gary Bernhardt, set in the year 2035 and talking about Javascript’s surprising contributions to the world of software. – [Software Engineering Research for Hackers: Bridging the Two Solitudes](http://pyvideo.org/video/2696/software-engineering-research-for-hackers-bridgi): A fantastic introduction from Tavish Armstrong to falsifiable statistical research that aims to find conclusive evidence to many claims made about developer productivity and organizational decisions. – [Hello Physical World: A Crash Course on the Internet of Things](http://pyvideo.org/video/2594/hello-physical-world-a-crash-course-on-the-inter): Katherine Scott makes a Skinner box using Python, some simple electronics, and a RaspberryPi

### New Tools for Python Developers

– [What is coming in Python packaging](http://pyvideo.org/video/2677/what-is-coming-in-python-packaging): This talk was planned as a sneak peek, but ended up as a year-in-review, because development proceeded so swiftly on projects like [PyPI](https://pypi.python.org/pypi), [pip](https://pypi.python.org/pypi/pip), [devpi](http://doc.devpi.net/latest/), and [twine](https://pypi.python.org/pypi/twine/1.3.0). – [Fan-in and Fan-out: The crucial components of concurrency](http://pyvideo.org/video/2572/fan-in-and-fan-out-the-crucial-components-of-con): The asyncio module in the standard library of Python 3.4 introduces single-thread concurrency to python. This talk rocked Bob’s world. – [The State of Crypto in Python](http://pyvideo.org/video/2583/the-state-of-crypto-in-python): Drew says this is “almost too good to be true,” and recommends checking out the [recipe layer](https://cryptography.io/en/latest/#the-recipes-layer) of [cryptography](https://github.com/pyca/cryptography). – [Designing Django’s Migrations](http://pyvideo.org/video/2630/designing-djangos-migrations): The most significant addition to Django since 1.0 is the addition of database migrations in soon-to-be-released Django 1.7, and James learned a lot from this overview.

### How-to’s and Surveys

– [Subprocess to FFI: Memory, Performance, and Why You Shouldn’t Shell Out](http://pyvideo.org/video/2640/subprocess-to-ffi-memory-performance-and-why-y): Christine Sprang talked about why CFFI, a “Foreign Function Interface for Python calling C code.” Basically, you can wrap a C library while only writing a small amount of C surrounded by Python. She also explained how subprocess can be bad. – [Postgres Performance for Humans](http://pyvideo.org/video/2641/postgres-performance-for-humans): The ever-informative Craig Kerstiens advises us not to run our own Postgres server, but tells us what to do if we have to. – [See Docs Run. Run, Docs, Run!](http://pyvideo.org/video/2638/see-docs-run-run-docs-run): Co-sprinter Catherine Devlin survey’s the state-of-the-art in Python documentation, including a demo of [dexy](http://dexy.it/), a new and extremely powerful platform for thoroughly blurring the line between code and documentation. – [Developing Flask Extensions](http://pyvideo.org/video/2689/developing-flask-extensions): Great introduction to Flask and how-to for creating your own extensions – [Character encoding and Unicode in Python: How to (╯°□°)╯︵ ┻━┻ with dignity](http://pyvideo.org/video/2625/character-encoding-and-unicode-in-python): Paul called this a great overview of the topic, outstanding talk for anyone wanting to learn about handling Unicode properly in Python – [Django for Web Designers and Front End Developers](http://pyvideo.org/video/2624/django-for-web-designers-and-front-end-developers): None of us actually caught this talk, but we’ve heard good things and look forward to checking it out in a special screening with our intrepid design team.

### Computer Science Concepts

– [All Your Ducks In A Row: Data Structures in the Standard Library and Beyond](http://pyvideo.org/video/2571/all-your-ducks-in-a-row-data-structures-in-the-s): How Python uses memory and why the list object is the most dangerous one in the standard library! Very accessible intro to Python internals from Brandon Rhodes – [Computer science fundamentals for self-taught programmers](http://pyvideo.org/video/2588/computer-science-fundamentals-for-self-taught-pro): Lindsay (a recent migrant from our reporting group to Labs) appreciated this introduction to Big O notation, linked lists, and search algorithms. Bob, originally a double major in English and linguistics, has added it to his reading list for this weekend. – [Garbage Collection in Python](http://pyvideo.org/video/2633/garbage-collection-in-python): How CPython and pypy handle GC, and how you can configure an alternative in pypy. A bit more advanced, but a good intro to some low-level optimization concerns. – [Pickles are for Delis, not Software](http://pyvideo.org/video/2566/pickles-are-for-delis-not-software): Alex Gaynor’s talk was, as expected, educational and engaging. Alex tells us why we shouldn’t rely on the pickle object, with examples from pickletools.dis, a tool that shows the innards of Python’s native serialization object.

## Our Favorite Posters

– [cubes](http://cubes.databrewery.org/): Online Analytical Processing (OLAP) in Python. Hoping to see the databrewery folks at Transparency Camp! – [PYO](https://code.google.com/p/pyo/): Signal processing in Python – [MAME emulation with Python on a RasPi](https://us.pycon.org/2014/schedule/presentation/86/) – [PyAlgoViz](http://pyalgoviz.appspot.com/): Visualizing algorithms in the browser using Python, from the poster “How I Got a Job at Google”