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 Auditorium 1 Sat August 24, 9p


Kiwi PyCon
=========================
When: 9 AM Saturday August 24, 2019
Where: Auditorium 1

None

Topics
------
1. Conference Opening
Danny Adair

(Needs description.) 
 recording release: no  

2. Keynote: The Natural State Of Computers
Amber Brown

The renaissance of asynchronous programming can leave you asking 'how does this actually solve the problem?'. By investigating the common tasks that we as Python developers implement, we can find which ones are made easier with asynchronous techniques, and which ones are made more difficult.

Amber Brown ("HawkOwl") is a Python developer, Twisted maintainer, and general open-source troublemaker. Her interests lie mostly in networked systems, data processing, and the ethical intersection of computers and their users. In recent news, she shared her criticisms of the Python standard library at the Python Language Summit with "Batteries Included, But They're Leaking".
 recording release: yes license: CC BY-SA  

3. Python product dev tools for electronics
Barrie Duncan

"Automation dev tools allow us to work smarter not harder.  We have integrated Python into a large range of our electronic product development lifecycle.  This includes:
1. Simulators for new technology.
2. Code generators for embedded C firmware.
3. Automation testing and data analysis."

"High volume electronics product development can be very complex. Microcontrollers used in these products can run multiple control systems all operating in parallel. Automation with Python in each step of the product development life-cycle allows us to be very efficient and thorough in our development and validation processes.

The Python numba package has been key to developing a simulator of new motor technology recently invented. This allows prototyping control systems without any hardware, and also helps understand how the new technology will work.

Python code generators have been a major component to our latest embedded products developed. These write large sections of our embedded code based on high level specifications.  This includes features such as: creating fully redundant database configuration storage on only a few kB of flash; allows for blackbox storage features; configurable user interface, etc.

Over the last few years we have created an automation test system for helping to validate our product development. This test system was written in Python to ensure our developed products are of the highest quality capturing millions of test combinations when validating final products in their real environment without simulators. It is used for testing various motors and controllers and is designed to capture their data. With the comprehensive information captured from 24/7 testing sequences, we are able to provide both on-device analysis and post-processing analysis.

The system allows building new firmware using Python code generators, loading firmware onto real devices under test, exercising the system and analysing all the results.  Abnormalities are detected as they happen, and more complex faults can be found by post-processing the large amount of data collected from the automation regression test system.  This system even allows checking for data trends and relationships that were never thought of when the tests were originally ran.  Currently clients both locally in NZ and also in the USA use this system."

Barrie Duncan has been involved in the electronics and embedded software industry for over 20 years.  He worked at Schneider Electric in Australia, then in the USA developing high quality power industry products that must keep running 24/7.  Currently he runs a consulting company specialising in hard real-time systems which control high quality reliable products.  This includes using a range of software languages (C/C++/assembly), and electronics design to ensure a quality solution. Barrie has recently switched to using Python to help in his development processes including simulations, code generators, automation testing and data analysis.
 recording release: yes license: CC BY-SA  

4. Python for Public Transport
Alex Raichev

"I'll show you how to analyze public transport data with Python.
We'll focus on scheduling data in the form of General Transit Feed Specification (GTFS) and on the open source Python library GTFSTK, which i made and maintain.
As an example, we'll investigate Wellington's GTFS feed.

Keywords: Python, transit, GTFS, GTFSTK, Pandas, Shapely
 
Alex likes programming in Python and does it heaps on and off the payroll. A lot of civic hacking.
 recording release: yes license: CC BY-SA  

5. Parallelism in Python
Rounak Vyas

Python as a language has enjoyed a decade of usage in both industry and academia. It has been the most popular abstractions to scientific computing and machine learning, yet the base remains single-threaded. Just how is productivity in these fields being maintained with a single-threaded language?

"Python has a terrible reputation when it comes to its parallel processing capabilities. Ignoring the standard arguments about its threads and the GIL (which are mostly valid), the real problem with parallelism in Python isn't a technical one, but a pedagogical one. The common tutorials surrounding Threading and Multiprocessing in Python, while generally excellent, are pretty “heavy.” They start in the intense stuff and stop before they get to the really good, day-to-day useful parts. 

The talk will highlight the impact of Global Interpreter Lock on multithreaded programs and include code snippets to compare single and multithreaded programs using a real life example. Then, we move on to the concept of multiprocessing and the address its benefits over multithreading and mention some examples for it. The talk will end with an application of multiprocessing in the area of Computer Vision and how it speeds up the completion of a task by 82%.

