pre-release: PyConZA 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: PyConZA at Congo Room Thu October 6, 9:15p


PyConZA
=========================
When: 9:15 AM Thursday October 6, 2016
Where: Congo Room

None

Topics
------
1. Opening
David Sharpe
tags: Congo Room
Opening Ceremony
================

A general welcome and an introduction to all the exciting things that will be happening at PyConZA 2016!
 recording release: yes license:   

2. Keeping up with the pace of a fast growing community without dying
Flavio Percoco
tags: Congo Room
New open source communities are born everyday. Some of them are meant to last long and some others aren't. There's a moment in every community where it needs to outgrow itself, expand its limits and aim way higher than ever. This is no necesarily related to its goals but the ecosystem it needs to stay alive.

Once a community has gone beyond its limits, the community members, consumers and leaders will have to keep up with its pace. How do we help it to remain sane? How do we keep our goals on track while allowing for further growth? How do we allow it to keep expanding without further damaging the community?

These are all questions we ask ourselves everyday in the OpenStack community and that we've managed to work on without killing ourselves on the way.
 recording release: yes license:   

3. An introduction to interfacing with C using CFFI
Neil Muller
tags: Tugela Room
Python CFFI (C Foreign Function Interface) provides a powerful set of tools for interacting with C from Python.

In this tutorial, I will cover the basics of using CFFI, including the various modes it can be used in. I will also cover several of the more advanced aspects, such as callbacks, and describe the mechanisms for distributing modules that use Python CFFI.
 recording release: yes license:   

4. Running Django Applications on GAE - Flexible Environment(Previously Managed VMs)
Kenneth Kinyanjui, James Mwai
tags: Congo Room
Google App Engine was made Generally Available in 2011 and supported Python, Go and Java runtimes. From that time , we have seen many popular Python web applications deployed on Google App Engine’s Standard Environment. Even with the awesomeness of App Engine, Pythonistas felt limited by what the standard environment offered.  

App Engine Flexible Environment (Previously called Managed VM’s) solved the pain points that developers encountered: It allows developers to customize their Python runtime and even the underlying operating system using Dockerfiles. App Engine automatically scales your web app and offers automatic load balancing. 

This talk will explore how to implement microservices, authorization, SQL and noSQL databases, traffic splitting, logging, full text search, versioning, security scanning, memcache, and content delivery networks using App Engine Flexible Environment. This will be shown in practice through the deployment of a Python/Django Application on the App Engine Flexible Environment.
 recording release: yes license:   

5. Python, Pet of Architects
Navid Hatefnia
tags: Orange Room
Brand-new challenges have arisen in the field of three-dimensional space and form, such as; architecture, geometry, material, and even energy, which requires in thorough investigation and understanding of the outcomes to discover optimum design solutions. However, without this understanding, analysis and the overlay of interactive data seems impossible and fanciful. Although it was not possible to analyse and use data in traditional architecture, today it is getting real to do with the large volumes of information such as, annual climatic data, sun positions, environmental data, energy data etc. 

Python is the most adaptable and robust program which we use to analyse, overlay and optimise data in the field of architecture. We want to understand how it works in a three-dimensional program such as Rhino and how it can help us to develop our ideas and utilise the recent architectural design methodology, which is known as parametric architecture, or algorithmic architecture.

We will demonstrate 3 different experiences in the fields of; geometry, energy, and optimization, and what the approach of each is. Python aids the design of architectural elements through the relation of form to and data simulations. This would be of interest to those who want to see the future of algorithmic design for; architects, designers, and programmers. There is no experience needed, we just want to express the enjoyment these tools can add to three-dimensional design.
 recording release: yes license:   

6. Listen to the Snake
Travis Pawley
tags: Orange Room
Python is a great tool that's used in the music industry, anything from low level protocol support and device integration to streaming and application automation.  My talk will focus on:

MIDI
----

- What is it?  How does it work?
- CC - Control Change messages and how they are used in modern controllers / devices
- Mido - MIDI Objects for Python

OSC
---

- What is Open Sound Control?
- Live OSC and controlling Live from a mobile device
- PyOSC
- Ableton Live and Controllerism

Introduction to Ableton
-------------------------------

- Ableton's Live Object Model
- Python remote scripts and Ableton's API
- Demo:
-- Creating a new python remote script for a controller
-- Changing the state of the controller
-- Kicking off an action from the controller to Ableton using the LOM

Internet Radio
------------------

- What is Darkice
- What is Icecast
- Audio signal programming with Liquidsoap
- Tying it all together with Airtime and Python
 recording release: yes license:   

7. Scaling Django from server to browser through an efficient caching strategy
Hedley Roos
tags: Congo Room
At Praekelt we're responsible for high traffic sites built in Django. An efficient caching strategy is required to minimize server load and in this talk we illustrate the techniques we use to serve Telkom's web site.

