pre-release: Kiwi PyCon meeting announcement

Please take a moment to review your details and reply with OK or edits.
Subject and below is what will go out and also will be used to title the videos.

Subject: 
ANN: Kiwi PyCon at Tutorial Track 2 Fri September 12, 10p


Kiwi PyCon
=========================
When: 10 AM Friday September 12, 2014
Where: Tutorial Track 2

None

Topics
------
1. Introduction to Web Security
Hugh Davenport
tags: tutorial
This tutorial will give attendees an introduction to Web Security. You will learn the many types of vulnerabilities, how easy it is to make use of a vulnerability, and most importantly how to protect against the vulnerabilities. A laptop is recommended, and an open mind with the willingness to learn, and to have all that you have learnt so far burst in a bubble.
 recording release: yes license: CC  

2. Python and the Pydata ecosystem for data analysis 
Nicolas Fauchereau
tags: tutorial
This tutorial will present the essential libraries and workflows used to create insights from data using Python. It will cover data ingestion and munging, simple statistical analysis and more sophisticated statistical modelling, as well as machine learning. It will also provide an overview of the python visualisation stack, from Matplotlib to javascript-based (D3) libraries. 
 recording release: yes license: CC  

3. Deep dive into understanding human language with Python
Alyona Medelyan
tags: tutorial
This tutorial will demo several open-source Natural Language Processing Python libraries, explain how they work and how you can use them effectively.
 recording release: yes license: CC  

4. Assemble, Develop and Deploy Python Programs with Buildout
Roman Joost
tags: tutorial
Buildout is used to assemble, develop and deploy python programs on different environments in a repeatable way. It uses explicit configuration and a modular system to achieve that goal. 
 recording release: yes license: CC  

5. Nick Coghlan: Python Beyond (C)Python (Keynote) 
Nick Coghlan

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Nick Coghlan:
Python Beyond (C)Python: Adventures in Software Distribution
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Keynote
http://kiwi.pycon.org/

**Slides**

https://speakerdeck.com/nzpug/nick-coghlan-python-beyond-c-python-adventures-in-software-distribution
 recording release: yes license: CC BY-SA  
 Video: http://www.pyvideo.org/video/3211/nick-coghlan-python-beyond-cpython-keynote 
6. Using Python to test industrial control system frameworks at CERN
Andrew Amesbury
tags: talk
This talk explores how Python has been used to develop a flexible test platform that is accessible to engineers and physicists without a formal software development background. The system enables users to automate the testing of components in the SCADA control system frameworks at the European Organization for Nuclear Research (CERN).
 recording release: no  

7. Seize control of your network with Ryu
Ewen McNeill
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Ewen McNeill:
Seize control of your network with Ryu
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2 
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Ryu is an OpenFlow Network Controller written in Python, which provides a framework to build your own Software Defined Network (SDN) that can run at full wire speed, using modern network switches. Come learn how to leverage Python to instruct your network to filter, switch, and route traffic precisely the way you desire.

**Abstract**

OpenFlow [1] is an industry standard protocol for controlling modern network hardware (and software switches -- such as Open vSwitch [2] in Linux), down to installing specific forwarding or filtering rules ("flows") into the hardware forwarding plane. Together with a well written OpenFlow Network Controller it allows you to create an intelligent Software Defined Network (SDN).

Ryu [3] is a OpenFlow Network Controller framework, written in Python, that is already extremely capable and still being rapidly developed (new releases every month). It has been adopted by the OpenStack [4] project amongst many others. Ryu implements the OpenFlow wire protocols and allows you to write event driven "apps" as Python modules, each running in their own eventlet. It comes with lots of examples. Your own apps can dictate switch forwarding and filtering policy in advance, or respond to new types of packets as they arrive. This gives you fine grained programmatic control over your network.

The talk will provide a brief outline of a how a Software Defined Network using Openflow works, and an introduction to writing your own Ryu "app" in Python. Plus plenty of pointers so you can get started experimenting yourself. Become the mad genius taking total control of your network!

[1] https://www.opennetworking.org/
[2] http://openvswitch.org/
[3] http://osrg.github.io/ryu/
[4] http://www.openstack.org/

**Slides**

https://speakerdeck.com/nzpug/ewen-mcneill-seize-control-of-your-network-with-ryu
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3214/seize-control-of-your-network-with-ryu 
8. Why Python rocks Solaris
James McPherson
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
James McPherson:
Why Python rocks Solaris
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

A number of organisations have realised that the relational model for databases is insufficient for certain scenarios. Graph databases are good at modelling relationships. This talk will introduce you to Neo4j (a graph database engine) with Python. How to set it up, how to use it and some questions you can answer with it.

**Abstract**

This talk will introduce you to Neo4j (a graph database engine) with Python. How to set it up, how to use it and some questions you can answer with it.

You don’t need any previous experience with Neo4j or NoSQL databases and very little experience with Python.