Moreover this talks aims to inspire both novices and experts to look more into this subject and create something that could possibly be of benefit to the entire python community around the world."

My name is Rounak Vyas, I’m currently a junior at SRM University Chennai, India. I’m majoring in Information Technology. I’m a student researcher at Next Tech Lab and also a member of the Artificial Intelligence Research Team in the Association of Computing Machinery - SRM Chapter. My area of research involves working with computer vision models and multi-agent reinforcement learning, I’ve been a speaker at two Tech conferences in India: PyData KTR and ChennaiPy, talking about the parallel processing capabilities of python.
 recording release: yes license: CC BY-SA  

6. How to Write Python Code Others Like to Use
Anna Tisch

What makes an API Pythonic? If you are writing Python code you want to share with the world, or maybe just within your team - how can you design it in a way that's intuitive to use and easy to navigate for both the beginner and the expert.

Originally from Wellington, I have been writing Python tools for other developers for over 8 years. Now working with Microsoft in Seattle, I build Python SDKs for Azure cloud services.
 recording release: yes license: CC BY-SA  

7. I'm So Meta Even This Acronym...
Curtis Maloney

Ever wanted to better understand metaclasses?

"Generally the advice when people first encounter metaclassing is ""you won't need it"", or ""it's deep voodoo!""
I hope to dispel some of the mystery, and explain the role metaclasses play in Python, and how you can utilise them in your daily coding life."

Curtis (aka FunkyBob) started using Python over 20 years ago, and has never looked back. He is a member of the Django core team, and currently works for Survata as a Data Engineer, herding Pandas.
 recording release: yes license: CC BY-SA  

8. Getting started with MicroPython on a microcontroller
Glenn Ramsey

Using MicroPython on an ESP32 board to make a simple soundmeter

This talk will be about getting MicroPython installed on an ESP32 development board and using it, along with other components assembled onto a breadboard, in a live demonstration to create a soundmeter with visual output.

I'm a software developer currently working in Python, C++ and Javascript on desktop, mobile and embedded applications. In my spare time I ride horses and/or dirt bikes with my family and sometimes tinker with electronics.
 recording release: yes license: CC BY-SA  

9. Let everyone enjoy your videos with python
Wing Kin Chan

This presentation will go through the implementation of a flask service for HLS and MPEG-DASH streaming service. It will demonstrate developing APIs for Apple HLS and MPEG-DASH with flask, python-FFmpeg and python-mpegdash.

"Background: 
1. HD Video file is too large for instant play
2. Streaming Protocols is the solution for providing instant playback for customers
Problems:
Mobile OS and Browser war controls the streaming protocols
Solution:
Develop a one-stop application for handling HLS requests and MPEGDASH requests
How?
Python’s wide range of libraries, such as flask for API implementation, python-FFmpeg for media transcoding and python-mpegdash for manifest manipulation
Business benefits:
1. Save computation time
2. Less storage cost

Key Take-Aways:
Higher cost efficient with HLS/MPEGDASH to share the same fragments
Customers will benefit from streaming protocols "

I am an experienced Software Engineer, focusing in multimedia technologies. My interest are streaming protocols implementation, media encoding optimisation and content delivery network design.
 recording release: no  

10. The journey of building a production-ready managed Kubernetes service
Feilong Wang

In this presentation we will share Catalyst’s public cloud journey in building a production ready managed Kubernetes service on top of OpenStack.

"Platform services have came a long way. Not only they are getting more popular, but they are also driving true multi-cloud interoperability. The combination of OpenStack and Kubernetes is becoming a standard option to allow users to benefit from both virtual machines and containers for their cloud-native applications.

In this presentation, the following items will be covered: 
* Network isolation with K8s network policy 
* Persistent volume integrated with OpenStack Cinder
* Loadbalancer and Ingress integrated with  OpenStack Octavia 
* K8s and OpenStack Keystone auth integration 
* K8s rolling upgrades and node patching
* Cluster auto healing"

Head of R&D at Catalyst Cloud, a public cloud based in New Zealand built on OpenStack. Project team lead on OpenStack Container Infra Management service(Magnum)
 recording release: yes license: CC BY-SA  

11. Using Python, Django, and ruthlessness to protect people from social media harassment.
Tom Eastman

In this talk, I present 'secateur', a tool for Twitter users to protect themselves from some forms of online harassment. I discuss using Python and Django to create tools that integrate with Twitter, use its APIs, and block lots of people (LOTS of people).

"In some ways, Twitter seems like it was designed from the ground up to be the perfect tool for harassment. The social media phenomenon of 'dog-piling' can make life hell online. Twitter's own mechanisms that are supposed to protect users sometimes seem to be pretty inadequate to the task.

