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
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
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
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
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
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
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
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
For details please see https://kiwipycon.nz/programme/race-condition
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.
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.
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.
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...
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.
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.
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.
For details please see https://kiwipycon.nz/programme/panel-discussion
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.
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.
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.
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.
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!
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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.
For details please see https://kiwipycon.nz/poster-sessions
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.
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.
For details please see https://kiwipycon.nz/programme/lightning-talks