We'll cover: Introduction to Graphs Setting up your toolbox Neo4j and Cypher A simple real-world example use case with Neo4j

**Slides**

https://speakerdeck.com/nzpug/james-mcpherson-why-python-rocks-solaris
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3219/why-python-rocks-solaris 
9. A Testing Talk
Thomi Richards
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Thomi Richards:
A Testing Talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

This talk will contain my opinionated views on several topics, including, but not limited to:

 - Which areas of testing are well catered for, and which are not?
 - What sources of bugs are frequent, and very hard to test?
 - Should we perhaps start talking about unit tests less, and start talking about other forms of testing more?

**Abstract**

In my day job I spend a lot of time looking at projects that are part of Ubuntu, and trying to find out why they’re being released with bugs. This in turn leads to a lot of dissection of test suites, and a lot of discussion with my colleagues around tests, names of tests, why some tests are better than others, where the common gaps in test coverage are, how applications should be tested, where, when, and why certain test suites should be run, and other subjects too boring to mention.

Having done this for several years, I've started to form a few troubling thoughts about the state of automated testing in software development, and in python specifically. When taken together, these can start to form a rough and ready 'testing philosophy' - a way of looking at code and, by analysing it's structure and visibility, start to find gaps in it's test coverage.

This talk contains no silver bullets - no magical solutions, but does (hopefully) contain some interesting questions.

**Slides**

https://speakerdeck.com/nzpug/thomi-richards-a-testing-talk
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3217/a-testing-talk 
10. Find All the Books
Greig Roulston
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Greig Roulston:
Find All the Books
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

This is the story of how I stumbled into using Python, took on a project that is harder then I first thought and learned more then I ever wanted to know about bibliographic records, py(MARC), and how MongoDB blew my mind.

**Abstract**

The Digitisation team at National Library of New Zealan are looking at NZ books, lots of books. What needs to be digitised, what is already digitised and how do we get access to these books. This has been a journey of learning the archaic arts of MARC, learning and loving Python and working out how to handle large amounts of Library Data. This is still a work in progress, 2 years later and what started as checking data sets against each other in excel, has grown into me falling in love with Dictionary’s (JSON), making Flask web interfaces to explore data, Map Reducing data sets, making sweet graphs with MatPlotLib, using Python when ever I get a chance and even teaching some of what I have learned to other colleagues.

**Slides**

https://speakerdeck.com/nzpug/greig-roulston-find-all-the-books
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3221/find-all-the-books 
11. External dependencies in web apps: system libs are not that scary
Francois Marier
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Francois Marier:
External dependencies in web apps: system libs are not that scary
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2 
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Going to production is very different from setting up a development environment. We have great tools like pip and virtualenv for the latter but they lead to maintenance anti-patterns when they are used for production deployments. We don't "pip install apache" and instead leverage the QA and integration work of distro developers, so why not rely on distros for more than just the base system?

**Abstract**

Today's web applications often have a lot of external dependencies. Start off with a basic framework, sprinkle a couple of handy plugins or python modules and finish with a generous serving of JavaScript front-end libraries.

What you end up is a gigantic mess of code from different sources which follow very different release schedules and policies. Language-specific package managers can automate much of the dependency resolution and package installation, but you're on your own in terms of integration and quality assurance. Also, the minute you start distributing someone else's code with your project, you become responsible for the security of that external code.

You could of course decide to avoid the problem by writing it all yourself from scratch. Realistically though, you're not likely to go past the stage of a toy WSGI app using that approach because it's a lot of work.

This talk will examine the decision that the Libravatar [1] project made to outsource much of its maintenance burden to the distro by using system packages for almost everything.

[1] https://www.libravatar.org/

**Slides**

https://speakerdeck.com/nzpug/francois-marier-external-dependencies-in-web-apps-system-libs-are-not-that-scary
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3222/external-dependencies-in-web-apps-system-libs-ar 
12. Exploring The Philosophy of Programming
Xuanyi Chew
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Xuanyi Chew:
Exploring The Philosophy of Programming
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

One man's journey to internalizing the phrase "computer programs are just bits". It's merely a phrase, but one that can be deeply appreciated if time is taken to appreciate it. Talk will roughly be about bytes, types, computation theory, language design, and some life stories.

**Abstract**

It all started with a bunch of Python 3 code written in another language. What followed were explorations as to what it really means to be programming. Why are some languages easier to learn (Python)? Why is it easier to make mistakes in some languages (JavaScript)? And why are some languages totally alien (APL and its family)?

What role does familiarity play in being productive in a language? Why are there different paradigms in programming? What about the correctness of programs? Is one paradigm more correct than others? This talk explores the history of computer science, programming and the potential for the human race.

Ultimately, this talk tries to answer the question: is programming for humans or for machines? And what role Python plays in it. The question on the future is left to the audience to decide.

**Slides**

