To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
09:00
09:00
60min
MicroPython for the Internet of Things - Part 1/2
Glenn Ramsey

This workshop will explore the use of MicroPython on a Raspberry Pi Pico board in an Internet of Things context.

Participants will learn how to use sensors and timers via MicroPython to collect data and deliver it to a collection service via a WiFi connection or display it locally via a web browser.

The workshop will begin with a short lecture describing the capabilities of the hardware then participants will be supported to work on a number of mini projects designed to demonstrate some common usage scenarios for this and similar low cost hardware.

For details please see https://kiwipycon.nz/programme/friday-workshops

Pythonista
Middle Room
09:00
60min
Python 4 hour Crash Course - Part 1/2
Grant Paton-Simpson

Learn as much Python as you can in four hours with a mix of theory and practical, hands-on typing of code.

The overall structure of the workshop is: Learning Python (why and how), Main Content (most of the workshop), Revision, Mini Project, Final Questions.

Content covered includes: Syntax, Data types (Numbers, Strings (text), Lists, Dictionaries (mappings), Sets, Others, Dataclasses), Functions, Conditionals, Loops, Comprehensions, Importing, Exceptions (esp. errors), Common mistakes.

Many topics have been left out so we can spend more time on the topics we do cover. At the end of the course you are welcome to keep the detailed slides, including notes, so you can do revision.

For details please see https://kiwipycon.nz/programme/friday-workshops

Breakout Room
10:00
10:00
20min
Morning Tea (served in foyer)
Middle Room
10:00
20min
Morning Tea (served in foyer)
Breakout Room
10:20
10:20
160min
MicroPython for the Internet of Things - Part 2/2
Glenn Ramsey

This workshop will explore the use of MicroPython on a Raspberry Pi Pico board in an Internet of Things context.

Participants will learn how to use sensors and timers via MicroPython to collect data and deliver it to a collection service via a WiFi connection or display it locally via a web browser.

The workshop will begin with a short lecture describing the capabilities of the hardware then participants will be supported to work on a number of mini projects designed to demonstrate some common usage scenarios for this and similar low cost hardware.

For details please see https://kiwipycon.nz/programme/friday-workshops

Pythonista
Middle Room
10:20
160min
Python 4 hour Crash Course - Part 2/2
Grant Paton-Simpson

Learn as much Python as you can in four hours with a mix of theory and practical, hands-on typing of code.

The overall structure of the workshop is: Learning Python (why and how), Main Content (most of the workshop), Revision, Mini Project, Final Questions.

Content covered includes: Syntax, Data types (Numbers, Strings (text), Lists, Dictionaries (mappings), Sets, Others, Dataclasses), Functions, Conditionals, Loops, Comprehensions, Importing, Exceptions (esp. errors), Common mistakes.

Many topics have been left out so we can spend more time on the topics we do cover. At the end of the course you are welcome to keep the detailed slides, including notes, so you can do revision.

For details please see https://kiwipycon.nz/programme/friday-workshops

Breakout Room
13:00
13:00
60min
Lunch (served in foyer)
Middle Room
13:00
60min
Lunch (served in foyer)
Breakout Room
14:00
14:00
60min
An introduction to web application security through Python - Part 1/2
Ethan McKee-Harris

This workshop is a 4 hour introduction to cyber security concepts in Python with a focus on web applications.

This workshop will use a vulnerable Flask website to demonstrate various vulnerabilities from the OWASP top 10 and other common vulnerabilities I've found through my career.

For details please see https://kiwipycon.nz/programme/friday-workshops

Pythonista
Middle Room
14:00
60min
Exploratory data analysis with Python - Part 1/2
Ben Denham

Exploratory data analysis is an important early step in the data science process where our goal is to quickly learn as much as we can about a dataset. While performing this analysis, we aim to "let the data speak for itself" by employing a variety of descriptive statistics and visualisations to spot patterns, identify outliers, and summarise the data. By better understanding the data, we can gain useful insights about our application domain and lay a solid foundation for further application of statistical modelling, machine learning, and AI.

For details please see https://kiwipycon.nz/programme/friday-workshops

Breakout Room
15:00
15:00
20min
Afternoon Tea (served in foyer)
Middle Room
15:00
20min
Afternoon Tea (served in foyer)
Breakout Room
15:20
15:20
160min
An introduction to web application security through Python - Part 2/2
Ethan McKee-Harris