The talk assumes basic Django knowledge.

We will touch on:

  1. Volatile caching with memcached as backend.
  2. Template fragment caching.
  3. View caching.
  4. HTTP caching headers and how they affect Nginx and browsers.
  5. Automated cache invalidation.
  6. Automated Nginx reverse cache purging.
 recording release: yes license:   

8. Python in Viral Bioinformatics Research
Trevor Bell
tags: Orange Room
The field of bioinformatics -- using computer technology to store, process and analyze biological data -- is relatively new, but is expanding rapidly. Many free and commercial tools, both online and stand-alone, are available. This presentation will describe the approach and tools developed in our research group at the University of the Witwatersrand. Although we research hepatitis B virus, many of the tools can be used with any biological sequence data (DNA, RNA or amino acids).

The tools cover several aspects of typical laboratory research, including tools to process sequence data, automate analyses and report variations in sequences. The tools were developed to be quick, lightweight solutions, which could easily be used routinely by researchers without extensive computer skills. Many of the tools have been developed in direct response to a specific need.

Topics covered will include the design approach (online, CGI-scripts, no frameworks) and the reasons for this approach, as well as the experience of working as the only bioinformaticist in a wet laboratory. Mention will also be made of other resources, such as R and SQL, in addition to Python.

Several of the tools have been described in published papers. The tools are all freely available online (http://hvdr.bioinf.wits.ac.za/tools) and source code for most of the tools is available via GitHub at the following address: https://github.com/DrTrevorBell
 recording release: yes license:   

9. Introduction to Test Driven Develpoment with Python
Humphrey Butau
tags: Tugela Room
Test driven development is a method of programming that has been talked about considerably over the past few years. It is a way of programming that aims to achieve good quality code, by specifying your problems through writing tests first. 

In my tutorial i will introduce the core concepts of TDD through creating a simple  web application using Python & Django. I will explain in detail the TDD workflow. Attendees to this tutorial will be introduced to functional testing with Selenium and  to unit testing with the Python Standard Library`s unittest Module.

My tutorial is aimed at beginners to Test Driven Development. I expect attendees to have some familiarity with python and Django.
 recording release: yes license:   

10. RevDB, a reverse debugger
Armin Rigo
tags: Congo Room
RevDB is an experimental "reverse debugger" for Python, similar to UndoDB-GDB or LL for C.  You run your program once, in "record" mode, producing a log file; once you get buggy behavior, you start the reverse-debugger on the log file.  It gives an (improved) pdb-like experience, but it is replaying your program exactly as it ran---all input/outputs are replayed from the log file instead of being redone.

The main point is that you can then go *backward* as well as forward in time: from a situation that looks really buggy you can go back and discover how it came to be.  You also get "watchpoints", which are very useful to find when things change.  Watchpoints work both forward and backward.

I will show on small examples how you can use it, and also give an idea about how it works.  It is based on PyPy, not CPython, so you need to ensure your program works on PyPy in the first place (but chances are that it does).
 recording release: yes license:   

11. Optimizing Python programs, PyPy to the rescue
Richard Plangger
tags: Congo Room
In this talk I want to show how you can use PyPy for your benefit.
It will kick off with a short introduction covering PyPy and its just in time
compiler. PyPy is the most advanced Python interpreter around
and while it should generally just speed up your programs there is a wide range
of performance that you can get out of PyPy.

Throughout the talk some developer statements and big applications will motivate why PyPy is a viable option
to optimize your Python programs. In addition I will present the companies value after switching to PyPy.

The first part, will cover considerations why one should write Python programs,
and only spend fractions of the development time to optimize your program.
The second part of this session will be about this small part
of time: in cases where you need it, I'll show tools that help you inspect
and change your program to improve it. We will also dive into one tool more elaborately.
VMProf, a platform to inspect your program while it is running, imposing very little overhead.

As a result of this talk, an audience member should be equipped with
tools that helps him to understand performance issues and optimize programs.
 recording release: yes license:   

12. Beating the bugs: simulating drug resistance in viral and bacterial DNA using Python and AWS
Imogen Wright
tags: Orange Room
As a species, we're engaged in a crucial evolutionary struggle, and we're losing: pathogens are evolving resistance to drugs faster than we can make new ones.  To slow down the clock and beat the bugs, we need to make sure that resistant pathogens don't get a chance to replicate unchecked in their human hosts.  This means doing drug resistance tests to ensure that we only give patients drugs that their infections will respond to.

At Hyrax Biosciences, our software developers build web services that use machine learning to analyse DNA for drug resistance. While building Exatype, our drug resistance testing platform, we ran into a classic problem: how do we build a validation test with a verified result, when we're already the most sensitive tool on the market?  To solve this problem, we turned to simulation.  This talk is about a multithreaded python tool (Biopython, multiprocessing, numpy, pysam) that simulates every stage of the evolution of HIV drug resistance and the DNA sequencing process.  Each run returns 300 unique, procedurally-generated HIV samples from "patients" with different histories and drug resistance profiles.  We host the tool on AWS and integrate with Slack to run validations and report results.

The code to simulate your own HIV dataset is available publicly at https://github.com/hyraxbio/simulated-data.  Other pathogens coming soon.
 recording release: yes license:   

13. Ensure Python Development: Practical strides that we can take to ensure Python skills development
Jessica Upani
tags: Orange Room
There are several countries such as Zimbabwe, Nigeria to name a few that have just started having python events in their countries and I would like to share what steps we are taking to ensure that we are not just organizing these events but we are also taking necessary steps to ensure that in the future we are actually really developing the skills of the new developers in our nations.

This will serve as motivation and it will give a sense of direction for these developing countries. In the end we are hoping to motivate more countries to follow our steps. We need to show each other support and share our actions, this will serve that purpose.

This talk does not need any expertise. It will benefit both new organizers as well as experienced organizers who have not taken some of these steps already.
 recording release: yes license:   

14. Experiments with test setup
Iwan Vosloo
tags: Tugela Room
Ever since test driven development took hold, people have been experimenting with different ways to deal with setting up and tearing down test objects and data (amongst other things).

Focussing on this particular concern (set up and tear down of test objects), this talk provides an overview of how the mainstream python tools have developed over time in this regard: unittest, nose and py.test. A bit of a wider context is also given in terms of two ideas pioneered by tools in other languages: the annotations of TestNG and resources of Smalltalk's SUnit. Two ideas that address problems beyond the reach of the tools themselves are also introduced, namely the "object mother" and "builder pattern".

Against the backdrop of this overview, I also show some of our own experiments (as part of [the Reahl project](http://www.reahl.org)) to translate a combination of the object mother and the builder pattern into Python -- with surprising results.

The talk is aimed at people interested in improving the ways we can do set up for tests and people who are generally interested in how tests can be made easier to write and more useful. I hope to stimulate more thoughts around the topic against the backdrop of a slight overview. The talk is accessible to newcomers to this topic as well.
 recording release: yes license:   

15. Some Less obvious uses of SQLite
Stephan Van Ellewee
tags: Congo Room
SQLite is arguably the most widely used database system if it's website is to be believed. From applications in aviation to the cellphone industry.

Yet another practical application that has been suggested by it's creator is that of an application file format. To quote the website: "SQLite does not compete with client/server databases. SQLite competes with fopen()."

In other words, instead of rolling out your own file format, why not use a file format that is accessible via a commonly known language (SQL)?

SQLite is included by default in a number of operating systems such as Blackberry 10 OS, Google Android, Net/Open/FreeBSD, Oracle Solaris 10, Apple OSX 10.4+ and Windows 10 amongst others. Programming languages with bindings for SQLite are C, C#, C++, Go, Java, Javascript, PHP, Python, Lisp and others. This means that SQLite can be used across a very wide range of the most popular devices and environments. Major operating systems support Sqlite out of the box, making it easy to port as well without needing to worry about cross-platform compatibility.

One example of how SQLite and Python could be of use is in incoming product information processing. We have various CSV or XML product feeds that provides locations to product images via a cabal of bash scripts. The idea would be to convert the information into a common format, ie SQLite rows and tables and allow jobs to process these rows, instead of creating bespoke scripts to act directly on the feed files themselves.

The obvious advantage of using SQLite and Python for this task is that it keeps overhead down and has the advantage of better structure, exception handling, portability and extensibility
 recording release: yes license:   

16. Contributing to python open source Infrastructure and projects
Joannah Nanjekye, Naggita Keziah
tags: Tugela Room
The python community has gained and seen improvement in tools because of the various contributions to its open source infrastructure and projects. Research shows most python open source infrastructure and projects are survived by an average of two contributors and yet companies are building palaces using this python open source infrastructure and projects since it's usually very easy to find the upstream source for them.

This talk shall focus on why python developers need to contribute to the python open source infrastructure and projects now more than before, how one can contribute to  python open source  Infrastructure and projects and what prominent python open source Infrastructure and projects are available to contribute to.

During this talk, we will discuss what open source really is, the difference between open source software and free software, licenses involved in open source software, why python project owners need to make their software open source, why python developers and students  need to contribute to python open source  Infrastructure and projects now more than ever , what python open source infrastructure  Infrastructure and projects contribution opportunities students have during summer. We will also have a walk-through of submitting a pull request to a python open source project using qutebrowser for an example for attendees who have never contributed to open source before.
 recording release: yes license:   

17. Stream processing made easy with riko
Reuben Cummings
tags: Congo Room
# AUDIENCE

- data scientists (current and aspiring)
- those who want to know more about data processing
- those who are intimidate by "big data" (java) frameworks and are interested in a simpler, pure python alternative
- those interested in async and/or parallel programming

# DESCRIPTION

Big data processing is all the rage these days. Heavyweight frameworks such as Spark, Storm, Kafka, Samza, and Flink have taken the spotlight despite their complex setup, java dependency, and intense computer resource usage.

Those interested in simple, pure python solutions have limited options. Most alternative software is synchronous, doesn't perform well on large data sets, or is poorly documented.
 
This talk aims to explain stream processing and its uses, and introduce riko: a pure python stream processing library built with simplicity in mind. Complete with various examples, you’ll get to see how riko lazily processes streams via its synchronous, asynchronous, and parallel processing APIs.

# OBJECTIVES

Attendees will learn what streams are, how to process them, and the benefits of stream processing. They will also see that most data isn't "big data" and therefore doesn't require complex (java) systems (\**cough\** spark and storm \**cough\**) to process it.

# DETAILED ABSTRACT

## Stream processing?

### What are streams?

A stream is a sequence of data. The sequence can be as simple as a list of integers or as complex as a generator of dictionaries.

### How do you process streams?

Stream processing is the act of taking a data stream through a series of operations that apply a (usually pure) function to each element in the stream. These operations are pipelined so that the output of one function is the input of the next one. By using pure functions, the processing becomes embarrassingly parallel: you can split the items of the stream into separate processes (or threads) which then perform the operations simultaneously (without the need for communicating between processes/threads). [1-4]

### What can stream processing do?

Stream processing allows you to efficiently manipulate large data sets. Through the use of lazy evaluation, you can process data stream too large to fit into memory all at once. 
 
Additionally, stream processing has several real world applications including:

 - parsing rss feeds (rss readers, think [feedly](http://feedly.com/))
 - combining different types data from multiple sources in innovative ways (mashups, think [trendsmap](http://trendsmap.com/))
 - taking data from multiple sources, manipulating the data into a homogeneous structure, and storing the result in a database (extracting, transforming, and loading data; aka ETL, data wrangling...)
 - aggregating similarly structured data from siloed sources and presenting it via a unified interface (aggregators, think [kayak](kayak.com))

[5, 6]

## Stream processing frameworks

If you've heard anything about stream processing, chances are you've also heard about frameworks such as Spark, Storm, Kafka, Samza, and Flink. While popular,  these frameworks have a complex setup and installation process, and are usually overkill for the amount of data typical python users deal with. Using a few examples, I will show basic Storm usage and how it stacks up against BASH.

## Introducing riko

Supporting both Python 2 and 3, riko is the first pure python stream processing library to support synchronous, asynchronous, and parallel processing. It's built using functional programming methodology and lazy evaluation by default. 

### Basic riko usage

Using a series of examples, I will show basic riko usage. Examples will include counting words, fetching streams, and rss feed manipulation. I will highlight the key features which make riko a better stream processing alternative to Storm and the like.

### riko's many paradigms

Depending on the type of data being processed; a synchronous, asynchronous, or parallel processing method may be ideal. Fetching data from multiple sources is suited for asynchronous or thread based parallel processing. Computational intensive tasks are suited for processor based parallel processing. And asynchronous processing is best suited for debugging or low latency environments.

riko is designed to support all of these paradigms using the same api. This means switching between paradigms requires trivial code changes such as adding a yield statement or changing a keyword argument.

Using a series of examples, I will show each of these paradigms in action.
 recording release: yes license:   

18. Public Python for the greater good
JD Bothma
tags: Orange Room
We at Code For South Africa use technology to facilitate promoting informed decision making for positive social change. This can mean generally being aware of what's going on, as well as deep critical research and analysis. We run the civic tech movement {code}bridge where people come and hack together or on their lonesome on civic tech projects. A quick summary will be given of some outputs of this community in Cape Town and Ethekwini.

We'll summarise some work we've done using mostly common python tools for the good of South African society. In particular I'll show how I've scraped and mirrored a government website on a tight budget at {code}bridge for better access to public information and seen usage pick up right after the local elections. We'll also show how a little bit of tech can empower citizens to hold government to account, and participate in the governing and development of our infrastructure. How presumably boring government notices really come to life when made accessible and personal.

This talk is aimed at anyone keen on making a big impact with a little bit of tech, and interested in improving lives. There are many low hanging fruit out there where lives can be improved with technology facilitating the necessary groundwork. I'd like to show you how easy it is to make an impact.

This is a heavily revised version of a talk given at DebConf 2016 with several new projects matured or launched since.
 recording release: yes license:   

19. Thursday Lightning Talks
Neil Muller
tags: Congo Room
Thursday Lightning Talks
===============

* **A Taste of Haskell for Pythoneers** by Pi Delport
* **Postgresql Foreign Data Wrapper development with Python** by Toufeeq Ockards

Submit a Lightning Talk
=======================

Email team@za.pycon.org with a title and a 2 sentence description of your talk.
 recording release: yes license:   

20. Panel Discussion: Teaching Python
Simon Cross
tags: Congo Room
Panel Discussion: Teaching Python
=================================

On Friday morning, there will be a panel discussion on teaching Python. The panel will follow a simple discussion format with panelists responding to questions from the audience.

Panelists
---------

* *Andy Rabagliati* (Centre for High Performance Computing)
* *Anna Makarudze* (Django Girls Harare, PyConZW organizer)
* *Jessica Upani* (University of Namibia, PyConNA organizer)
* *Michelle Kuttel* (University of Cape Town)
    
Simon Cross will be chairing the panel.
 recording release: yes license:   

21. Juggling GPU tasks with asyncio
Bruce Merry
tags: Congo Room
Getting peak performance with a GPU requires juggling concurrent tasks: copying data to the GPU, processing data, and copying results back off can all happen in parallel. In a distributed system, data arrives from the network and results are sent back over the network. Python's asyncio module is a great way to manage all these concurrent tasks while avoiding many of the hazards of multiple threads.

This talk will describe how I've used asyncio (actually trollius, the Python 2 backport) to make this all work for GPU-accelerated real-time processing in the MeerKAT radio telescope. I'll cover some helper classes I've written for ensuring that operations happen in the right order, and talk about how changing from a threaded model to trollius has simplified the code.

No experience with GPU programming or asyncio/trollius is required or expected. Some prior exposure to event-driven programming or coroutines in Python would be useful.
 recording release: yes license:   

22. Experiences debugging memory bloat and high CPU consumption in python
Alexandre Hardy
tags: Orange Room
Abstract:

This talk is targeted at python developers who develop long running services, which are susceptible to memory issues or unacceptable CPU usage (as determined by the developer or operations teams).  We focus on debugging techniques that we have used in constrained environments (production like environments) where installation of additional software packages is not permitted, and techniques which we were able to use to debug a python process without restarting it (to avoid state loss).

Topics covered in the talk:
   1. An example debugging session in which memory bloat is diagnosed.
   2. An example debugging session in which high CPU usage is diagnosed.
   3. Tools which can be used in debugging these issues, and their limitations.
   4. Some thoughts about improving how we think about python, and assumptions made by python developers.
   5. Projects we are (slowly) working on to help us debug python processes in production, or production like environments.

The audience should learn about some useful standard python libraries which can be used to debug memory and CPU usage related issues, and how they were effectively used to solve problems in an enterprise product. The audience will also be encouraged to think differently about python programming, and encouraged to think about what it means to select python (or any other programming language) for a given task.
 recording release: yes license:   

23. Open Source Software Initiatives in Zimbabwe
Anna Makarudze
tags: Tugela Room
Zimbabwean companies and individuals have been consumers of open source software for over a decade now. Nevertheless, developers in Zimbabwe have done little in terms of developing an active and vibrant open source community until 2015 which saw the establishment of PyZim. This is because affiliation to professional bodies is not heavily emphasized in most industries, especially the ICT industry. The economic challenges facing the country for the past two decades have also made affiliation to such organisations a luxury as the country has over 90% unemployment rate. 

Given this background, it is no surprise that setting up a vibrant Python user group has been fraught with many challenges. In my talk, I intent to share the journey we have traveled in setting up PyZim. I will also share our experiences organising Django Girls workshops and PyCon Zimbabwe 2016. I will also share with the audience the challenges faced, opportunities arising, benefits accrued and important lessons learnt through the experiences.
 recording release: yes license:   

24. Selling groceries online using Postgres, Flask, Docker & Android
Petrus Janse van Rensburg
tags: Orange Room
Startups are exciting. But choosing the right tech-stack can be a daunting task: You want to be able to move quickly right from the start, but also remain flexible as the technical requirements inevitably change.

In this talk I will describe my own experience of building out the tech stack for a mobile e-commerce startup. It will cover:
• an overview of the main design challenges
• the chosen architecture (database, server-side application layer, API and mobile client)
• how I used Flask to build the API
• how I used Flask-Admin to build a management console
• deploying the backend application using docker-compose.
 recording release: yes license:   

25. Reliably Distributing Binary Modules
Paul Kehrer
tags: Congo Room
Shipping Python libraries is easy! ...until you want to use a C library. How do you easily and reliably deliver software to users when they may not have the libraries you depend on, or even a compiler? How do you handle the significant differences between linux, OS X, Windows, FreeBSD, and other platforms Python runs on?

We'll walk through:

* The requirements for building C modules in Python.
* Why those requirements contribute to bad UX and create barriers to adoption.
* How wheels can be used to surmount many of these challenges.
* What kind of infrastructure is required to build these wheels.
* The advantages and potential disadvantages of binary distribution.
 recording release: yes license:   

26. Deep Learning in Python
Tobias Brandt
tags: Tugela Room
This talk will give an introduction to Neural Networks and Deep Learning in Python. We will cover some of the history of Neural Networks and obstacles that were encountered in the 1990s. This will then lead onto the developments in 2006 and 2012 that lead to the resurgence of interest in Neural Networks and the rebranding of the field as Deep Learning. These developments will be illustrated by means of an extended example of building a classifier of hand written digits on the MNIST dataset. We will start with a simple Multi-Layer Perceptron and then build this up into a Stacked Denoising Autoencoder. All code will be developed using the Keras framework and TensorFlow and can be run on a simple laptop.
 recording release: yes license:   

27. MicroPython: Python for microcontrollers and constrained environments
Christo Goosen
tags: Congo Room
MicroPython has risen from a kickstarter campaign to a feature rich implementation of Python 3 on microcontrollers. The project is summarized in the following statement: "MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments" (http://micropython.org/). With IOT gaining more momentum daily and devices such as the ESP8266 (https://www.sparkfun.com/products/13678) now able to serve web pages, MicroPython is a viable candidate for fast prototyping and simple embedded devices.

This talk will focus mainly on the ESP8266 & Unix implementation of MicroPython. The ESP8266 is an amazing device, considering it is the size of a R5 coin and can run an implementation of Python. The talk will cover features, limitations and some simple ideas to get going. A demo of a simple Home Automation/IOT application with MicroPython & the ESP8266 will also be included.

This talk aims to bring the familiarity of Python 3 to developers, with the hope of encouraging hack-a-day type projects without extensive embedded device knowledge.
 recording release: yes license:   

28. How to use python and flask to capture downtime losses on a production line
Ronald Tendai Maravanyika
tags: Orange Room
This talk is base on how to use python and flask to replace paper capturing type of the downtimes on a production line.Downtime refers to the time where the machine is stopped for a particular period/time while it is suppose to run eg breakdown.This project used python, flask and a mysql database and it was a web application.It was done as a case study for Unilever Zimbabwe (pvt) ltd.The project was done on two washing powder production lines. It was all about capturing and storing time losses and the specific type of the time loss in real time. I did this as my first python project so it it presents how you can come up with an idea from a different field and solve it using python.

Target audience will be mainly industrial engineers and beginners.It also showcase the use of software in production factories.This can also help students and learners on how creative they can become while doing a project either as an individual task or as an educational requirement.This talk will showcase how you can implement python in an enviroment where it is not known or used.
 recording release: yes license:   

29. Distributed Applications in Python: Celery vs. Crossbar
Adam Jorgensen
tags: Congo Room
In this talk I will discuss two specific methods of implementing distributed applications in Python. Distributed applications allow one to improve resiliency and performance, although this can come at the cost of increased complexity. The trick is to apply a distributed application framework in situations where that complexity is less significant than the benefits it provides.

Of the two systems I will be covering, Celery is by far the better known and more mature, with version 0.1.0 having been released in 2009. Celery is currently at version 3.1.23 and has come a long way in that time. Today it provides a stable and mature distributed task queue with a focus on real-time execution although it is also capable of cron-like scheduled operations. Celery is extremely flexible and configurable, although this comes at the cost of some complexity. Thankfully the documentation is rock solid and the community large.

Crossbar is a newer project that was first released in 2013. Compared to Celery it's less well known, has a smaller community and the documentation is definitely lacking in terms of quality and robustness. Despite these flaws Crossbar is a very exciting project that is very pleasant to work with once you've gotten past the initial learning curve.  While Celery provides a distributed task queue, Crossbar functions as a WAMP router. WAMP is a routed messaging protocol built on WebSockets that provides RPC and PubSub. As such it targets a slightly different space from Celery. That said, there is enough overlap for discussion.

Picking a distributed application framework can be tricky as there are a variety of options available. My aim with this talk is to compare and contrast two specific frameworks that I have some experience with, illustrating their similarities, differences, strengths and weaknesses. I will cover some basic examples for each framework and hopefully provide the audience with a better idea of why they might choose to use one or the other (or even both!).

There is no specific audience focus for this talk as I imagine distributed applications can be of benefit to many different use-cases. With that said, my background is in web development and hence my discussion of the two frameworks in question will probably draw on that experience. Regardless, I think that anyone with an interest in distributed applications could benefit from this talk.
 recording release: yes license:   

30. Data Mining and Processing for fun and profit
Reuben Cummings
tags: Tugela Room
# AUDIENCE

- data scientists (current and aspiring)
- those who want to know more about data mining, analysis, and processing 
- those interested in functional programming

# DESCRIPTION
 
Data mining is a key skill that involves transforming data found online and elsewhere from a hodgepodge of numbers into actionable information. Using examples ranging from RSS feeds, open data portals, and web scraping, this tutorial will show you how to efficiently obtain and transform data from disparate sources.

# ABSTRACT
 
Data mining is a key skill that any self proclaimed data scientist should possess. It involves transforming data from disparate sources and a hodgepodge of numbers into actionable information. Tabular data, e.g., csv/excel files, is very common in data mining and greatly benefits from python's functional programming idioms. For better or for worse, the leading python data libraries, Numpy and Pandas, eschew the functional programming style for object-oriented programming. 
 
Using examples ranging from RSS feeds, the South Africa Data Portal API, raw excel files, and basic web scraping, this tutorial will show how to efficiently locate, obtain, transform, and remix data from the web. These examples will prove that you can do a lot with functional programming and without the need for Numpy or Pandas.

Finally, it will introduce meza: a pure python, functional, data analysis library and alternative to Pandas.

IPython notebooks and sample data files will be distributed beforehand on Github to facilitate code distribution.


# OBJECTIVES

Attendees will learn what data and data mining are, why they are important. They will learn some basic functional programming idioms and see how it is ideally suited to data mining. They will also see in what areas the 20lb gorilla (Pandas) shines and when a lightweight alternative (meza) is more practical.

# ADDITIONAL INFO

## Level

Intermediate

## Prerequisites 

Students should have at least basic knowledge of python itertools and functional programming paradigms, e.g., map, filter, reduce, and list comprehensions.

Laptops should have python3 and the following pypi libs installed: bs4, requests, and meza.

## Format 

Students will be instructed in the completion of a series of exercises that will explore using python for data mining. It will involve lessons to introduce concepts; demos which implement the concepts using meza, beautiful soup, and requests; and exercises for students to apply the concepts. 
    
# OUTLINE

- [10 min] Part I
    - [2 min] Intro (lecture)
        - Who am I?
        - Topics to cover
        - format
    - [8 min] Definitions (lecture)
        - What is data?
        - What is data mining?
        - Why is it data mining important?
- [35 min] Part II 
    - [15 min] You might not need pandas (demo)
        - Obtaining data
        - Analyzing and Transforming data
    - [20 min] interactive data gathering (exercise) 
- [45 min] Part III 
    - [10 min] Introducing meza (demo) 
    - [20 min] interactive data processing (exercise) 
    - [15 min] Q&A
 recording release: yes license:   

31. Machine Learning in Python - Gaussian Processes
Philip Sterne
tags: Orange Room
Any time you have noisy data where you would like to see the underlying trend then you should think about using Gaussian processes.  They will smooth out any noise and give you a great visualisation of the error bars as well.  Rather than fitting a specific model to the data, Gaussian processes can model *any* smooth function.

I will show you how to use Python to:

- fit Gaussian Processes to data
- display the results intuitively
- handle large datasets

This talk will gloss over  mathematical detail and instead focus on the options available to the python programmer.  There will be code posted to github beforehand so you can follow along in the talk, or just scoop up the useful bits afterwards.
 recording release: yes license:   

32. Get Instrumented: How Prometheus Can Unify Your Metrics
Hynek Schlawack
tags: Congo Room
Metrics are highly superior to logging in regards of understanding the past, presence, and future of your applications and systems. They are cheap to gather (just increment a number!) but setting up a metrics system to collect and store them is a major task.

You may have heard of statsd, Riemann, Graphite, InfluxDB, or OpenTSB. They all look promising but on a closer look it’s apparent that some of those solutions are straight-out flawed and others are hard to integrate with each other or even to get up and running.

Then came Prometheus and gave us independence of UDP, no complex math in your application, multi-dimensional data by adding labels to values (no more server names in your metric names!), baked in monitoring capabilities, integration with many common systems, and official clients for all major programming languages. In short: a unified way to gather, process, and present metrics.

This talk will:

1. explain why you want to collect metrics,
2. give an overview of the problems with existing solutions,
3. try to convince you that Prometheus may be what you’ve been waiting for,
4. teach how to impress your co-workers with beautiful graphs and intelligent monitoring by putting a fully instrumented Python application into production,
5. and finally give you pointers on how to migrate an existing metrics infrastructure to Prometheus or how to integrate Prometheus therein.
 recording release: yes license:   

33. Building for 100x scale
Simon Kelly
tags: Orange Room
CommCare is an open source platform built in python (Django) designed for mobile data collection, longitudinal client tracking, decision support, and behavior change communication. CommCare provides an online application-building platform through which users build mobile applications for use by frontline workers.

The mobile application is used by client-facing frontline work workers as a client management, data collection and educational tool. Data entered in the mobile application is submitted to the CommCare servers.

Currently CommCare supports 14K active mobile users submitting over 1 million forms a month. With new national projects launching soon, it will need to be able to support 100K users and up to 10 million monthly forms by the end of 2016 and 1.4M users within the next few years. The current architecture would not scale to that level due to limitations of the database and increasing cost of ownership so we have embarked on an internal project to re-design critical pieces of the platform in order to support this scale up.

This talk will describe the old and new architecture and delve into some of the details of the new architecture and decisions we’ve made along the way such as changing our primary database, database sharding and stream processing.
 recording release: yes license:   

34. Computer Vision - Creating a complex color polling project using Python, OpenCV and Raspberry Pi
Irikidzai Muchaneta
tags: Congo Room
I will be talking about creating a computer vision classroom color poll sheet recognition project using Python, OpenCV and raspberry Pi. Specifically, looking at detecting color poll-sheets in a classroom of about 50 - 150 students. Much like how one can poll an audience of people using a clicker technology and show the results of the audience with regards to a question asked. 

- Audience is anyone interested in computer vision, what computer vision can do and achieve, as well as the hard work required to make it all happen.

- After the talk the audience can have a glimpse into what it takes to create a computer vision project, as well as the typical process and algorithm one would follow in a simple task of creating a computer vision project using python, opencv and raspberry pi. 

- A few aspects I will cover include:
        -  Computer vision goals 
        -  Simplified overview of the algorithm used 
        -  Going into a bit of detail where the challenges arise 
        -  Example of the the project i worked on
        -  Results achieved
        -  A few global interesting projects around computer vision

I will end with a demonstration on color polling the actual audience using 3-4 general questions and show them the results of the polling program, as well as any hard to detect areas and how the system detects these. :)
 recording release: yes license:   

35. Traversing the last mile to the financially underserved with Python
Ted Pietrzak, Sam Kitonyi
tags: Orange Room
For the typical mobile data environment  for smart phones there are many tools and frameworks available.  However, Jumo's customer base typically doesn't have access to data or sophisticated smart phones.  Instead, the customer journey is implemented using USSD with out-of-band communications by SMS.  Building a USSD framework to run as part of our application rather than having to add the operational complexity of another service was an obvious solution.  Python was a great fit for this work.  
 
This talk will be a developer’s look at how Jumo implemented a highly flexible USSD/SMS system with Python, built tools within our system to manage the complexity of multiple products in multiple markets and scaled up the system to many tens of thousands of transactions per day.  We will focus on how Python’s strengths fit well with the needs of text-based mobile messaging, what techniques are used to build it for scale, and how tooling was constructed to deal with the complexity of multiple user journeys.
 recording release: yes license:   

36. Python-assisted creative writing: managing dynamic gender in RPG scenarios
Adrianna Pińska
tags: Tugela Room
The ability to modify text programmatically through simple scripting can empower writers to make creative choices which would otherwise be impossible.

In this talk I will discuss why it is useful for the gender of characters in a live action roleplaying game scenario to be an easily changeable property, and introduce [Genderiser](https://bitbucket.org/confluence/genderiser), a Python script which is intended to assist non-technical writers in utilising this technique in their own work.

The talk is aimed at anyone who is interested in applying their programming skills to creative writing. I hope to encourage beginners to use Genderiser and adapt it to their own needs—whether they are creating a similar type of interactive fiction, or more traditional works such as novels or short stories.

There will also be a more technical overview of how the script works, and how I have attempted to distribute it in a form which is useful to non-technical users. I will also discuss future directions for the code, such as the addition of a graphical interface and use of better packaging and installation tools.
 recording release: yes license:   

37. Friday Lightning Talks
Simon Cross
tags: Congo Room
Friday Talks
==============


Submit a Lightning Talk
=======================

Email team@za.pycon.org with a title and a 2 sentence description of your talk.
 recording release: yes license:   

38. How development models affect the team
Maciej Fijałkowski
tags: Congo Room
There has been a lot said about how to ensure correct quality control using tests, continuous integration, peer review etc. In this talk I would like to focus exclusively on my experience as an open source contributor with various projects. I've contributed extensively to projects I don't manage (like twisted, mercurial, cpython) and I've overseen contributions by others to projects like vmprof or PyPy. I would like to share my experience on how various methods (tests, reviews etc.) make me feel as a contributor and how easy it is to integrate changes based on that. I think the human factor of contributions is often too omitted from the process.
 recording release: yes license:   

39. Closing
David Sharpe
tags: Congo Room
Closing Ceremony
================

The closing ceremony. A general wrap of the conference. There will also be announcements about sprints on Saturday and Sunday.
 recording release: yes license:   



Location
--------
Congo Room


About the group
---------------