https://speakerdeck.com/nzpug/xuanyi-chew-exploring-the-philosophy-of-programming
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3225/exploring-the-philosophy-of-programming 
13. Python is slow, make it faster with C
Ben Shaw
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Ben Shaw:
Python is slow, make it faster with C
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2 
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Most people have heard that it's possible to integrate Python with C to give performance boosts to computationally heavy code, but because it seems daunting they've never given it a try. It's actually not as hard as you think. This talk covers some of the different methods of speeding up your code with C, and compares the results to those you can get from other methods, like using PyPy.

**Abstract**

Introduction

As developers, we like to work with Python because it's forgiving, quick to develop for and allows our code to be very dynamic. Unfortunately the trade-off for this magic is lower performance than compiled languages. Python can be sped up by offloading heavy algorithms to compiled C, using specially built C modules utilising the C Python API, or by integrating existing C libraries with using the python ctypes module. It is also possible to speed up Python using alternative interpreters, like PyPy, which uses a JIT compiler.

Pure Python Implementation

First we will take a look at a CPU bound algorithm written purely in Python, and see how it performs. The program reads data and prints results. The time it takes to run this will be considered the worst case scenario.

Pure C Implementation

The same program will be re-written in C, including the input and output logic, and we will compare the time it takes to run against the Python implementation. The results of the C implementation will be considered the best case scenario.

Custom Python Module with C Implementation

Python provides an API, C development headers and special C types, to allow the creation of a specially built bridges between Python and C code. In this example, the algorithm will be written in C, and bridged to Python with a custom Python/C module. Input and output takes place within Python, with C only performing the computation. With this method we can achieve near best-case speeds, at the cost of some additional (and sometimes complicated) C coding.

Bridging To C with ctypes

Introduced in Python 2.5, ctypes allows Python to integrate with pre-built C libraries without custom C code. This approach has the advantage over the custom Python/C Module of not needing to write a lot of boilerplate and bridging code in C. As with the Py/C implementation, C is used only to execute the algorithm, and Python takes care of input and output. Again, performance is close to best-case speeds, but the work to integrate with C is much less.

Alternative Python Implementations

PyPy uses a JIT compiler to offer impressive performance gains. The original Python code will be run through PyPy, and although the results might not be as quite as good as using compiled C, they come close, and the effort-to-gain ratio certainly makes it attractive option.

Conclusion

Each performance boosting option has its pros and cons, and when it's so easy to just use PyPy and get good results, why would you still use C? We'll look at some example use cases for each of the methods presented and why you would choose one over the others.

**Slides**

https://speakerdeck.com/nzpug/ben-shaw-python-is-slow-make-it-faster-with-c
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3226/python-is-slow-make-it-faster-with-c 
14. Packaging a Python desktop application using PyInstaller
Glenn Ramsey
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Glenn Ramsey:
Packaging a Python desktop application using PyInstaller
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

What PyInstaller does. How it works. How to use it. What to do when it doesn't work.

**Abstract**

This talk will be an introduction to using PyInstaller for packaging a desktop application on Windows and OSX. It will briefly outline how PyInstaller works and describe how to use it, with some simple examples. Finally some techniques to use for debugging a built package will be discussed.

**Slides**

https://speakerdeck.com/nzpug/glenn-ramsey-packaging-a-python-desktop-application-using-pyinstaller
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3230/packaging-a-python-desktop-application-using-pyin 
15. The Full Monty - CI on OpenStack
Danny Adair
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Danny Adair:
The Full Monty - CI on OpenStack
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1 
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Are you continuously "integrating", or just running some unit tests inside a virtualenv?

Let's go the Full Monty with OpenStack!

Protagonists, in order of appearance: Gerrit, Jenkins, OpenStack, Puppet, Odoo (formerly OpenERP). Enjoy the ride!

**Abstract**

I'll show how we configured our CI tools to automatically build and destroy entire servers on OpenStack. We'll have Gerrit for code review, Jenkins for coordinating and monitoring the build process, OpenStack and its tools to build servers on their own subnet, Puppet for configuring said servers. The example project is an installation of Odoo (formely OpenERP) with a web server and PostgreSQL database.

At Catalyst, my team works with Odoo (formerly known as OpenERP), a modular Open Source suite of business applications. It has a very large and complex codebase and "Regression" is its middle name. It is under very active development on github, and customisations are generally brought in via plugins that override or extend default functionality. Basically, reasonable work on this requires continuous integration, it's not a luxury.

We could have a fat build server with multiple virtualenvs and multiple databases on the same PostgreSQL server, and just run some Python tests and be done with it. We could improve that with something like LXC, Vagrant etc. all happening on said build server. But why stop there - why not go all the way and create a more realistic setup? After all, another team is able to provide us with OpenStack. Let's go the Full Monty!

Let's go hog wild and create and destroy entire servers just for the purpose of testing. Let's have separate application and database servers, just like in production.