This workshop is a 4 hour introduction to cyber security concepts in Python with a focus on web applications.

This workshop will use a vulnerable Flask website to demonstrate various vulnerabilities from the OWASP top 10 and other common vulnerabilities I've found through my career.

For details please see https://kiwipycon.nz/programme/friday-workshops

Pythonista
Middle Room
15:20
160min
Exploratory data analysis with Python - Part 2/2
Ben Denham

Exploratory data analysis is an important early step in the data science process where our goal is to quickly learn as much as we can about a dataset. While performing this analysis, we aim to "let the data speak for itself" by employing a variety of descriptive statistics and visualisations to spot patterns, identify outliers, and summarise the data. By better understanding the data, we can gain useful insights about our application domain and lay a solid foundation for further application of statistical modelling, machine learning, and AI.

For details please see https://kiwipycon.nz/programme/friday-workshops

Breakout Room
18:30
18:30
150min
Race Condition

For details please see https://kiwipycon.nz/programme/race-condition

Breakout Room
08:00
08:00
60min
Registration (in foyer)
Plenary Space
08:00
60min
Registration (in foyer)
Middle Room
08:00
60min
Registration (in foyer)
Breakout Room
09:00
09:00
10min
Conference Opening
Plenary Space
09:10
09:10
60min
Keynote: Let's Future-Proof Python
Deb Nicholson

If you're lucky, you're part of a big important project (like Python) that is very likely to outlive you. That might make it feel like you have all the time in the world to do everything you want to do, but you never know how much time you have. That might sound a little grim, but it's important to accept that if we're going to plan for the future. Even though it feels very, very personal while you're doing it, community work is not entirely about you. It's about what we leave for the next generation of Pythonistas. I want us to start planning for the far future of the Python ecosystem today.

Plenary Space
10:10
10:10
20min
Morning Tea
Middle Room
10:30
10:30
30min
Modern Python - Better Python (the Horrors of My Earlier Code)
Grant Paton-Simpson

Modern Python is better Python. Understanding my older Python code took much more brain power than understanding my newer code. Improvements in readability have been rapid in the last few years as new language features have been harnessed. Before they were incorporated, it often required intense concentration, and the loading of step-by-step details into my memory, to grasp what was happening as information flowed through the code. Using some of the newer Python features has reduced the mental load significantly. The key idea is readability - more of the code has names making it more semantic. It is also more restricted. For example, the inputs and outputs of functions commonly have defined and enforced structures (sometimes using pydantic). All of this makes it easier to work out what code is doing and make changes without getting confused. The main changes are:

1) widespread use of dataclasses (3.6+) as name-rich data structures - especially for function input and output
2) use of type hints (3.5+) as documentation for both input and output
3) use of StrEnum (3.11+) instead of ordinary strings for programmer-defined things
4) using the add_note (3.11+) method on exceptions - adding notes built from f-strings (3.6+) makes it easier to see what is happening when things go wrong.

There has also been a greater emphasis on making the boundaries and interfaces between functions more logical and natural from a human point of view, a change encouraged by the greater use of type hinting and dataclasses. The result is code that is more relaxing to debug, modify, and extend. It is certainly much easier and safer to work on when tired or distracted. Learn how to improve your code using some of the newer features of modern Python.

Pythonista
Breakout Room
10:30
30min
Using iNaturalist, eBird, and Python to become a community scientist
Richard Littauer

Aotearoa has a plethora of momo māori (native) and momo taketake (endemic) species. When I first arrived here, my goal was to identify as many as I could. To help, I used the sites iNaturalist (all life) and eBird (just manu). By logging photographs, recordings, and sightings, I was able to both enjoy exploring and also contribute to community science platforms that aggregate data to help scientists understand our world. Using Python, Javascript, and Bash, I was also able to access their APIs and to build some basic tools that helped me learn faster. I want to share those tools here, and explain how you can also learn more about all of the momo here.

I'll also talk briefly about my nascent PhD work here in Wellington, looking at bioacoustics and automatic bird identification.

Plenary Space
11:10
11:10
30min
Better Grades with Python
Leon Bowie