So I decided to make a few of my own.

I've built an open-source web app, 'secateur', that gives people a bit of power to protect themselves in a hostile online environment.

Along the way, I got to grapple with some interesting challenges:

- The technical aspects of scraping Twitter and using their APIs for blocking and muting lots of people (LOTS of people). Dealing with an occasionally surprising API with strict (and surprising) rate-limiting behaviours.

- How to build something beyond a Python script -- aiming to be a tool that other people can use to protect themselves, and that would be affordable to host.

- The threat landscape you need to consider when building a tool that's for people who are being attacked online.

- What's 'fair', and what's 'censorship', when it comes right down to it?"

"Tom Eastman is a developer, systems engineer and occasional security consultant living in Wellington, New Zealand. Tom (still) writes words that control computers to tell other computers to build FAKE computers that run on DIFFERENT computers.

- [Tom Eastman](https://tom.eastman.nz)
- [Twitter](https://twitter.com/tveastman)"
 recording release: yes license: CC BY-SA  

12. Building an interactive training environment using JupyterHub
Graham Dumpleton

JupyterHub is used to run and manage Jupyter notebook instances for multiple users at the same time. Did you know though that you can use JupyterHub to spawn applications other than Jupyter notebooks? Come see how JupyterHub was used to create a multi user interactive training environment.

In this talk you will learn what JupyterHub is and how it works. You will be stepped through how JupyterHub was used to implement a multi user workshop environment running in Kubernetes. Instead of creating Jupyter notebooks, JupyterHub was used to create user environments in Kubernetes which gave the user access to an interactive Linux shell environment in their web browser, along with workshop course notes and presenter slides, in the same integrated dashboard view. Because the user environment provided all the tools required for the workshop, users were immediately good to go, with no need to install anything locally on their own computer.

Graham is the author of mod_wsgi, the Apache module for hosting of Python web applications using the WSGI interface, and the author of wrapt, a decorator and monkey patching library for Python. He also has a keen interest in docker, Kubernetes, and Platform as a Service (PaaS) technologies. He is currently a developer advocate for OpenShift at Red Hat.
 recording release: yes license: CC BY-SA  

13. From Pascal to Python
Steve Dunford

A look at the journey schools (specifically Burnside High) have taken from no computers to students being able to take courses in computer science, software engineering, game development and microelectronics.

"The Gestetner machine was the coolest piece of technology in schools when I was young.  The smell of that blue ink on newsprint paper will live with me forever, but times change and so does technology.  By the time I left high school we'd gone from that to having 12 BBC micro's in one classroom - one of them even had a disk drive.  But everything done on those computers was at a hobby level, and there were no educational achievements gained from them as far as 'The System' was concerned.

Fast forward (quite) a few years to the new millennium, and computers were starting to become a lot more prevalent in schools - and some departments, often Maths, even used them in teaching.  But there still weren't any great educational outcomes from this use (although for those of us who were true nerds at school this was probably the best class of all, regardless).  

In the early 2000's a small group of teachers started fighting to get some proper standards in place - and not just the older Unit Standards which tended to be quite simple, and quite prescribed (click here, do this, get that) - but the new Achievement Standards which allowed students to gain tertiary-applicable NCEA credits while learning useful skills.  Success meant that in 2011 the first iteration of these standards was rolled out across NZ.  Standards that also allowed teachers to customise a course to their own skillset, vitally important given not all teachers are Software Engineers.

This talk is on how we use Python and related tools to enable our students to learn great skills and deliver awesome projects in (and sometimes despite) the system."

Steve Dunford is a grumpy old Teacher of Digital Technologies at Burnside High School in Christchurch where he teaches Electronics, Computer Science and Software Engineering.  In his spare(?!) time he is a vintage radio nut and part-time pretend farmer.
 recording release: yes license: CC BY-SA  

14. Automate Your Integration Tests Using pytest-docker-compose
Phoenix Zerin

"Sometimes unit tests aren't enough, and you need to actually deploy your solution to see how it behaves as a whole.  Utilities like docker-compose make it easy to stand up an entire environment, but the actual testing part still has to be done manually... or does it?

Learn how to automate your integration tests using pytest-docker-compose today! 😺"

"At Centrality I worked on the team building the PL^G blockchain.  We had comprehensive unit tests for every component, but some features could only be tested reliably by spinning up a group of nodes and broadcasting real transactions to the network.

We got really good at manually deploying a network, and we wrote some super slick tools to send test transactions.  But, the whole process was still embarrassingly manual.

Eventually I got sick of typing `docker-compose up` and wondered if there might be an easier way... and that was when I discovered that docker-compose is actually written in Python!

A few hours, lots of coffee, and just a smidgeon of cursing later... pytest-docker-compose was born!

And from that day on, no-one was ever forced to type `docker-compose up` again, and they lived happily ever after 😺

In this talk, you will learn:
- How to use Docker and docker-compose to quickly deploy a solution.
- How to use py.test to design and write automated unit tests.
- How to use the pytest-docker-compose plugin to create and run automated integration tests.
- Just how seriously I take my cat emojis 😻"

"Phoenix has been developing and architecting software applications for nearly 15 years, most notably completing a 5-year stint as a digital nomad in South America.

He has created or been a significant contributor to 25 open-source projects in active use, most notably PyOTA (the Python library for the IOTA cryptocurrency) and Filters (data validation and pipelines made easy!).

Also, he really like cat emojis.  A lot.  You've been warned 😸"
 recording release: yes license: CC BY-SA  

15. Keynote: From NASA to Startups to Big Commerce
Daniel Roy Greenfeld

While aircraft and spacecraft disasters are extremely visible, the impact of software mistakes on more pedestrian efforts can affect significantly more people. For example, applications that handle catastrophe or infrastructure. Fortunately, the lessons learned building aircraft and spacecraft can be extended for build projects of any size or scale.

"Daniel Roy Greenfeld has 22 years of experience in the technology industry. He previously worked for NASA where he earned an Award for Excellence for his work on numerous large-scale software systems before moving on to various startup and corporate jobs. Daniel also co-authored the Two Scoops of Django: Best Practices book series with Audrey Roy Greenfeld. He's created or leads numerous open-source projects, the most significant being Cookiecutter. He is a Fellow of the Python Software Foundation and received the Frank Willison Memorial Award for contributions to Python. At BriteCore, Daniel serves as a Vice President of Engineering, overseeing the Generation 2 engineering systems.

In his free time, Daniel enjoys spending time with his wife and baby daughter."
 recording release: yes license: CC BY-SA  

16. Turning 'wat' into 'why'
Katie McLaughlin

To a seasoned dev, using a different programming language might be... an experience. Everything is a double? Equality isn't equality?! WAT!?! There are two directions this could go: "Oh, this language is TERRIBLE. I HATE IT". Or: "Huh.. I wonder why that is..." Take a trip along the latter path through a dozen different languages and understand why things the way they are.

"Programming languages are repeatedly touted to have strange edge cases. Footguns. Wats. The canonical 'wat' talk (https://www.destroyallsoftware.com/talks/wat) shows some of these for Ruby and JavaScript, but doesn't go into any detail into the 'why'

In this talk, take a tour of a dozen different programming languages, from JavaScript to Haskell, Python to Perl, Elixir and more; and see not only the 'wat', but the 'why': is it a misunderstanding based on assumption from another programming language? A compiler optimisation? A known bug that can't be fixed due to backwards compatibility concerns?

Attendees will come away from this talk with a greater understanding about how to turn a 'wat' into a 'why'.

Attendees will also be shown how avoid taking their misunderstanding of a programming language and the nuances around it and turning into contempt for those who develop and use the language."

"Katie has worn many different hats over the years. She has been a software developer for many languages, systems administrator for multiple operating systems, and speaker on many different topics.

When she's not changing the world, she enjoys making tapestries, cooking, and seeing just how well various application stacks handle emoji."
 recording release: yes license: CC BY-SA  

17. Python, Threads & Qt: Boom!
Teijo Holzer

We will investigate problems and pitfalls that will occur when using threads & Qt together inside a Python application, including unexpected memory corruption and crashes.

"Quick introduction to Python & Qt: PySide/PyQt
Threading in Python & Qt: QThread, QRunnable, QFuture
Thread-safety and re-entrancy of QObjects & QWidgets
Inter-thread signals & slots
Event loops & long-running tasks
Memory corruption bugs in PySide & PyQt"

Teijo has been working professionally with Python for more than 15 years, the majority of that time in the Visual Effects Industry. He has detailed knowledge about the core Python interpreter and strong experience in working with massively concurrent algorithms, both on a system level & UI level.
 recording release: yes license: CC BY-SA  

18. Lightning Talks


(Needs description.) 
 recording release: yes license: CC BY-SA  

19. Prizes


(Needs description.) 
 recording release: no  

20. Aircraft predictive maintenance using Python/ML
Amar Verma

Applied machine learning for predictive maintenance (PdM) with objectives to reduce aircraft downtime & in-workshop costs

"Aircraft engines must be serviced, overhauled and examined on a very regular basis. This is driven by several factors, such as the total flying hours, on-ground taxi time, time from last overhaul, parts with limited life cycle, FAA bulletins & advisories, as well as for issues reported by sensors, ground crew & flight deck.

In case of more than one engines on the aircraft, most possibly the engines are non-coordinated in their maintenance requirements. This is very obvious as the engines could be maintained, installed on separate ocassions.

Whenever an aircraft engine is needed to be serviced, it causes direct impact to cashflows due to some of these factors:
* plane need to be grounded if alternative engine not available
* engine maintenance is delayed due to 
* parts not available
* specifically skilled engineer not available
* workshop space not available
* Aircrafts (generally) use more than one engine, so the negative impact is amplified
* Aircraft's flying schedule can be impacted causing rebookings, schedule conflicts and direct impact to cashflows

Our solution addressed this challenging problem by combining & deriving few different algorithms for different parts of the problem:
- determine extent of the engine deterioration using a simplified variant of Kalman filtering method
- predict the optimal scheduling window using adaptation of genetic algorithm

Innovation & Engineering hacker. Expert in AI/ML, Algorithms & Big Databases
 recording release: yes license: CC BY-SA  

21. The Packaging Lifecycle with Poetry
Clinton Roy

Right now is an interesting time in the land of Python packaging; there are a lot of ideas flying around about the correct way to package, develop and publish your code. Poetry is one thread in this conversation.

This talk aims to look at some of the ways Poetry moves the conversation forward, learns from other packaging ecosystems, and where Python itself is going. We will be talking file formats, Python Enhancement Proposals (PEPs) to do with packaging, different packaging ideologies and looking at what we can learn from completely different languages. We’ll also be taking a look at the community’s approach to finding the way forward.

Clinton is a software engineer who has been able to make a career around supporting researchers using Open Source software. 

Clinton is currently a Senior Scientific Software Engineer for ANSTO working at the Australian Synchrotron.
 recording release: yes license: CC BY-SA  

22. Python: A Medley of Programming Paradigms
Simon Merrick

Exploring Python's multiple programming paradigms - Imperative, Procedural, Functional and Object Oriented - and their applications through python examples.

"“There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.”

Despite this - or maybe because of this, python programming can be done in  several different programming paradigms; Imperative, Procedural, Functional and Object Oriented.

While, theoretically, most problems can be solved in any paradigm, some problems are most elegantly solved in a particular paradigm.

By understanding different paradigms, their benefits, pitfalls and applications we can streamline, organize and simplify how we think about problems and elegant, maintainable, efficient solutions."

Simon is a python developer at Catalyst Cloud, building OpenStack public and private clouds in New Zealand, for New Zealand, by New Zealand. You can find him @iokiwi on github, gitlab and twitter or in person at several user group meetups including Python User Group and WOSSAT meetups in Wellington.
 recording release: yes license: CC BY-SA  

23. Build and hack your own IoT with MQTT
Agnetha Korevaar

Connecting the things in the Internet of Things (IoT) is hard. This talk will introduce MQTT - a messaging protocol which makes it easier to exchange information between disparate devices. You'll be equipped to build your own IoT system and hack it to find some of its weaknesses.

MQTT powers huge scale systems such as Facebook Messenger, big name IoT platforms such as those developed by Amazon, Microsoft and IBM (1), and it could connect your next project. But, before jumping onto the bandwagon, it's worth knowing what MQTT is and does, how to implement it, and whether we can satisfy some of our security paranoia.

This talk will cover:
- A quick introduction to MQTT, explanation of the key concepts, and some considerations for whether it would make a good choice for an IoT project.
- A deep dive into how to build an MQTT system. Starting with how to set up an MQTT broker on your computer (or Raspberry Pi, or server) using python or docker. Then connecting some things which send and receive data using python on a computer or micropython on a microcontroller.
- A beginners guide to hacking MQTT. First, demonstrating tools which can be used to test, spy on or take control of an MQTT system. Then, revising the naive MQTT system to make it more secure and reliable.

(1) refer to: https://developer.ibm.com/blogs/open-source-ibm-mqtt-the-messaging-protocol-for-iot/

Agnetha Korevaar is a research engineer at Callaghan Innovation. She spends much of her time designing and writing software for mechatronic things that talk to other things that talk to humans.
 recording release: yes license: CC BY-SA  

24. Conference Closing


(Needs description.) 
 recording release: no  



Location
--------
Auditorium 1


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.