Let's also keep some servers alive for other purposes, e.g., user acceptance testing. Just sit in an IRC channel and after changes are committed for review, wait for a bot to post the URL of the newly built web server to click on. A nicely readable URL on a separate subdomain that is, of course!

As a bonus, I'll show how active upstream development on github fits into all this, and how your Ubuntu "Precise Pangolin" server can easily rehearse an upgrade to "Trusty Tahr".

**Slides**

https://speakerdeck.com/nzpug/danny-adair-the-full-monty-ci-on-openstack
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3229/the-full-monty-ci-on-openstack 
16. Intro to flask-security
Beau Butler
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Beau Butler:
Intro to flask-security
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Turning your web app into a webapp-with-users looks like an onerous yak-shaving mission, full of DNS and email configuration, password databases, and so on. We will use the great flask-security metamodule, and a little bit of glue, to show just how easy this formerly-annoying process can be, from go to whoa.

**Abstract**

Say you’re using Flask, and your happy little app now suddenly needs an endpoint user-secured, Because Reasons… what do you do?

Either you hardcode a password in, hook up basic-auth, and go home,

OR, you face the fun of users, roles, the users need to sign up, now they’ve forgotten their passwords again, and so on. There’s really no middle ground.

Going from "open season" to "i want this function protected with a role permission" is a big old yak-shaving mission, full of DNS configuration, the dismaying realisation that now your app has to send email, and so on.

In the spirit of self-sufficiency and ‘DevOps’, this talk takes you from a bare 'hello world' flask app, through to a bare 'hello world' app with role protection for endpoints. We’ll start with a domain name and a VPS, and end with an app that people can sign up to.

We'll be using the great flask-security metamodule, and a little bit of glue, to show just how easy this formerly-annoying process can be, from go to whoa.

**Slides**

https://speakerdeck.com/nzpug/beau-butler-intro-to-flask-security
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3232/intro-to-flask-security 
17. Control All Your Programs with MIDI Controllers
Tobi Wulff
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Tobi Wulff:
Control All Your Programs with MIDI Controllers
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

MIDI devices are commonly used to provide input to audio applications, e.g. to play a synthesizer via a keyboard or to control a mixer in an audio workstation. This talk will show you tools for receiving input and processing messages, and how to control all of your programs with minimal configuration effort, the advantage being that not every single program has to be made natively MIDI aware.

**Abstract**

This talk will give a quick overview of the MIDI protocol and controllers which are commonly used to provide input to audio applications. These controllers can have the form of a musical keyboard, a mixer with knobs, sliders and buttons, or a combination of those. Some other variants use touch-sensitive trackpads or look like a drum kit. Then, the talk will go over the following tools: Python (duh), mididings (to receive and manipulate MIDI messages), xte (send keystrokes and mouse events to the Linux Xorg server) and some other necessary programs such as jackd to virtually connected MIDI inputs and outputs. I'll describe the steps needed to bring all those tools together and make it extensible to (hopefully, eventually) work on other OS as well.

mididings provides a Domain Specific Language (DSL) for MIDI processing which will be introduced as part of this talk. If you are doing anything with MIDI devices (and other external devices apart from keyboards) and feel like they pose some limitations on you (for example not supporting different customisable button assignments on the device), this will be of interest to you. xte will be used in a very basic way but if you haven't heard of it and want to send events to your X server, this is a great program. The possibilities are endless and we haven't even combined all the tools yet. This is about to change in the next step of the talk. A live demo/video will demonstrate how it all comes together into one beautiful piece of ingenuity and software engineering.

Finally, I'll discuss pros and cons of this solution versus other possible methods including native MIDI device support for various programs.

**Slides**

https://speakerdeck.com/nzpug/tobi-wulff-control-all-your-programs-with-midi-controllers
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3231/control-all-your-programs-with-midi-controllers 
18. Semver and Python with PBR
Robert Collins
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Robert Collins:
Semver and Python with PBR
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

PBR is a setuptools plugin which OpenStack developed to provide simple and consistent minimal-boilerplate build definitions for its projects. Semantic versioning provides simple and robust rules for deciding on version numbers, and PBR will soon be able to manage the entire process of version number assignment in a project... and more.

**Abstract**

PBR is a setuptools plugin which OpenStack developed to provide simple and consistent minimal-boilerplate build definitions for its projects. Now used by all the OpenStack projects, PBR provides integration glue for core features:

 - testing
 - binary package creation for Linux distributors
 - inclusion of files in tarballs
 - changelog and authors file creation
 - pypi summary creation
 - version number creation
 - sphinx doc stub creation and manpage enablement
 - unified requirements management
 - for both easy-install and pip with single-file control

