(15/7 Edited to add links to DjangoCon videos.)
Last week PyCon AU 2013 began and ended in Hobart, the fourth such conference, and a new high. I have attended it each year so far and it has really gone from strength to strength, with sustainable growth and a markedly friendly and welcoming atmosphere, thanks in major part to Christopher Neugebauer who has been the lead steward of the conference for its two year stint in Hobart.
Friday was miniconference day and I sat in on DjangoCon AU, which I got a lot more out of than I expected, considering I am only a casual user of Django at best.
Porting Django apps to Python 3 (Jacob Kaplan-Moss; slides) had a lot of excellent advice that was not at all Django-specific. In his words, one of the benefits of writing Python 3 is that Unicode now “fails early” – if you’re getting it wrong, you’ll find out when you write the code, not 6 months after it’s been deployed and you get your first customer whose name has a diacritic. He talked about how to go about a “single source” approach – one set of code that runs under both Python 2 and 3. Apparently it is possible, with the help of a library called six. This seems like a more sane approach than running 2to3 and ending up having to maintain 2 codebases that slowly diverge.
Secrets of the testing masters (Russell Keith-Magee; slides) advocated for the use of factory_boy, which looks like a good way of avoiding using fixtures (which are hard to maintain) and also avoiding boilerplate in tests. It was originally written to support Django test suites but it also supports SQLAlchemy-driven projects.
Core Developer Panel – I recommend giving this a watch. They seem like a really thoughtful bunch of people; if I was looking for a web framework community to join I would feel really good about making it Django. I was struck by one of the speakers saying that although he was happy Django had brought people to Python, he was disappointed that some people apparently consider themselves “Django developers” rather than just Python developers, just as some companies advertise for “Django developers” rather than something more broad – I think it is a great point and an attitude that points to a healthy community.
On to the main conf. Nobody Expects the Python Packaging Authority (Nick Coghlan; src) was a bit of a history lesson but also, importantly, offered hope for the future. pip 1.4+ will support “wheels”, as an alternative to binary eggs, which is I think the main reason pip has not yet completely displaced easy_install. An “official” guide for how to do packaging is in the works – watch this space. PEP439 plans to add pip to the standard library – at least enough so that pip can bootstrap itself. Brilliant. Among the questions, tip of the week was to set the environment variable
PIP_DOWNLOAD_CACHE so that if you install the same packages into multiple virtualenvs, you won’t need to download each one separately. Win!
Building secure web apps: Python vs the OWASP Top 10 (Jacob Kaplan-Moss; slides) was a super helpful reference comparing the top 10 security risks in web apps against Django, Flask and Pyramid. (Here’s an endorsement – “Flask is perfect for slide-driven development”)
Software Carpentry arrives Down Under! (Damien Irving) was about bringing software carpentry workshops to Australia. These are for scientists who need/want to improve their programming practices, like using version control, how to design their software and test it. Such an important idea.
Using Cython for distributed-multiprocess steganographic md5sum-collision generation. For… reasons. (Tom Eastman) was a fun look at how to solve an unimportant problem to confound his colleagues with a text adventure game in his company’s pastebin. Yep. Reasons. :)
Modern scientific computing and big data analytics in Python (Ed Schofield) – this was a tutorial so it is longer, but a comprehensive overview of libraries like numpy, scipy, scikit-learn, ipython parallel, map-reduce options and many more. Pandas looks like the thing to use for reading large CSV-like data sets. It’s a better option than numpy because you can index by a label/name rather than an integer. It also comes ready with .plot functions which produce matploblib graphs – nice!!
Tinkering with Tkinter (Russell Keith-Magee, slides) was a bit more than the title suggested – as well as a new look at Tkinter, he introduced his proof-of-concept project cricket which is a GUI for running tests and exploring the results (initially only Django, but easy to add others). He argued that we developers are still using tools with a pretty crappy UX for no particularly good reason, despite decades of research showing the benefit of a good interface. I have to agree on the test running front – py.test output is better than average, simply by the use of colour (radical!) – but even so if I have more than about 3 test failures I often paste the output into a text file just so I can scroll through it and don’t miss anything. So I will definitely look at seeing if this can be adapted to py.test and adopting it.
My big gay adventure. Making, releasing and selling an indie game made in python. (Luke Miller) – the story of creating and selling the point-and-click adventure game My ex-boyfriend the space tyrant. If you only watch one talk from PyCon, make it this one. Excellent presenter, covered so many different perspectives in his short 25 minutes – now that’s how you give a talk. From the process of designing and writing a game to marketing it, this was funny, insightful and interesting. Despite not being the target audience in any way at all I think I’m going to sit down with a friend and play it because it looks like a bunch of fun.
Lightning talks on Sunday had two great ones – check out pip install python-nation by Jacob Kaplan-Moss (NB: watch this before running the command :P). The other one I like was by Duckie introducing CompCon, a conference for Australia computing students, but what I really liked about it was the impromptu interrupt for a brief critique of conference presentation styles.
Whew! My to-watch list is still long:
- Alex Gaynor’s keynote on Computer Science, Software Engineering, and the Scientific Method
- Testing: Choose Your Weapons
- Python iterators and generators
- Python? Ruby? Go? Oh my!
- Schemas for the real world
- Salt: how to be truly lazy
- Why I use py.test and maybe you should too
- Learning parseltongue: wizadry in Python
- Growing open source seeds by Kenneth Reitz
- Using Python to design, configure, and measure large-scale networks
- Transitioning from PHP to Django on the sly
- Buildbots rollout
Yeah, it’s a long list… aside from the first keynote, I didn’t miss any sessions. That just tells you how good the program was!