Test tables, manual formatting, what are types and how could this be improved? For most, school is their introduction to programming, normally through Python but what sort of introduction is it if they are stuck making manual testing tables, manually doing PEP8 compliance and why can't an int and str be combined easily? What if there was a way to solve these problems using the tried and true solutions from industry?

A look at modernising and updating secondary digitech using type hinting, automated testing, formatter and other tricks. Looking at existing approaches, feedback from students and teachers and new approaches from across Greater Wellington this talk looks at how digitech can be improved through modern tooling and features to increase learning and maybe get a better grade...

Breakout Room
11:10
30min
Data Stream AI
Anton Lee

Data stream learning is an artificial intelligence method of extracting knowledge from continuous, rapid and evolving “streams” of data. Our talk presents our new Python library, called CapyMOA, to close the gap between pioneering research and accessible tooling by providing a Python API that tightly integrates MOA (Java data stream mining), PyTorch (hardware accelerated deep learning), and sci-kit-learn (machine learning). Despite these advanced topics, the talk is intended for a broad audience. It will introduce the discipline of data streams for a wide audience, look at some practical examples, and discuss the technical novelty in constructing the Python CapyMOA project.

Pythonista
Plenary Space
11:50
11:50
30min
On the Use and Misuse of Decorators
Christopher Neugebauer

What is a decorator? You might say it's a function that accepts a function and returns a function. That's wrong.

So what's the right answer?

Join us for a deep (but standard talk-length) dive into decorators! You’ll learn what decorators actually are, how they work, how to write your own decorators, and how decorators enable you to do extremely weird things in Python. Most importantly, you’ll understand how to use decorators responsibly, and definitely not to confuse your friends and colleagues.

Pythonista
Plenary Space
11:50
30min
Unlocking insights: leveraging open source software for self-service analytics
Ash Templeton, Richard Roberts

We will detail how we built Sharesies’ self-service analytics tool, Theia, using Python, Dash and Snowflake, then how we further utilised similar infrastructure to build a portal that connects NZX and ASX listed companies to the retail investors that invest directly in them.

Breakout Room
12:30
12:30
60min
Lunch
Middle Room
13:30
13:30
60min
Panel Discussion - "Foundational Skills"

For details please see https://kiwipycon.nz/programme/panel-discussion

Plenary Space
14:40
14:40
30min
Data Morph: A Cautionary Tale of Summary Statistics
Stefanie Molin

Statistics do not come intuitively to humans; they always try to find simple ways to describe complex things. Given a complex dataset, they may feel tempted to use simple summary statistics like the mean, median, or standard deviation to describe it. However, these numbers are not a replacement for visualizing the distribution.

To illustrate this fact, researchers have generated many datasets that are very different visually, but share the same summary statistics. In this talk, I will discuss Data Morph, an open source package that builds on previous research using simulated annealing to perturb an arbitrary input dataset into a variety of shapes, while preserving the mean, standard deviation, and correlation to multiple decimal points. I will showcase how it works, discuss the challenges faced during development, and explore the limitations of this approach.

Plenary Space
14:40
30min
Python Package Management - Rye Is All You Need
Elliot Simpson

Python the language is great - Python the package management experience, not so much.

It's easy to get into also sorts of painful trouble as a beginner. You start pip installing libraries to your machine and everything works - until there is a conflict between the versions you need for different projects. Or maybe you want to share your code but don't have a good way of explaining what dependencies they need to install to get it working. Or an important library only works on a previous version of Python. It's time to learn some basic package management.

Until recently it has been hard to know what to advise newcomers to use for package management - there are so many choices. The Lean Python project recommends rye for both beginner and advanced use cases so that's what we'll cover here. Rye can replace all the other tools you're using. In addition to showing off some of the main features of rye we'll discuss the purposes of package management and some of the specific tasks we want package management software to handle for us:

  • Dependency management for our code (e.g. we might need pandas >= 2.0):
  • Creating and managing a virtual environment so our project is isolated from other projects - potentially using a different version of Python and different libraries and versions of those libraries from other projects. We also avoid breaking system Python. If you don't know what a virtual environment is, rye makes them much easier to use.
  • Pinning to a specific Python version
  • Building wheels so others can painlessly install your code