The most interesting part is the version number creation, since coming up with the right version number can be a contentious discussion in some projects. Semver provides simple and robust rules for deciding on version numbers, and I'm in the middle of implementing automation for these in PBR itself, with integration glue to export them in PEP-440, dpkg and rpm format. The only dependencies PBR has are git + a recent pip, so this should be useful for many attendees - and while PBR is an OpenStack invention we're very interested in making sure its useful and reliable for anyone that wants to use it.

**Slides**

https://speakerdeck.com/nzpug/robert-collins-semver-and-python-with-pbr
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3235/semver-and-python-with-pbr 
19. Fixing Python
Teijo Holzer
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Teijo Holzer:
Fixing Python
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Discover a bug in a standard Python library, provide a reproducible test case, log a bug report with the Python maintainers, prepare & submit a patch. Get patch accepted into 2.x & 3.x master.

**Abstract**

This talk will provide a real-world walk-through of how to discover a bug in Python, prepare a reproducible test case and log a bug report. It will then continue to show on how to provide a patch and get it accepted and deployed into Python 2.7.7 and 3.4.1

**Slides**

https://speakerdeck.com/nzpug/teijo-holzer-fixing-python
 recording release: no  
 Video: http://www.pyvideo.org/video/3236/fixing-python 
20. tardis - an interpreter for command-line parallel execution 
Alan McCulloch
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Alan McCulloch:
tardis - an interpreter for command-line parallel execution
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

This talk is about simplifying the command line interface to local or cluster based parallel computing.

**Abstract**

Ideally the user of a command shell would be unaware whether their commands were executed as a single process on the local machine, or as many concurrent processes on either their local machine or a remote cluster, apart from the reduced time taken to complete the command if executed as concurrent processes. We have developed an approach which we call “command conditioning” in which the user marks up a command with hints to the interpreter which are used to transform the marked-up command into “(re)conditioned” native shell commands which the interpreter then launches concurrently and monitors, collects and collates output and termination status. We have implemented an initial python based command-conditioning interpreter called tardis. We describe tardis, give examples of the class of compute tasks for which it is suited, and briefly outline key compute-cluster design characteristics which support this approach. We also touch on future work such as potential integration with Galaxy, a popular python based workflow system.

**Slides**

https://speakerdeck.com/nzpug/alan-mcculloch-tardis-an-interpreter-for-command-line-parallel-execution
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3239/tardis-an-interpreter-for-command-line-parallel 
21. Java for Python Developers
Christopher Neugebauer
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Christopher Neugebauer:
Java for Python Developers
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Saturday, 13 Sep 2014 - Track 1 
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Stop looking at me like that.

No really. Stop it. I'm serious.

Calling Java APIs from CPython is one of the more interesting challenges facing developers who want to get Python working as a first-class language for developing apps for Android.

This talk looks at solutions, past and present, for making the world of Java accessible from Python.

**Abstract**

Stop looking at me like that.

No really. Stop it. I'm serious. Why are you looking so confused?

Yes. I'm talking about Java at a Python conference. What of it?

OK, well, I'm actually talking about avoiding having to code in Java, when circumstances almost certainly require you to code in Java… or at least require your applications to run in a Java environment.

One of the more interesting challenges for Python developers targetting Android is being able to call Java APIs from CPython. Environments like Android require developers to use Java to get access to Android's user interface libraries. Perhaps more importantly, Android has APIs for accessing hardware features like accelerometers and geolocation, and software features like notifications, but all of these have a Java interface.

This talk looks at how these problems have been solved, and where they haven't, approaches to solutions that might exist.

**Slides**

https://speakerdeck.com/nzpug/christopher-neugebauer-java-for-python-developers
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3240/java-for-python-developers 
22. Francesco Biscani: A Snake in Space (Keynote) 
Francesco Biscani

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Francesco Biscani:
A Snake in Space - The rise of scientific Python in Astrodynamics and Astronomy
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Keynote
http://kiwi.pycon.org/

**Slides**

https://speakerdeck.com/nzpug/francesco-biscani-a-snake-in-space-the-rise-of-scientific-python-in-astrodynamics-and-astronomy-keynote
 recording release: yes license: CC BY-SA  
 Video: http://www.pyvideo.org/video/3212/francesco-biscani-a-snake-in-space-keynote 
23. Deploying a Django application using Juju
Tim Penhey
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Tim Penhey:
Deploying a Django application using Juju
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Juju is a service orchestration tool for deploying services into public or private clouds. I will talk about how I deployed my Django application using Juju.

**Abstract**

Juju is a service orchestration tool for deploying services into public or private clouds. The services that Juju deploys are described in Charms. A Charm should use the "best practice" for deploying the service. In the case of Django, this would be using gunicorn and nginx. I explain how the postgresql charm communicates with the django charm, and how I had to change my application's settings and urls to work with the django charm. The application that is deployed is a "proprietary" app, and as such, the deployment of the application itself is done with another charm. The interaction between the subordinate charms and the principal django charm are explained, and how the data is exchanged between the charms. As well as the deployment story, I also explain how application updates are deployed very simply.

**Slides**

https://speakerdeck.com/nzpug/tim-penhey-deploying-a-django-application-using-juju
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3215/deploying-a-django-application-using-juju 
24. Cloud Craft for Spatial Cadets
Katie Miller
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Katie Miller:
Cloud Craft for Spatial Cadets
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

This session will give you the necessary know-how to get started with your own cloud-based mapping app project. The talk will cover the basics of Platform as a Service and introduce the open source OpenShift PaaS. Katie will demonstrate how to fire up an auto-scaling spatial app on OpenShift using Python and MongoDB, before hitting the app with some load to test the scaling spatial goodness.

**Abstract**

All over the web people are doing amazing things with spatial; this session will give you the necessary know-how to get started with your own cloud-based mapping app project. The talk will cover the basics of Platform as a Service and introduce Red Hat's open source OpenShift PaaS. There will be a demonstration of how to fire up an auto-scaling spatial app with Python and MongoDB on OpenShift. We will then hit the app with some load to experiment with the scaling spatial goodness.

**Slides**

https://speakerdeck.com/nzpug/katie-miller-cloud-craft-for-spatial-cadets

http://cloudcraft.codemiller.com/
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3216/cloud-craft-for-spatial-cadets 
25. An introduction to Python and graph databases with Neo4j
Holger Spill
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Holger Spill:
An introduction to Python and graph databases with Neo4j
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2 
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

A number of organisations have realised that the relational model for databases is insufficient for certain scenarios. Graph databases are good at modelling relationships. This talk will introduce you to Neo4j (a graph database engine) with Python. How to set it up, how to use it and some questions you can answer with it.

**Abstract**

This talk will introduce you to Neo4j (a graph database engine) with Python. How to set it up, how to use it and some questions you can answer with it.

You don’t need any previous experience with Neo4j or NoSQL databases and very little experience with Python.

We'll cover: Introduction to Graphs Setting up your toolbox Neo4j and Cypher A simple real-world example use case with Neo4j

**Slides**

https://speakerdeck.com/nzpug/holger-spill-an-introduction-to-python-and-graph-databases-with-neo4j
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3220/an-introduction-to-python-and-graph-databases-wit 
26. PyPy.js: What? How? Why?
Ryan Kelly
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Ryan Kelly:
PyPy.js: What? How? Why?
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

PyPy.js is an experiment in building a fast and compliant in-browser python interpreter, by compiling PyPy into javascript and retargeting its JIT to emit asmjs code at runtime. This talk will demonstrate the combination of technologies that make such a thing possible, the results achieved so far, and the challenges that still remain when taking python onto javascript's home turf.

**Abstract**

PyPy.js is an experiment in building a fast, compliant, in-browser python interpreter. By compiling the PyPy interpreter into javascript, and retargeting its JIT compiler to emit asmjs code at runtime, it is possible to run python code in the browser at speeds competitive with a native python environment. This talk will demonstrate the combination of technologies that make such a thing possible, the results that have been achieved so far, and the challenges that still remain when trying to take python onto javascript's home turf.

We'll cover: an overview of PyPy and why it's a good fit for this type of project; an introduction to asmjs and the rise of javascript as a compile target; what it looks like when you smoosh these two technologies together; a comparison with other approaches such as brython; and some concrete suggestions for how the result might be useful in practice.

**Slides**

https://speakerdeck.com/nzpug/ryan-kelly-pypy-dot-js-what-how-why
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3218/pypyjs-what-how-why 
27. Understanding human language with Python
Alyona Medelyan
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Alyona Medelyan:
Understanding human language with Python
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Novice

**Description**

Natural Language Processing (NLP) is an area of Computer Science that studies how computers can understand human language. This talk will explain the main principles behind NLP and introduce some key Python libraries.

**Abstract**

Natural Language Processing (NLP) is an area of Computer Science that studies how computers can understand human language. Thanks to NLP, one day you might have your own intelligent assistant who can understand any dialect, who can answer your questions by finding the right answers on the web, and who can help you communicate in any language through instant and accurate translation.

There are many challenges that still need to be overcome for this to happen, but in the meantime researchers have been finessing the building blocks required for NLP analysis. Some of the algorithms out there are quite powerful already. Many exist in Python and are readily available for any Pythonista to use.

This talk will explain the main principles behind NLP and introduce some key Python libraries. If you are interested in finding out more, please also attend the in-depth tutorial on Friday.

**Slides**

https://speakerdeck.com/nzpug/alyona-medelyan-understanding-human-language-with-python
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3224/understanding-human-language-with-python 
28. basil - making it easy to spin up best practice python web frameworks
Grant Paton-Simpson, Ben Denham
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Grant Paton-Simpson / Ben Denham:
basil - making it easy to spin up best practice python web frameworks
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Python is a great language for web development but spinning up Python web frameworks for development is still not as easy as it could be - especially if following a particular form of best practice e.g. altering the standard folder structure. Basil addresses this pain point. Use cases include students building basic web apps and experienced devs trying out less familiar web frameworks.