At the end of this presentation you'll know how to use rye for package management with a few easy-to-remember commands. Even experienced developers will learn something useful.

Breakout Room
15:20
15:20
30min
Mistakes Programmers Believe About Gender
Sam Bishop

Gender is a complex and multifaceted concept that goes beyond simple binary classifications. This talk will shed some light on common misconceptions about gender that arise in software development, and provide practical advice on creating more inclusive and respectful software for everyone. By sharing exploring these ideas, we can build a better understanding and foster greater inclusivity in our work.

Plenary Space
15:20
30min
Understanding PEG parsers with Parsimonious
Curtis Maloney

Since version 3.9, cPython has used a PEG parser, replacing the sort-of-LL(1) parser that had sustained it until then.

Come and learn how you can use a PEG parser to solve problems in your projects, with an example using the parsimonious package.

Pythonista
Breakout Room
15:50
15:50
20min
Afternoon Tea
Middle Room
16:10
16:10
30min
Labtech: Concurrency and caching in Python for busy scientists
Ben Denham

Python has made it easier than ever for scientists and analysts to design and run computation-heavy experiments. However, as a project grows and experiment variants multiply, your experimentation loop can grind to a halt: your experiments take longer and longer to run and you spend most of your time managing their results.

Faced with these problems, I developed labtech (https://pypi.org/project/labtech/), an open-source library that makes it easy for you to manage your experiment variants, run them as concurrently as possible on your hardware, and cache intermediate results to be reused across experiments. All you need to do is pip install labtech and reformat your existing experiment code as labtech tasks!

Labtech simplifies the experimentation loop for many fields, including:

  • Data scientists evaluating alternative machine learning models
  • Researchers running simulations and data processing pipelines
  • Business analysts scraping many websites or documents over time while only re-scraping as needed
  • Any use case where you want to concurrently run interdependent tasks with result caching and re-use

You'll walk away from this talk with:

  • A picture of how labtech fits into the landscape of tools for parallelising Python code and managing experiments.
  • An understanding of how labtech works and the features it provides for managing experiments.
  • The practical knowledge to get your experiment loop running at light speed with labtech!
Breakout Room
16:10
30min
Weaving algorithms: the threads that bind the python and textile communities
Kelsey Vavasour

There are a lot of curious crossovers between programming and fiber arts, from the origins of punch cards to borrowed terminology and shared cultural mores. Computing drew a surprising amount from fiber arts, and as I began programming and knitting around the same time I was fascinated to consider things such as how knitting patterns can be viewed with the same conceptual framework as programs, and that understanding how to modify one can provide interesting insights to the other. Both the Python and textile communities are also wonderfully diverse and put some very important efforts in place to encourage inclusivity, which has helped lead me to feel comfortable sharing these insights with such a large audience. This talk aims to get people thinking a bit outside the box and understanding connections with communities they might not have interacted with before.

Plenary Space
16:50
16:50
30min
Failsafes and Safety Fails: How to crash a train and other lessons for software engineers
Jack Skinner

Software builders and operators have long looked to transport and aviation for lessons in engineering practices and safety. Today, we’ll turn our attention to the railways as we take 20 years of hindsight to look at the ‘Broady runaway’ and what it can teach us. This talk will dive into the Australian Transport Safety Bureau's (ATSB) subsequent safety investigation, recommendations and parallels in the software world, offering us critical lessons in complex system design and incident management.

For software developers, architects, managers and executives this is an opportunity for us to reflect and learn from the past so that we can build more resilient and easier to operate platforms in the future.

Our runaway train is a 3 car electrical multiple unit (EMU) that, in 2003, did the full 17km Broadmeadows to Spencer st run in just 16 minutes, famously without a driver on board. The cause of the runaway and resulting collision with a stationary diesel locomotive has been the talk of many rail enthusiasts ever since, especially since there were no fatalities or serious injuries.

Plenary Space
16:50
30min
Learnings and Challenges with Competitive Programming in Python: NZPC and ICPC
Cameron Wu

Python is not known for being the fastest language, however it's versatility and succinct code makes it a viable option for competitive programming contests (such as PyCon's Race Condition). I will discuss how I've used Python to compete over the last 4 years, winning the NZ Programming Contest (NZPC) and being a ICPC Regional Finalist. This includes the unique challenges that come with using a interpreted language, and how they are overcome to create a equal playing field. I'll also cover how using Python has given us an advantage in other parts of the contest, and some lessons that I've encountered between Python in contests compared to Python in a professional environment.