**Abstract**

Python is a great language for web development but spinning up Python web frameworks for development is still not as easy as it could be - especially if you're trying to follow a particular form of best practice e.g. altering the standard folder structure, or separating secrets (unversioned) from settings (versioned). And even if you are familiar with one framework, it may not be as easy to spin up another one. The basil project is an attempt to address this pain point. Use cases may include a teaching session where students are learning Python by building a basic web application. Or an experienced developer wanting to try out an alternative web framework. The presentation will look at some of the challenges involved in designing basil.

The talk will cover the following topics:

 - standard user experience of setting up a web framework for Python (contrasted with other languages)
 - the user experience of basil
 - use cases for basil (new developers, experienced developers, teaching)
 - existing alternative solutions
 - benefits of using vagrant

**Slides**

https://speakerdeck.com/nzpug/ben-denham-basil-making-it-easy-to-spin-up-best-practice-python-web-frameworks
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3223/basil-making-it-easy-to-spin-up-best-practice-p 
29. Multimedia programming using Gstreamer (and, of course, Python)
Douglas Bagnall
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Douglas Bagnall:
Multimedia programming using Gstreamer (and, of course, Python)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Gstreamer is a multimedia framework consisting of hundreds of interchangeable elements that can be plugged together like toy train tracks to create efficient processing pipelines. This talk will show how easy it is to put together reasonably complex Gstreamer pipelines with Python, and indicate why you might want to. It covers Gstreamer 1.x and both versions of CPython.

**Abstract**

Gstreamer [1] is a mature framework for developing applications that decode, encode, play, analyse, broadcast, or otherwise manipulate audio and video streams. It is used on phones and embedded devices, all over the linux desktop [2], and in giant multimedia displays.

It is easy to create simple Gstreamer pipelines using shell one-liners, but with Python it is possible to go beyond that, dealing with multiple parallel streams and reconfiguring pipelines on the fly. Examples drawn from real life problems include interleaving several hundred audio streams into one multi-channel stream and splitting a video stream into 4 parts and sending each to a different projector for perfect syncronisation.

It is also possible to write a Gstreamer plugin in Python, which will be briefly touched on.

[1] http://gstreamer.freedesktop.org/
[2] http://gstreamer.freedesktop.org/apps/

**Slides**

https://speakerdeck.com/nzpug/douglas-bagnall-multimedia-programming-using-gstreamer-and-of-course-python
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3228/multimedia-programming-using-gstreamer-and-of-c 
30. Bottle + uWSGI: simple web app configuration and fun hidden features
Reed Wade
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Reed Wade:
Bottle + uWSGI: simple web app configuration and fun hidden features
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

I will introduce the Bottle Python Web Framework and show how simple it is to configure a python web application to run under Nginx using uWSGI. I'll also demonstrate some lesser known features of uWSGI that let your web app work a little smarter.

**Abstract**

The Bottle Python Web Framework makes it easy to create a little web application. Nginx and uWSGI make it easy for your web app to scale and perform well. In this talk I'll describe how to create and configure an API focused web application.

I'll demonstrate some features of uWSGI which allow your web app to share data amongst separate processes and delegate work to non-client facing processes.

I'll show how all this can fit together with a full stack of: bottle+uWSGI+Nginx+Bootstrap+AngularJS

**Slides**

https://speakerdeck.com/nzpug/reed-wade-bottle-plus-uwsgi-simple-web-app-configuration-and-fun-hidden-features
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3227/bottle-uwsgi-simple-web-app-configuration-and 
31. Lightning Talks


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Lightning Talks
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

01 - Jen Zajac - PRIZE DRAW - 1:44
02 - Steven Ellis - LCA Auckland 2015 - 5:43
03 - Jay Gattuso - Heritage Preserve; #WeWantJam - 8:54
04 - James Polly - Fewer Boilerplate! - 12:07
05 - Aurynn Shaw - Let me show you the world - 16:19
06 - Ronen Baram - MySQL Performance Schema - 19:41
07 - Douglas Bagnall - Julia - 22:14
08 - Grant Paton-Simpson / Richard Shea - NZ Python Promotion Pamhplet 24:50
09 - Elliot Paton-Simpson - Blackbox - 27:23
10 - Danny Adair / Thomi Richards - New Zealand Python User Group - 30:45
11 - Ben Olsen - Docker & Python - 35:37
12 - Tim Penhey - Object Factories for TDD - 40:46
13 - Hamish Campbell - Horrible Python Obfuscation Tricks - 43:20
14 - Nick Wareing - Arduino Pull Request Notifier - 48:35
15 - Giovanni Moretti - Dynamically creating Python tutorials and presentations - 53:12
16 - Robert Coup - Bad-ass Postgres Tricks - 58:36
17 - Juergen Brendel - "One button" test and deploy on AWS - 1:03:59
18 - Tobi Wulff - Python Anti-Patterns - 1:09:14
19 - Sanjay Wadhwa - Map Production using Python scripts - 1:14:32
20 - Chris McDowall - Making weird maps with Python - 1:19:34
 recording release: maybe  
 Video: http://www.pyvideo.org/video/3213/lightning-talks-12 