Breakout Room
17:30
17:30
10min
Prize Raffle
Plenary Space
09:00
09:00
10min
Housekeeping / Announcements
Plenary Space
09:10
09:10
60min
Keynote: Whither Python?
Dr. Russell Keith-Magee

The first version of the Python programming language was released 33 years ago. The computing world that existed then is radically different to the world that exists today - and as a result, the language, community and users of Python have changed as well.

In this keynote, Dr Keith-Magee will reflect on how Python, and computing as a whole, has changed over the years. He will also look at what hasn’t changed - and make some predictions about what the future may hold for Python.

Plenary Space
10:10
10:10
20min
Morning Tea
Middle Room
10:30
10:30
30min
Introducing Immortal Objects: building block towards a multi-core Python runtime.
Aditya Mehra

In this presentation, I'll cover memory management in Python starting from the fundamentals. I'll explain the rationale behind the need for PEP 683: "– Immortal Objects, Using a Fixed Refcount" , discussing about this change may be unlocking exciting avenues for true parallelism in python.

The takeaway of this presentation would be :
a) Refresher on Life cycle of a python object.
b) Refresher on python memory management with garbage collection
c) How overcoming with pseudo immutable object will be unlocking exciting avenues for true parallelism in Python.

The target audience would be intermediate and advanced pythonistas. However I will present the information in simple and subtle manner for better understanding of python newbies .

Pythonista
Breakout Room
10:30
30min
Mechatronics as code
Seth Fischer

Software Developers have some fantastic tools at their disposal including version control, test suites, continuous integration, and documentation generators. This talk will be an introduction outlining how traditional software development practices can be applied to mechanical and electronic design.

Plenary Space
11:10
11:10
30min
I love templating and you should too!
Chelsea Finnie

Templating is awesome! I love it. I just think it's neat. You ever want to do a thing but like do it multiple times but not have to tediously change things around manually? Yeah, same! Templating is really good for that. In this talk I will give a brief overview of templating, my background with it, what the use cases are for it, and how Python (using Jinja2) makes it easy.

Breakout Room
11:10
30min
Pipelines for Securing your Python Development Lifecycle
Simon Merrick

Python tooling and practices that can help us find and resolve security issues with our code early. Why its important and how to build a CI pipeline around them.

Plenary Space
11:50
11:50
30min
Present like a pro
Katie McLaughlin

So you want to -- or have to -- present a talk.
On stage.
In front of people.

Don't panic!

In this talk, we will discuss why talks are great for both teaching and learning, some of the basic do's and don'ts, and an easy 8 step plan to get you writing your (first? next?!) presentation.

Breakout Room
11:50
30min
import rust
Tim McNamara

An informative guide to using the Rust programming language to support Python projects. This talk has two aims. Its first is to demystify Rust and show you a subset of the language that's far less intimidating that you may have been lead to believe. The second is to guide you through a set of decision criteria for considering supplementing your Python project with the language.

Pythonista
Plenary Space
12:30
12:30
60min
Lunch
Middle Room
12:30
60min
Poster Session

For details please see https://kiwipycon.nz/poster-sessions

Breakout Room
13:30
13:30
45min
Teaching Programming in Python in West African Secondary Schools
De-Graft Nana Baisie Affail

We will look at Python's suitability as a programming language for secondary school education in West African nations.
We will look at programming topics that are taught, and how Python is used for that.
We will also discuss useful examples that are complemented with methodical guidance for teachers.

Plenary Space
13:30
45min
Testing Everything* Everywhere** All at once***
David Thompson

Making sure that code does what it's supposed to - and will keep doing what it's supposed to - can be an ongoing struggle. Especially when you're dealing with large codebases, strange edge cases, multiple applications, external APIs, and collecting your technical debt along the way. This talk aims to survey a few techniques for writing and maintaining good tests.

Pythonista
Breakout Room
14:30
14:30
90min
Lightning Talks

For details please see https://kiwipycon.nz/programme/lightning-talks

Plenary Space
16:00
16:00
10min
Conference Closing
Plenary Space