32. Deploying test and production systems with Ansible
Juergen Brendel
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Juergen Brendel:
Deploying test and production systems with Ansible
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

This talk presents Ansible as a light-weight, simple and effective configuration management tool. We will see why configuration management is important and how we can use Ansible to automatically deploy and test full production clusters - showcased with a sample Django application - with just a single command and in a number of different environments.

**Abstract**

With modern configuration, deployment and orchestration systems, software developers can easily maintain, bring up and tear down local test systems, staging, demonstration and production systems, which are 100% identical to each other.

This presentation will give an introduction to Ansible, a modern, simple and efficient configuration management system. We will see how we can deploy complete clusters (with load balancers, database and some Django application servers), reliably and fully automated, either on dedicated servers, on local virtual machines or in the cloud.

If all goes well, there will even be a live demo in which we will bring up a complete cluster or two in different environments, to illustrate the power of this approach.

**Slides**

https://speakerdeck.com/nzpug/juergen-brendel-deploying-test-and-production-systems-with-ansible
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3233/deploying-test-and-production-systems-with-ansibl 
33. Making a scalable course search engine with python
Robert King
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Robert King:
Making a scalable course search engine with Python
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Experienced

**Description**

Creating a custom search engine with python on google app engine. Serve large spikes in search request traffic. Allow students to find course reviews across multiple universities and countries.

**Abstract**

 - introduction to the real world problem - Students need to be able to find university courses across multiple countries and universities.
 - first - explore how to solve the problem - collect course data & decide on a rough solution
 - second - create minimum viable product & see how people use it. Iteratively make it better.
 - second continued: Organise a big website launch event before you've created the website - then proceed to write 10K lines of code in the week before launch.
 - third - analyse the 50K most recent search terms & make a simple tree data structure to help improve search performance.
 - four - caching & cache invalidation
 - five - Maybe I'll do an online marketing campaign halfway through the talk and show graphs of the app responding in real time.

 - Covers Data analysis with python (csv, matplotlib, networkx, collections.Counter, logfile parsing)

 - Covers "Futures" - doing RPC calls in parallel.
 - Unit testing & simulating all things. - Being able to see how adjusting search functionality effects query times & quality of results.

 - Some tasteful jokes to keep things entertaining ;)

**Slides**

https://speakerdeck.com/nzpug/robert-king-making-a-scalable-course-search-engine-with-python
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3234/making-a-scalable-course-search-engine-with-pytho 
34. goto in python. Yes. Really.
Carl Cerecke
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Carl Cerecke:
goto in python. Yes. Really.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 2
http://kiwi.pycon.org/

**Audience level**

Experienced

**Description**

Unfortunately, python is missing the goto keyword. This talk rights this historical wrong by presenting a module that allows the use of goto within a function. An overview of the implementation is provided, along with rationale and performance results. Knowing what a decorator is will be helpful for understanding the technical part of this talk.

**Abstract**

goto in Python

 - A brief history of the goto statement.
 - Why have a goto in Python?
 - Previous attempts at goto in Python
 - Dynamically rewriting byte codes
 - Problematic constructs
 - Performance results
 - Future work

**Slides**

https://speakerdeck.com/nzpug/carl-cerecke-goto-in-python-yes-really
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3237/goto-in-python-yes-really 
35. Surprise features you didn't ask for
Mike Haworth
tags: talk
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Mike Haworth:
Surprise features you didn't ask for
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
@ Kiwi PyCon 2014 - Sunday, 14 Sep 2014 - Track 1
http://kiwi.pycon.org/

**Audience level**

Intermediate

**Description**

Some pitfalls of popular frameworks

**Abstract**

Frameworks enable developers to be enormously productive, but occasionally they include surprisingly unhelpful features. This talk will examine some recent bugs affecting Django as well as other popular frameworks and libraries. We will look at functionality, such as parsing of XML, that just doesn't behave as any reasonable person might expect, how this can be misused and what can be done to avoid the pitfalls.

**Slides**

https://speakerdeck.com/nzpug/mike-haworth-surprise-features-you-didnt-ask-for
 recording release: yes license: CC  
 Video: http://www.pyvideo.org/video/3238/surprise-features-you-didnt-ask-for 


Location
--------
Tutorial Track 2


About the group
---------------
Kiwi PyCon is an annual conference aimed at promoting and educating people about the Python programming language.  The New Zealand Python User Group is proud to present the ninth national Python conference in New Zealand.