{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.1.1"}, "schedule": {"url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/schedule/", "version": "0.11", "base_url": "https://talks.kiwipycon.nz", "conference": {"acronym": "kiwi-pycon-xiv-2025", "title": "Kiwi PyCon 2025", "start": "2025-11-21", "end": "2025-11-23", "daysCount": 3, "timeslot_duration": "00:05", "time_zone_name": "Pacific/Auckland", "colors": {"primary": "#30987c"}, "rooms": [{"name": "Plenary Space", "slug": "4813-plenary-space", "guid": "0c29f11c-47cd-51df-afe9-4dd9b30a6b18", "description": "The large room on the left", "capacity": 360}, {"name": "Middle Room", "slug": "4814-middle-room", "guid": "dc0f794c-773b-5217-8f38-7bdd7ca9b42a", "description": "The room in... the middle", "capacity": 70}, {"name": "Breakout Room", "slug": "4815-breakout-room", "guid": "a15f67ba-af87-575d-87cd-55c6080e4ce5", "description": "The medium sized room on the right", "capacity": 100}, {"name": "Foyer", "slug": "4816-foyer", "guid": "68d07130-7bc9-5e89-aa60-1855fe8b6804", "description": "The hallway connecting our three rooms", "capacity": null}], "tracks": [{"name": "Pythonista", "slug": "5859-pythonista", "color": "#307998"}], "days": [{"index": 1, "date": "2025-11-21", "day_start": "2025-11-21T04:00:00+13:00", "day_end": "2025-11-22T03:59:00+13:00", "rooms": {"Middle Room": [{"guid": "1704048f-15d1-59ae-8a2a-67dfaaa10320", "code": "RZDAK9", "id": 81545, "logo": null, "date": "2025-11-21T09:00:00+13:00", "start": "09:00", "duration": "01:00", "room": "Middle Room", "slug": "kiwi-pycon-xiv-2025-81545-workshop-micropython-iot-development-workshop", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RZDAK9/", "title": "Workshop: MicroPython IoT Development Workshop", "subtitle": "", "track": "Pythonista", "type": "Workshop", "language": "en", "abstract": "Explore MicroPython on an ESP32 microcontroller for Internet of Things applications. Learn how to use sensors and timers to collect data and deliver it to a collection service via a WiFi connection. The opening short lecture will describe the capabilities of the hardware, then we're into hands-on projects demonstrating common applications for this and similar low-cost hardware, individually or in groups. The afternoon session will feature more-advanced projects.\r\n\r\nDid you attend last year? The program will be largely similar. You are invited to work-through the advanced programme and/or on your own project; or assist others.", "description": "You will be comfortable with Python flow control, writing custom-functions, and utilising built-in data-structures.\r\n\r\nBring a laptop with a USB-A port. The microcontroller board has a USB-C connector and a USB-A to USB-C cable will be provided.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RZDAK9/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RZDAK9/", "attachments": []}, {"guid": "8e82de00-04d7-5236-929c-d070c1a4293e", "code": "SLM7RX", "id": 81546, "logo": null, "date": "2025-11-21T10:15:00+13:00", "start": "10:15", "duration": "02:00", "room": "Middle Room", "slug": "kiwi-pycon-xiv-2025-81546-workshop-micropython-iot-development-workshop", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SLM7RX/", "title": "Workshop: MicroPython IoT Development Workshop", "subtitle": "", "track": "Pythonista", "type": "Workshop", "language": "en", "abstract": "Explore MicroPython on an ESP32 microcontroller for Internet of Things applications. Learn how to use sensors and timers to collect data and deliver it to a collection service via a WiFi connection. The opening short lecture will describe the capabilities of the hardware, then we're into hands-on projects demonstrating common applications for this and similar low-cost hardware, individually or in groups. The afternoon session will feature more-advanced projects.\r\n\r\nDid you attend last year? The program will be largely similar. You are invited to work-through the advanced programme and/or on your own project; or assist others.", "description": "You will be comfortable with Python flow control, writing custom-functions, and utilising built-in data-structures.\r\n\r\nBring a laptop with a USB-A port. The microcontroller board has a USB-C connector and a USB-A to USB-C cable will be provided.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SLM7RX/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SLM7RX/", "attachments": []}, {"guid": "33bbd6f6-7285-55c1-8d90-0f6fbcefb9bc", "code": "LWJXMX", "id": 81547, "logo": null, "date": "2025-11-21T14:15:00+13:00", "start": "14:15", "duration": "01:30", "room": "Middle Room", "slug": "kiwi-pycon-xiv-2025-81547-workshop-micropython-iot-development-workshop", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LWJXMX/", "title": "Workshop: MicroPython IoT Development Workshop", "subtitle": "", "track": "Pythonista", "type": "Workshop", "language": "en", "abstract": "Explore MicroPython on an ESP32 microcontroller for Internet of Things applications. Learn how to use sensors and timers to collect data and deliver it to a collection service via a WiFi connection. The opening short lecture will describe the capabilities of the hardware, then we're into hands-on projects demonstrating common applications for this and similar low-cost hardware, individually or in groups. The afternoon session will feature more-advanced projects.\r\n\r\nDid you attend last year? The program will be largely similar. You are invited to work-through the advanced programme and/or on your own project; or assist others.", "description": "You will be comfortable with Python flow control, writing custom-functions, and utilising built-in data-structures.\r\n\r\nBring a laptop with a USB-A port. The microcontroller board has a USB-C connector and a USB-A to USB-C cable will be provided.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LWJXMX/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LWJXMX/", "attachments": []}, {"guid": "ac9a7434-00de-599e-9e0f-2865910d22b3", "code": "89K3WB", "id": 81548, "logo": null, "date": "2025-11-21T16:00:00+13:00", "start": "16:00", "duration": "02:00", "room": "Middle Room", "slug": "kiwi-pycon-xiv-2025-81548-review-micropython-iot-development-workshop", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/89K3WB/", "title": "Review: MicroPython IoT Development Workshop", "subtitle": "", "track": "Pythonista", "type": "Workshop", "language": "en", "abstract": "Post workshop review/assistance session", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/89K3WB/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/89K3WB/", "attachments": []}], "Breakout Room": [{"guid": "1aca8aec-00fb-5452-a9c3-13de7ce3b8f7", "code": "Y9TDMB", "id": 81541, "logo": null, "date": "2025-11-21T09:00:00+13:00", "start": "09:00", "duration": "01:00", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-81541-workshop-beginner-s-python-a-carpentries-inspired-tutorial", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/Y9TDMB/", "title": "Workshop: Beginner's Python \u2013 a Carpentries Inspired Tutorial", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "This workshop will use the Software Carpentries Programming with Python tutorial. During this workshop we will start by learning the fundamentals of Python and coding in general, such as variable assignment and working with different types of data. This will lead to a discussion on how to evaluate and visualise tabular data.", "description": "This workshop is suitable for people who are new to Python.\r\n\r\nThis lesson is designed to be run on a personal computer. All of the software and data used in this lesson are freely available online, and instructions on how to obtain them are provided below. In this lesson, we will be using Python 3 with some of its most popular scientific libraries.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/Y9TDMB/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/Y9TDMB/", "attachments": []}, {"guid": "1e3b49f1-d40e-522f-bd7e-8f26a0bb1420", "code": "RJFP9R", "id": 81542, "logo": null, "date": "2025-11-21T10:15:00+13:00", "start": "10:15", "duration": "02:00", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-81542-workshop-beginner-s-python-a-carpentries-inspired-tutorial", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJFP9R/", "title": "Workshop: Beginner's Python \u2013 a Carpentries Inspired Tutorial", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "This workshop will use the Software Carpentries Programming with Python tutorial. During this workshop we will start by learning the fundamentals of Python and coding in general, such as variable assignment and working with different types of data. This will lead to a discussion on how to evaluate and visualise tabular data.", "description": "This workshop is suitable for people who are new to Python.\r\n\r\nThis lesson is designed to be run on a personal computer. All of the software and data used in this lesson are freely available online, and instructions on how to obtain them are provided below. In this lesson, we will be using Python 3 with some of its most popular scientific libraries.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJFP9R/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJFP9R/", "attachments": []}, {"guid": "5651580b-b0dc-55e5-b400-a2be1b2cdf65", "code": "AVGXZ3", "id": 81543, "logo": null, "date": "2025-11-21T14:15:00+13:00", "start": "14:15", "duration": "01:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-81543-workshop-beginner-s-python-a-carpentries-inspired-tutorial", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/AVGXZ3/", "title": "Workshop: Beginner's Python \u2013 a Carpentries Inspired Tutorial", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "This workshop will use the Software Carpentries Programming with Python tutorial. During this workshop we will start by learning the fundamentals of Python and coding in general, such as variable assignment and working with different types of data. This will lead to a discussion on how to evaluate and visualise tabular data.", "description": "This workshop is suitable for people who are new to Python.\r\n\r\nThis lesson is designed to be run on a personal computer. All of the software and data used in this lesson are freely available online, and instructions on how to obtain them are provided below. In this lesson, we will be using Python 3 with some of its most popular scientific libraries.", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/AVGXZ3/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/AVGXZ3/", "attachments": []}, {"guid": "f88d922b-c9e0-5c4e-84fa-10b240a0603c", "code": "SA7WNJ", "id": 81544, "logo": null, "date": "2025-11-21T16:00:00+13:00", "start": "16:00", "duration": "02:00", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-81544-review-beginner-s-python-a-carpentries-inspired-tutorial", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SA7WNJ/", "title": "Review: Beginner's Python \u2013 a Carpentries Inspired Tutorial", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "Post workshop review/assistance session", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SA7WNJ/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SA7WNJ/", "attachments": []}]}}, {"index": 2, "date": "2025-11-22", "day_start": "2025-11-22T04:00:00+13:00", "day_end": "2025-11-23T03:59:00+13:00", "rooms": {"Plenary Space": [{"guid": "8b0f1d3e-9e46-5594-acb5-6c83c87cffd9", "code": "XVT3PR", "id": 81552, "logo": null, "date": "2025-11-22T09:00:00+13:00", "start": "09:00", "duration": "00:15", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81552-conference-opening", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/XVT3PR/", "title": "Conference Opening", "subtitle": "", "track": null, "type": "Event", "language": "en", "abstract": "A warm welcome to Kiwi PyCon!", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/XVT3PR/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/XVT3PR/", "attachments": []}, {"guid": "b91a3703-d9ff-5ccc-821e-8ad2010da424", "code": "VYYNLV", "id": 81538, "logo": null, "date": "2025-11-22T09:15:00+13:00", "start": "09:15", "duration": "01:00", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81538-keynote-skill-issue", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/VYYNLV/", "title": "Keynote: Skill Issue", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "I make code for a living. I also make code, and other things, for fun. I love learning new things and discovering new tools. So when I run into a tool that everyone tells me is the future of coding but I just can\u2019t bring myself to accept it, what do I do?\r\n\r\nLarge language models are the future of coding, right? It\u2019s what everyone\u2019s saying. It\u2019s what everyone\u2019s boss is saying. We all need to get on board or get left behind.\r\n\r\nIs this true? What makes a change like this inevitable? What makes a change like this good?\r\n\r\nWhen things like this come along and I find myself disagreeing it\u2019s always interesting to try and work out where that\u2019s coming from. Sometimes it\u2019s easy, sometimes it\u2019s a whole journey that involves a lot of self-reflection and a bunch of reading about history.\r\n\r\nSo, am I being paranoid? Is this change inevitable and I just need to get over it? Is it just... a skill issue?\r\n\r\nJoin me as I try to unpack what worries me about all this, what I think LLMs can and should be used for, what we might expect given things that have happened in the past, and what this has to do with some guy called Ned Ludd.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "GQHDVE", "name": "Benno Rice", "avatar": "https://talks.kiwipycon.nz/media/avatars/GQHDVE_RTMyYiv.webp", "biography": "Benno is widely known as someone with opinions and a (possibly over-)willingness to share them. He has been working with computers professionally for over 30 years (unprofessionally for longer) and takes particular joy in examining how computers, the Internet, and all that surrounds all of these intersects with the humanity that it is meant to help.", "public_name": "Benno Rice", "guid": "1b0b8425-773b-56c4-a6a4-c4a63f3d2dfc", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/GQHDVE/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/VYYNLV/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/VYYNLV/", "attachments": []}, {"guid": "ec76b5d2-1d37-51c2-8588-5fa02ee7bebd", "code": "ZHALVB", "id": 80092, "logo": null, "date": "2025-11-22T10:30:00+13:00", "start": "10:30", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80092-building-resilient-live-service-games-with-python-lessons-from-the-trenches", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/ZHALVB/", "title": "Building Resilient Live Service Games with Python: Lessons from the Trenches", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Live service games present unique challenges: real-time multiplayer interactions, constant content updates, complex game state management, and the need for high uptime when players depend on your servers. This talk explores how Python's ecosystem can be leveraged to build robust, scalable game backends that handle these demands.\r\n\r\nThrough real examples from developing \"Demon's Hand,\" a live multiplayer card game, we'll examine practical solutions for common game development challenges: implementing async-first architectures for handling concurrent player actions, designing flexible data models that evolve with game content, managing real-time state synchronization, and building systems that gracefully handle the unpredictable nature of player behaviour.\r\n\r\nYou'll learn how modern Python tools like HTTPX, asyncio, pyinstrument, and AWS services combine to create responsive game experiences, and discover why Python's rapid development cycle makes it ideal for the iterative nature of game development.", "description": "This presentation draws from real-world experience building and maintaining a live multiplayer card game. We'll dive into:\r\n\r\n**Technical Deep-Dives:**\r\n  - Need to go fast! asyncio, orjson, uvloop\r\n  - Performance profiling in production with pyinstrument\r\n  - WebSocket management for real-time gameplay\r\n  - DynamoDB design patterns for game data (eg. realtime scoreboards)\r\n  - SQS for event-driven architecture\r\n  - Implementing game mechanics like card effects and combat resolution (eg. Python DSLs)\r\n\r\n**Architecture Decisions:**\r\n  - Why we chose Python for game server development\r\n  - Google Sheets as a flexible game rules engine\r\n  - Async-first design patterns for handling concurrent player actions\r\n  - Service architecture with interface/implementation separation\r\n  - Performance optimization: HTTPX vs boto3 and connection pooling", "recording_license": "", "do_not_record": false, "persons": [{"code": "TUTMD7", "name": "Willem Thiart", "avatar": "https://talks.kiwipycon.nz/media/avatars/TUTMD7_eZ2eKO0.webp", "biography": "Willem is a developer who's been happily using Python for 20 years. I love writing code in all types of languages but I just keep on coming back to Python for some reason.", "public_name": "Willem Thiart", "guid": "38cf0ac5-0f60-535e-95f3-f347824e3c5a", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/TUTMD7/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/ZHALVB/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/ZHALVB/", "attachments": []}, {"guid": "03bcbada-a358-5555-bc00-d3a45c02bbb5", "code": "UVFZLF", "id": 80025, "logo": null, "date": "2025-11-22T11:05:00+13:00", "start": "11:05", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80025-how-ux-can-improve-your-python-project", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UVFZLF/", "title": "How UX Can Improve Your Python Project", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Making code for other people to use is hard work. We have to think about bugs, performance, integration, maintainability, and much more. Making user-friendly code is just one of the many priorities competing for time. In the case of the SOFA Stats Python library, user experience is not a nice-to-have. To be successful, SOFA Stats needs to reach beyond the Python community and be usable by people with very modest technical skills. UV makes this a lot easier but we should not underestimate the barrier to non-developers. The library needs to be appealing, welcoming, and even fun. Fun is not a word commonly associated with statistical programming so this clearly requires effort and a strategy. Which is where UX makes a valuable contribution. UX has a systematic hyper-focus on the people the code is intended for, and how to provide them with the best possible experience. For this project, three persona were identified: students, educators, and code contributors. Clarity about target users is crucial to avoid the natural tendency to develop software for people like ourselves. Instead of working from our own assumptions and hunches we interview a representative range of people. Care is taken to avoid only hearing what we want to hear. The process is also iterative. We listen, respond to what we hear, and try again. This talk will explain how UX techniques were used, and what changed in the SOFA Stats library as a result. Maybe you will be inspired to use UX to improve your own project.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "WRQFJ9", "name": "Grant Paton-Simpson", "avatar": "https://talks.kiwipycon.nz/media/avatars/WRQFJ9_TXTLApJ.webp", "biography": "Grant has been an enthusiastic user of Python for many years and has delivered numerous conference talks, meetup presentations, and training sessions on the language. Grant's open source statistics application, SOFA Statistics (over 300,000 downloads to date) is completely written in Python as is the forthcoming replacement SOFA Stats. More recently, Grant has collaborated with Ben Denham to launch the Lean Python (When Of Python) initiative aimed at ensuring Python lives up to its original promise of simplicity and elegance. Grant currently works in the Tech Insights team at 2degrees and was part of the Data Science Team at Qrious where he processed hundreds of billions of records using PySpark and Python.", "public_name": "Grant Paton-Simpson", "guid": "c41f6c6b-7fa0-57f3-b573-aedd54827f2b", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/WRQFJ9/"}, {"code": "88MJDF", "name": "Charlotte Paton-Simpson", "avatar": "https://talks.kiwipycon.nz/media/avatars/88MJDF_ro35DUH.webp", "biography": "Charlotte is a User Experience (UX) Designer from Auckland. After completing her studies with Mission Ready in 2024, she continued refining her skills through online learning and hands-on projects, and is now working with SOFA Stats. She loves uncovering the hidden needs of users, sometimes the things they didn\u2019t even realise they wanted, and transforming them into simple, intuitive designs that users can actually understand. Passionate about the power of UX to transform long-winded, confusing, (or plain ugly!) online systems, Charlotte is excited to create experiences that feel effortless and enjoyable for everyone.", "public_name": "Charlotte Paton-Simpson", "guid": "fcfc9d2b-9320-583c-9527-f5fc87e0c99e", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/88MJDF/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UVFZLF/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UVFZLF/", "attachments": []}, {"guid": "67ff6498-9853-5d78-a4f7-35733002d054", "code": "QMZCQN", "id": 79813, "logo": null, "date": "2025-11-22T11:40:00+13:00", "start": "11:40", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-79813-making-up-with-testing-old-and-new-lessons-for-loving-your-tests-again", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QMZCQN/", "title": "Making up with Testing: Old and New lessons for loving your tests again", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Testing is one of those things that we don't often talk about, probably because people don't think there is much to it. Just write a few tests to show that your code works and off you go, right?\r\nThere is so much more value in tests that is waiting to be unlocked! This talk aims to re-enlighten developers about how to write great tests, from how to maximise communication through your tests to how to harness AI to make your tests great again.", "description": "Writing good tests is important because it's about communication just as much as showing your code works. Communication to future developers (including yourself) about how your code works, communication to the product team and stakeholders about what the product does, and even communication about domains and architecture.\r\nIn this talk, we will discuss:\r\n- what bad tests look like and why they are bad\r\n- the audiences for tests\r\n- tips for how to present your tests to be understandable\r\n- using the Given/When/Then style\r\n- developing a domain specific test language\r\n- the benefits of BDD\r\n- using AI to help with all the above", "recording_license": "", "do_not_record": false, "persons": [{"code": "WTN9UD", "name": "Richard Forshaw", "avatar": "https://talks.kiwipycon.nz/media/avatars/WTN9UD_P89yumL.webp", "biography": "Richard is a well-travelled CTO, having presented to developers in Australia, Singapore, Malaysia and Vietnam. Richard has worked in companies in all shapes and sizes and at all levels, but above all just wants to help deliver great software quickly and learn a few things along the way. Richard likes good food, reading and trying to get AI to do more of his work for him.", "public_name": "Richard Forshaw", "guid": "bbb1d093-30e1-5398-bb56-5100a909c3bc", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/WTN9UD/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QMZCQN/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QMZCQN/", "attachments": []}, {"guid": "b0089810-1898-5f6f-a173-6f8a01838d7b", "code": "R9BK8Y", "id": 80277, "logo": null, "date": "2025-11-22T14:15:00+13:00", "start": "14:15", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80277-mapping-the-open-source-ecosystem-for-climate-science-and-sustainable-technology", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/R9BK8Y/", "title": "Mapping the Open Source Ecosystem for Climate Science and Sustainable Technology", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The climate crisis poses a severe threat to the natural systems that support modern civilization, disrupting essential cycles that provide freshwater, fertile soils, and stable weather patterns. These disruptions are projected to lead to widespread biodiversity loss and to upset local and global economies. To ensure that the scientific basis of these projections is transparent and credible, researchers globally are increasingly making climate data and models openly available. This openness supports informed decision-making and helps safeguard sustainable development from being compromised by short-term political or economic agendas.\r\n\r\nDespite this progress in open science, the broader application of open source software and open data in climate and sustainability-related technologies remains limited. National governments, international organizations, academia, industry, and civil society have all played roles in both contributing to the crisis and proposing solutions. However, fragmented, proprietary approaches persist. Open source offers a powerful alternative\u2014lowering costs, enhancing verifiability, and enabling collaboration across disciplines and sectors.\r\n\r\nIn this talk, I'll introduce OpenSustain.tech, the most comprehensive dataset of over 2,500 open source projects directly addressing the climate crisis. I'll detail the transparent methodology used to curate this collection, including human expert review across multiple fields, and talk a bit about the network of transitive dependencies among these projects, extending previous work in mapping the climate-focused open source ecosystem.\r\n\r\nI'll talk about which projects are written in Python, and discuss which projects seem to be most relevant to the climate crisis. Finally, I'll discuss the strategic importance of open source and Python in advancing climate solutions.", "description": "This talk will be the second time I have given this talk, as earlier in the week I will be presenting a paper on the larger work at the OpenForum Academy Symposium in Rio, https://symposium.openforumeurope.org/. This talk will focus on the Python aspects as much as possible.", "recording_license": "", "do_not_record": false, "persons": [{"code": "RSRCBP", "name": "Richard Littauer", "avatar": "https://talks.kiwipycon.nz/media/avatars/RSRCBP_b2pGn9j.webp", "biography": "Richard Littauer is a PhD student in Computer Science at Te Herenga Waka Victoria University of Wellington in P\u014dneke, Aotearoa New Zealand. His thesis is on building tools for using community science data to model bird populations and bird flu. His research interests beyond that involve open science, open source, community science platforms, and taxonomy.\r\n\r\nHe is on the board for PythonNZ. He is also an organizer for SustainOSS, and has recorded hundreds of podcasts on open source sustainability there, and he is one of the two organizers of CURIOSS, the community for university and research institution open source program offices. In his spare time, he is a professional conlanger, creating languages for TV studios and novelists, an avid reader and hiker, and interested in civic, local action towards a more sustainable future.\r\n\r\nBut really, he just likes birds. You can read more about his projects at his website and follow him online.", "public_name": "Richard Littauer", "guid": "5bbb2924-f9d0-56b5-9ebe-b2e561cca130", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/RSRCBP/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/R9BK8Y/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/R9BK8Y/", "attachments": []}, {"guid": "cd1d9af6-e018-5632-9974-7d298e082f95", "code": "3PKJSQ", "id": 74112, "logo": null, "date": "2025-11-22T14:50:00+13:00", "start": "14:50", "duration": "00:45", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-74112-from-cobol-to-copilots-why-no-code-never-kills-the-coder", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3PKJSQ/", "title": "From COBOL to Copilots: Why \u201cNo-Code\u201d Never Kills the Coder", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Every few years somebody swears the newest tool to magically avoid needing developers will boot developers out of a job. Yet here we are, still coding, still shipping. Come along for a quick tour from COBOL\u2019s \u201cEnglish you can compile\u201d to today\u2019s LLM powered vibe coding agents and see why each wave of \u201ccode without coders\u201d crashed on the same rocks. You\u2019ll leave with a pocketful of history, a nose for hype, and concrete ways to pair AI helpers with your hard-won craft instead of handing the keys over.", "description": "Software history is riddled with promises that business folk would simply _describe_ what they want and let the machine do the rest. COBOL and BASIC claimed managers would write their own programs. HyperTalk let anyone click-build a HyperCard stack. BPML and UML tried to generate systems straight from diagrams created by managers and experts in meetings. Constraint based rule engines argued that if you just captured every rule, which managers could just write down, then the code would materialise. Low-code platforms repackaged the dream for the web, and now LLM agentic assistants and \u201cnatural-language\u201d IDEs are the latest contenders.  \r\n\r\nSo why do we keep hearing the same pitch? Because messy requirements, tacit knowledge, and perpetual change leak through every abstraction. Instead of vanishing, the complexity just moves... While developers, adapt, debug, and keep the lights on. History shows each wave actually _creates_ new niches for people who can straddle business intent and technical reality.\r\n\r\nIn this talk I\u2019ll:\r\n\r\n\u2022 Zip through six decades of attempts to eliminate developers, their bright ideas, brief wins, and spectacular failures.\r\n\u2022 Unpack the recurring traps: expressive ceilings, accidental complexity, maintenance drag, governance headaches.\r\n\u2022 Show how every cycle boosted demand for devs by making it easier to do business rather than development.\r\n\u2022 Hand you dead simple heuristics for sniff testing the big promises, spotting where these tools can help instead of hinder, and how to team up with AI tools without handing over your craft.\r\n\r\nExpect a breezy ride full of war stories, face-palm moments, and a few \u201chey, that actually worked\u201d surprises.", "recording_license": "", "do_not_record": false, "persons": [{"code": "RSUKRU", "name": "Sam Bishop", "avatar": "https://talks.kiwipycon.nz/media/avatars/RSUKRU_WvLPnMG.webp", "biography": "Professional software developer, Amateur content creator and rocket scientist. Loves Python, their cats, working on personal software and hardware projects, along with everything space, playing games and 3D printing things.", "public_name": "Sam Bishop", "guid": "4d1bc505-a29e-58d4-bcf0-3112cf09d106", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/RSUKRU/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3PKJSQ/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3PKJSQ/", "attachments": []}, {"guid": "2f5e36d5-85a0-5631-9c32-a61c75fed99c", "code": "RJPAHM", "id": 73992, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/RJPAHM/oldphone_eLra4PG.jpg", "date": "2025-11-22T16:00:00+13:00", "start": "16:00", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-73992-hello-operator-please-connect-me-to-2025", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJPAHM/", "title": "Hello Operator: Please connect me to 2025", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "What happens when you connect 1920s technology to that of the 2020s? This talk! It's equal parts nostalgia project, technical curiosity, and bleeding-edge research all in one. And along the way we'll all experience what we've gained - and lost - in our rush toward automated everything.", "description": "In this admittedly gimmicky experiment, I chronicle bridging 100 years of communication technology: from human-powered switchboards and analogue circuits to modern natural language processing. Includes adventures into testing the components on these devices, developing a digital interface to analogue signals, then developer a virtual operator to simulate what might be the closest modern thing to a 1920s telephone experience.", "recording_license": "", "do_not_record": false, "persons": [{"code": "NPBF7L", "name": "notnotcharlie", "avatar": "https://talks.kiwipycon.nz/media/avatars/NPBF7L_C1CPb9Q.webp", "biography": "Red Team @ GitLab. Loves finding intersections between interesting topics and sharing knowledge. Usually either making, growing or deconstructing something.\r\n\r\nPrevious talks include \"My Kids Hack Me and It's Awesome\", \"Beyond 'Delete My Browser History': Infosec After Death\", \"An Approximate History of Accuracy\", and an absolutely absurd maths lecture delivered on aerial silks called \"Floating Points\".", "public_name": "notnotcharlie", "guid": "eedfdde5-cd30-5bac-8236-3464ed98762b", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/NPBF7L/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJPAHM/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/RJPAHM/", "attachments": []}, {"guid": "e96bec15-5dd3-5df5-ba45-37b4b4b98ee7", "code": "UHTMCV", "id": 79726, "logo": null, "date": "2025-11-22T16:35:00+13:00", "start": "16:35", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-79726-things-that-python-got-wrong-and-how-python-fixed-them", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UHTMCV/", "title": "Things that Python got wrong, and how Python fixed them", "subtitle": "", "track": "Pythonista", "type": "Talk", "language": "en", "abstract": "Python is a Good Language. It was a Good Language when I started using it. It probably was for you, too.\r\n\r\nBut Python is a very different language these days. The Python of 3.14 is noticeably not the same as the Python of 3.9, which is noticeably not the same as the Python of 3.6, and so on. And let's not mention the difference between Python 2.6 and 3.0 (oops).\r\n\r\nIs the language you thought was a Good Language when you first used it still a Good Language? If it is, why are you using newer versions?\r\n\r\nWhile new language features have (traditionally) had a high bar for integration into the language, resulting in an opinionated set of features that is generally Pretty Good, not everything is. Python has made design mistakes throughout its existence, but somewhat uniquely among languages, it's made concerted efforts to improve upon those mistakes and socialise the improved versions. \r\n\r\nWe're going to look at a history of language features in Python, we'll look at what we have now, and what unfortunateness we've left along the way.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "QWCHX7", "name": "Christopher Neugebauer", "avatar": "https://talks.kiwipycon.nz/media/avatars/QWCHX7_xkYQQCh.webp", "biography": "Christopher Neugebauer is an Australian developer, speaker, and serial community conference organiser, who presently lives in the United States.\r\n\r\nHe serves as a Director of the Python Software Foundation, and is co-organiser of the acclaimed North Bay Python conference, a boutique one-track conference run in unusual venues \u2014 include an old vaudeville theatre, and more recently a barn on a farm \u2014 in Petaluma, California.", "public_name": "Christopher Neugebauer", "guid": "534641cb-8f50-583e-b413-a11ea45a0563", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/QWCHX7/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UHTMCV/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/UHTMCV/", "attachments": []}, {"guid": "b143a6bc-561e-5292-ba09-1e1250a4c218", "code": "LLAFCE", "id": 81551, "logo": null, "date": "2025-11-22T17:10:00+13:00", "start": "17:10", "duration": "00:50", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81551-battledecks-announcements", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LLAFCE/", "title": "Battledecks/Announcements", "subtitle": "", "track": null, "type": "Event", "language": "en", "abstract": "An entertaining session where volunteers give lightning-style talks using slides they\u2019ve never seen before. Expect plenty of laughs, followed by key daily announcements.", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LLAFCE/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LLAFCE/", "attachments": []}], "Middle Room": [{"guid": "fd05a9ab-f8f7-5193-9e30-8591863a7ad6", "code": "7UANBF", "id": 84839, "logo": null, "date": "2025-11-22T15:40:00+13:00", "start": "15:40", "duration": "00:20", "room": "Middle Room", "slug": "kiwi-pycon-xiv-2025-84839-poster-session-presentation-and-q-a", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/7UANBF/", "title": "Poster Session - Presentation and Q&A", "subtitle": "", "track": null, "type": "Poster", "language": "en", "abstract": "Presenation and Q&A with the creators of the posters included in our Poster Session", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/7UANBF/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/7UANBF/", "attachments": []}], "Breakout Room": [{"guid": "42db547a-672a-5b43-8c38-d187e9a37ff8", "code": "QUDN8S", "id": 71979, "logo": null, "date": "2025-11-22T10:30:00+13:00", "start": "10:30", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-71979-what-can-looking-at-python-as-a-language-designer-teach-us", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QUDN8S/", "title": "What can looking at Python as a language designer teach us?", "subtitle": "", "track": "Pythonista", "type": "Talk", "language": "en", "abstract": "Although Python is an interpreted language, the main interpreter - CPython - first compiles your code to an intermediate bytecode representation which is then interpreted. To understand how it works we can look at how we could write our own language that compiles to CPython bytecode.", "description": "In this talk we'll see an overview of the CPython interpreter and go through how you could implement a language that runs on it yourself. The end goal of the presentation will be to show how to write a compiler that can compile a small program that takes user input and calculates Fibonacci numbers. Along the way we should understand more about the interpreter's design, and how the design of the language as a whole lead to the interpreter we have today", "recording_license": "", "do_not_record": false, "persons": [{"code": "PY9CDC", "name": "Oscar Horne", "avatar": null, "biography": "Computer enthusiast and student of computer science at Victoria University of Wellington", "public_name": "Oscar Horne", "guid": "40dffc9e-3a34-555d-8ca2-6d73e3ebc3e3", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/PY9CDC/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QUDN8S/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QUDN8S/", "attachments": []}, {"guid": "de22c27c-1463-5f02-abfe-93a3706a121c", "code": "YUUZ8A", "id": 72661, "logo": null, "date": "2025-11-22T11:05:00+13:00", "start": "11:05", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-72661-dns-as-code-a-review-of-what-s-out-there", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YUUZ8A/", "title": "DNS as Code: A Review Of What's Out There", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "A practical review of various DNS management practices, ranging from manual configuration and writing your own zone files, to using provider control panels, tools like OctoDNS and DNSControl, and infrastructure-as-code approaches such as Terraform. It also covers custom scripting techniques that interact directly with DNS provider APIs. Each method is evaluated in terms of maintainability, suitability for different environments, and how it integrates with modern infrastructure management workflows. The session concludes with a look at how I use a simple Python module to create a transparent and adaptable alternative workflow.", "description": "I'll share my journey exploring DNS as Code using Python, from the early days of editing named.conf and zone files directly on nameservers\u2014with fond memories of working with BIND and PowerDNS\u2014to evaluating libraries and tools like OctoDNS, StackExchange's DNSControl, and Terraform. Along the way, I\u2019ll explain why I ultimately prefer using Python to interact directly with providers such as Metaname and Namecheap.\r\n\r\nYou\u2019ll see a practical DNS-as-Code workflow in action: managing zone files in Git, automating updates via provider APIs, and maintaining clarity and control without unnecessary complexity. Whether you're managing a handful of personal domains or supporting production infrastructure, this session offers tools, patterns, and perspective to bring DNS firmly under code-based management.", "recording_license": "", "do_not_record": false, "persons": [{"code": "FJPTBM", "name": "John Billings", "avatar": "https://talks.kiwipycon.nz/media/avatars/FJPTBM_gTcWj1S.webp", "biography": "John is a sysadmin, DevOps engineer, and startup supporter who likes making things work, preferably from a terminal window. For him, the year of the Linux desktop was 1998, and once he\u2019d set up his first web server, there was really no going back. After dabbling with bash, Perl, Tcl, Ruby, Forth, and other languages best left to history, he has now decided to dabble with Python.", "public_name": "John Billings", "guid": "206f0fba-c386-580c-87bf-3097ef232fd5", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/FJPTBM/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YUUZ8A/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YUUZ8A/", "attachments": []}, {"guid": "24b93f2e-a0f0-5fb6-9497-afa0e0104b3b", "code": "DKJHXQ", "id": 79966, "logo": null, "date": "2025-11-22T11:40:00+13:00", "start": "11:40", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-79966-pimping-my-ride-with-micropython", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DKJHXQ/", "title": "Pimping my ride with MicroPython", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Under duress from some of my mates I recently bought a bush truck. It has a rear mounted radiator and a couple of manually switched radiator fans that need to be operated based on the temperature gauge reading. It turns out that I am only barely capable of monitoring the gauge while keeping the vehicle pointed in the right direction so I decided to automate it. Despite there being a trivially easy and robust off-the-shelf way to do this I decided to use a microcontroller running MicroPython instead, because ... why not? This talk will describe the design, construction, coding, and performance of the system using several different control strategies.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "UMXTU3", "name": "Glenn Ramsey", "avatar": "https://talks.kiwipycon.nz/media/avatars/UMXTU3_Ay9bDuf.webp", "biography": "Dr Glenn Ramsey is an engineer and software developer with a background in C++ and Python, and a growing interest in using MicroPython in places it arguably doesn\u2019t belong. He\u2019s particularly interested in the intersection of code and hardware, from embedded systems to automotive experiments. He approaches projects as opportunities to learn by building (and occasionally^Hfrequently  breaking) things, whether that's in the workshop or under a truck. His current focus is exploring how Python can be used in the creation of backyard solutions for things that would otherwise be cost prohibitive, while learning and having fun along the way.", "public_name": "Glenn Ramsey", "guid": "de7ae9d9-ba72-5011-8746-e1238f2ed7fd", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/UMXTU3/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DKJHXQ/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DKJHXQ/", "attachments": []}, {"guid": "1ec8ecba-9752-54c0-8da1-e3ece5238e1f", "code": "J7NBXS", "id": 80276, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/J7NBXS/doclingduck_k9gj2Mb.png", "date": "2025-11-22T14:15:00+13:00", "start": "14:15", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-80276-unlocking-document-intelligence-with-open-source-ai", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J7NBXS/", "title": "Unlocking Document Intelligence with Open-Source AI", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Most organizational knowledge is still locked inside complex documents, making it difficult to extract and use the information effectively. Traditional tools often fail when working with real-world PDFs. Tables lose their structure, figures are separated from captions, and multi-column layouts are flattened into unreadable text. These issues create a significant barrier to using AI on real document data.\r\n\r\nThe open-source project Docling presents a new approach to document ingestion that mirrors human comprehension using open-source deep learning models in a neat Python package. The system extracts structured information through consistent APIs, preserving original document hierarchy while ensuring machine readability.\r\n\r\nWith support for over ten of the most common file formats and a consistent API, Docling enables production-ready document processing pipelines and provides seamless integration with established frameworks including LangChain and LlamaIndex, as well as multilingual support. Its MIT license and local execution model make it suitable for sensitive enterprise applications.", "description": "In this session, you'll get an in-depth introduction to the open source project Docling and how it can streamline your workflow. With over 36,000 stars on Github in a year, Docling is fastest growing open source project out of IBM. We will go through live coding demos that will walk you through the basics of how to use Docling, and showcase the advanced features Docling has that make your real world data more valuable in AI applications.", "recording_license": "", "do_not_record": false, "persons": [{"code": "HRNV7T", "name": "Mingxuan Zhao", "avatar": "https://talks.kiwipycon.nz/media/avatars/HRNV7T_aYAFH3m.webp", "biography": null, "public_name": "Mingxuan Zhao", "guid": "fda9e5e7-5e21-5e51-8f88-54956a25b680", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/HRNV7T/"}], "links": [{"title": "Docling Github Repo", "url": "https://github.com/docling-project/docling", "type": "related"}], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J7NBXS/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J7NBXS/", "attachments": []}, {"guid": "b88f07e1-5f44-5a8f-9de1-6ae9c0eb6da3", "code": "CNUK7N", "id": 78604, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/CNUK7N/fork1_qYKyDOC.png", "date": "2025-11-22T14:50:00+13:00", "start": "14:50", "duration": "00:45", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-78604-python-multiprocessing-fork-ed", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/CNUK7N/", "title": "Python & multiprocessing: Fork'ed !", "subtitle": "", "track": "Pythonista", "type": "Extended talk", "language": "en", "abstract": "This talk will explore the various ways of spawning processes in Python (subprocess, multiprocessing, concurrent.futures, fork, vfork, posix_spawn, etc.) and how those implementations inside Python have been leading to regular dead-locks and hard crashes for many years in production environments.", "description": "This talk will introduce the multiple different ways of spawning sub-processes in Python with simple & easy to understand examples. We will then have a brief look at the different implementations and their various use-cases.\r\n\r\nThen we will show how spawning processes in Python has always been fraught with problems for over 15 years. We will show real-world examples of seemingly unexplainable dead-locks and hard crashes when spawning processes in Python, especially in the context of multi-threaded applications.\r\n\r\nLastly, we explain the reasons for those hard-to-debug dead-locks & hard crashes, show the problems that are associated to this day with using os.fork() & os.register_at_fork(). Then we will offer up how alternatives like os.posix_spawn() + vfork can help to make your Python programs more robust.", "recording_license": "", "do_not_record": false, "persons": [{"code": "UBTWCE", "name": "Teijo Holzer", "avatar": "https://talks.kiwipycon.nz/media/avatars/UBTWCE_OMYXMQX.webp", "biography": "Teijo Holzer has been working in the Visual Effects industry for WetaFX in Wellington, New Zealand for over 15 years on feature films like Avatar & The Hobbit. He has over 15 years of professional Python experience, and has been instrumental in discovering extremely difficult bugs in Python & associated libraries (e.g. PySide), providing reproducible test cases and suggestions for fixes.", "public_name": "Teijo Holzer", "guid": "525f3c4d-01a3-57f5-871c-1ceb12441e0d", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/UBTWCE/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/CNUK7N/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/CNUK7N/", "attachments": []}, {"guid": "192e70c7-38a7-50a0-8573-c98edc8db66e", "code": "BNLJUZ", "id": 80009, "logo": null, "date": "2025-11-22T16:00:00+13:00", "start": "16:00", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-80009-get-a-grib", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/BNLJUZ/", "title": "Get a GRIB", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In meteorology and geosciences, the use of GRIB files is a common occurrence. GRIB files are binary blobs of data that contain \"lines\" of 2 dimensional information about the weather and forecasts.\r\nEvery meteorological service deals with these files in a different way. For the New Zealand MetService, we must manipulate them (using Python, of course), to match the local systems. In this talk I'll cover what libraries are best for this process, and how they can be used to get the right data in the right files.", "description": "GRIB files can be created by simply concatenating different grib message lines, and even mix versions of GRIB (0, 1, or 2). As the different datasets have no relation to each other, the data can be grouped in different ways, such as per variable, per datapoint, per date, etc.\r\nEach system that uses these files has its own preference as to how they are grouped and sorted, and to get all data from one grouping to another, the files need to be read, manipulated and written.", "recording_license": "", "do_not_record": false, "persons": [{"code": "9PXJYX", "name": "Simon `Firesphere` Erkelens", "avatar": "https://talks.kiwipycon.nz/media/avatars/9PXJYX_17Fd1Uu.webp", "biography": "Born Dutch, after a long stint as web developer, I went in to a new direction and started working with Python on Raspberry Pis, as well as integrating several APIs in to other applications.\r\nBuilding new things, rebuilding old things, recreating things, anything IT related, I'll have a go at.\r\nAnd if it's electronics and hardware related, I'll happily give it a try too!", "public_name": "Simon `Firesphere` Erkelens", "guid": "973ddbac-ee34-5a04-aa3d-5b84f42c4b0e", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/9PXJYX/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/BNLJUZ/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/BNLJUZ/", "attachments": []}, {"guid": "051d3f84-9dac-5341-8977-a6b1f13deae5", "code": "SCASYU", "id": 79873, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/SCASYU/talk_image_F5AI_HR3b3Zo.webp", "date": "2025-11-22T16:35:00+13:00", "start": "16:35", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-79873-mitigating-ai-misuse-in-introductory-python-courses-with-graphical-programming-tasks", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SCASYU/", "title": "Mitigating AI Misuse in Introductory Python Courses with Graphical Programming Tasks", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "As large language models (LLMs) reshape how students engage with programming, educators face increasing challenges in maintaining academic integrity (An et al., 2025; McDonald et al., 2025). Drawing on the presenter's doctoral research, this talk explores how visual programming tasks can meaningfully resist unauthorised AI assistance, offering a robust alternative to conventional text-based exercises that are highly susceptible to automation.\r\n\r\nCentral to this approach is Thonny-py5mode -- a creative coding extension for the beginner-friendly Thonny IDE, developed as part of the broader PhD research project. It enables graphical output via py5, a Processing-inspired Python library for programming interactive graphics, animations, and applications (Schmitz, 2021).\r\n\r\nThe talk builds on findings by McDanel and Novak (2025), who observed that LLMs often struggle with assignments involving graphical output, especially when correctness hinges on appearance rather than testable outcomes. We present a series of Thonny-py5mode tasks used in undergraduate assessment and evaluate the performance of leading LLMs (GPT-4o, Claude Sonnet 4, Gemini 2.5) in replicating them. This session offers a scalable, discipline-agnostic strategy -- adaptable to other Python graphics libraries -- for promoting conceptual understanding, supporting creativity, and designing resilient assessments in the GenAI era.", "description": "GitHub resources include sample assessment briefs, starter code, and other materials for practical teaching and learning.\r\n\r\nhttps://github.com/tabreturn/pycon-2025", "recording_license": "", "do_not_record": false, "persons": [{"code": "RCYZ9B", "name": "Tristan Bunn", "avatar": "https://talks.kiwipycon.nz/media/avatars/RCYZ9B_ayNXgOD.webp", "biography": "Tristan Bunn began creating for the Web in the era of the PlayStation 1, grunge music, and dial-up modems. Over the years, he transitioned from designer to developer and now works as a Creative Technologies lecturer in Australia. His work sits at the intersection of creativity, code, and experimentation, exploring interactive technology across web, mobile, games, and immersive media. Bunn is the author of Learn Python Visually (No Starch Press).", "public_name": "Tristan Bunn", "guid": "56a3f4fc-19e5-52ec-b872-529927ba7c9e", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/RCYZ9B/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SCASYU/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/SCASYU/", "attachments": []}]}}, {"index": 3, "date": "2025-11-23", "day_start": "2025-11-23T04:00:00+13:00", "day_end": "2025-11-24T03:59:00+13:00", "rooms": {"Plenary Space": [{"guid": "bda8c8e7-8d3f-5a93-a6df-baa92e0982ac", "code": "3DG9ZF", "id": 81553, "logo": null, "date": "2025-11-23T09:00:00+13:00", "start": "09:00", "duration": "00:10", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81553-housekeeping-announcements", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3DG9ZF/", "title": "Housekeeping/Announcements", "subtitle": "", "track": null, "type": "Event", "language": "en", "abstract": "A short session covering key information about the venue, schedule, and practical details to help you make the most of the conference.", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3DG9ZF/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/3DG9ZF/", "attachments": []}, {"guid": "bb47d8a2-83c7-53f4-ba34-612a7764afa0", "code": "MXE9E8", "id": 81539, "logo": null, "date": "2025-11-23T09:10:00+13:00", "start": "09:10", "duration": "01:00", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81539-keynote-a-neurodivergent-career-making-work-fit-us", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/MXE9E8/", "title": "Keynote: A Neurodivergent Career--Making Work Fit Us", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "Neurodivergent brains can excel at tech, but excelling in formal employment can be more difficult! Most jobs are designed for the mythical neurotypical brain, and many are a particularly poor fit even for well-qualified neurodivergent brains. Learn about strategies that might work for different kinds of neurodivergent brains to adapt these neurotypical-centric jobs to neurodivergent brains. Knowing what adaptations can actually help and how to get those adaptations is important! This talk will give some examples and strategies to shape a job to fit a neurodivergent brain better. Joelle will also encourage those with lead, partnership, or management responsibility to consider alternatives to the ways we've always done things, to allow more people to do amazing work in tech.\r\n\r\nThis talk will draw from 25 years of professional experience in both tech and neurodivergent communities. It will go beyond the simple answers given to neurodivergent folks in the workplace (\"Wear noise-cancelling headphones!\") and instead talk about what a job that actually fits some neurodivergent brains might look like. How do we communicate/collaborate with coworkers? Get feedback? Use technology and scripting to assist us? I will mix tech solutions and non-tech solutions to the problems with neurotypical-centric employment. I hope to present a vision of neurodivergent employment futures.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "YEUZN8", "name": "Joelle Maslak", "avatar": "https://talks.kiwipycon.nz/media/avatars/YEUZN8_wmNYy3A.webp", "biography": "Joelle is a network engineer for Netflix, where she uses Python to configure and monitor a network that spans the globe. She started programming on an Apple II when she was 5 and has worked in many different IT roles over her 30 year long career.  She holds dual degrees, one in Computer Science and the other in Gender, Women, and Sexuality Studies, which help fuel her vision of a world where everyone is included. Outside of work and her research interests (she is involved in research that benefits the neurodivergent and the rainbow communities), she loves to tinker with toy operating systems and old computing technology.", "public_name": "Joelle Maslak", "guid": "73ac75e4-b56a-591a-8295-890522754b8a", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/YEUZN8/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/MXE9E8/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/MXE9E8/", "attachments": []}, {"guid": "bd4fa1c2-66c2-5bb6-be3c-541c771bb70d", "code": "TMGEP3", "id": 80026, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/TMGEP3/Khandallah-Ngaio_TkD0qti.png", "date": "2025-11-23T10:25:00+13:00", "start": "10:25", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80026-spatial-forecasting-of-housing-development-in-wellington-with-an-all-python-stack", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/TMGEP3/", "title": "Spatial forecasting of housing development in Wellington with an all-python stack", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Crow Advisory chose python for their spatial forecast analysis of the Wellington housing development response to Wellington's 2024 District Plan, which greatly increased allowable building capacity across the city. We'll talk through the tools we used, the design approach, and what we learned about doing spatial data science in python.", "description": "Tools used include \r\n- `poetry` for dependency management, \r\n- `hydra` (via `hydra-zen`) with `dataclasses` for config management, CLI setup, and keeping a record of config inputs vs model outputs\r\n- `DVC` for data version control, preprocessing management, efficient pipeline runs, and more tracking of inputs vs outputs\r\n-  `loguru` for logging and terminal outputs\r\n- `pandas`, `numpy`, and `geopandas` for data wrangling \r\n- `osmnx` and `networkx` for street and public transport network analysis\r\n- 'statsmodels', `scikit-learn`, `econML`, `scipy`, and `pulp` for modelling and prediction\r\n- `matplotlib` and `pyDeck` for visualisation\r\n- Github for source control", "recording_license": "", "do_not_record": false, "persons": [{"code": "7FJ9EK", "name": "Chris Crow", "avatar": null, "biography": null, "public_name": "Chris Crow", "guid": "5cb2ecde-a5ae-5678-b035-10591f28cdcc", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/7FJ9EK/"}, {"code": "ELDZ8K", "name": "Nathan Stocker", "avatar": null, "biography": null, "public_name": "Nathan Stocker", "guid": "c192f686-90ba-57e4-9090-d5adb3068a7d", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/ELDZ8K/"}, {"code": "793BSQ", "name": "Rhys Williams", "avatar": null, "biography": null, "public_name": "Rhys Williams", "guid": "01a20ae8-2cf7-530e-8ade-ffe5cbdeb8bb", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/793BSQ/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/TMGEP3/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/TMGEP3/", "attachments": []}, {"guid": "61c66fde-2705-5519-a0f1-29ef41e3cfab", "code": "NCQUNS", "id": 74093, "logo": null, "date": "2025-11-23T11:00:00+13:00", "start": "11:00", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-74093-na-taku-rourou-getting-involved-in-c-python-development", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NCQUNS/", "title": "N\u0101 taku rourou: getting involved in (C)Python development", "subtitle": "", "track": "Pythonista", "type": "Talk", "language": "en", "abstract": "There are many ways to contribute to Python; here is mine.\r\n\r\nIt can be daunting to engage with a mature, large, and complex code base, and the associated processes, community, and culture. This talk will discuss my experience as a new CPython contributor, my approach, how it is going, things I've learned, and what I hope to do next.", "description": "I've had the privilege of being able to dedicate a fair amount of time to open-source work recently. I've spent several months going through CPython's open bugs: looking at interesting ones, reproducing and verifying, analysing, and providing a comment or bug fix if it seems useful and appropriate.\r\n\r\nI'll discuss why I want to contribute to CPython, how I am going about it, some preliminary results, metrics, technical challenges, reflections, and plans for the future.", "recording_license": "", "do_not_record": false, "persons": [{"code": "BK93AN", "name": "Duane Griffin", "avatar": "https://talks.kiwipycon.nz/media/avatars/BK93AN_KHHnbts.webp", "biography": "I am a freelance programmer, currently working primarily on CPython. Formerly a Principal Software Developer, working on proprietary mathematical modelling software. I have several decades of professional programming experience, in various languages and domains, but enjoy working on lower-level, performance-critical code the most.", "public_name": "Duane Griffin", "guid": "d6615bfc-00e0-5b8a-93e2-b16968bff5e3", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/BK93AN/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NCQUNS/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NCQUNS/", "attachments": []}, {"guid": "e3ca27a3-16cf-57e3-b756-0ed1045c6c69", "code": "QK8YFT", "id": 80274, "logo": null, "date": "2025-11-23T11:35:00+13:00", "start": "11:35", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80274-an-introduction-to-polars-dataframes-for-the-new-era", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QK8YFT/", "title": "An introduction to Polars: 'DataFrames for the new era'", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Polars (pola.rs) is a new addition to the family of \"DataFrame\" data manipulation and analysis libraries. In the Python world it's rapidly becoming a highly performant \"competitor\" to the Pandas library for data science and data processing.\r\n\r\nThis talk is an introduction to the library and its usage, aimed at beginners as well as people who have done some work with Pandas, for comparison.", "description": "Polars (pola.rs) is a new addition to the family of \"DataFrame\" data manipulation and analysis libraries. In the Python world it's rapidly becoming a highly performant \"competitor\" to the Pandas library for data science and data processing.\r\n\r\nThis talk is an introduction to the library and its usage, aimed at beginners as well as people who have done some work with Pandas, for comparison.", "recording_license": "", "do_not_record": false, "persons": [{"code": "KCADCR", "name": "Tom Eastman", "avatar": "https://talks.kiwipycon.nz/media/avatars/KCADCR_Tg4XfnA.webp", "biography": "In 2001 Tom handed in a programming assignment for a university class that came out to about two thousand lines of Java. His professor later shared their model answer to the problem, it was thirty lines of Python. Tom switched sides on the spot.\r\n\r\nTom is a senior software engineer for Kraken Technologies, and is the vice president of Python New Zealand, the charity promoting and supporting the Python language community in New Zealand.", "public_name": "Tom Eastman", "guid": "9464d2dc-1a9c-5422-b900-40fff29af3fa", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/KCADCR/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QK8YFT/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QK8YFT/", "attachments": []}, {"guid": "8525a5d8-20c0-5ae0-b5a2-b8de0d54b829", "code": "YHYFQP", "id": 80081, "logo": "https://talks.kiwipycon.nz/media/kiwi-pycon-xiv-2025/submissions/YHYFQP/software_wordclo_V6fKouA.png", "date": "2025-11-23T14:10:00+13:00", "start": "14:10", "duration": "00:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-80081-python-at-scale-using-new-zealand-national-supercomputing-infrastructure", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YHYFQP/", "title": "Python at Scale - Using New Zealand National Supercomputing Infrastructure.", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "As well as being the worlds favorite programming language, Python is also the most widely used language on New Zealand\u2019s national supercomputing infrastructure, supporting a wide range of research applications.\r\nLearn about the different ways Python is being used at scale on the REANNZ High Performance Computing cluster. \r\nWith examples of New Zealand researchers applying Python to pressing challenges, and showing how newcomers can get started, setting up an environment, submitting jobs, and scaling workflows.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "YVUQ7H", "name": "callum walley", "avatar": "https://talks.kiwipycon.nz/media/avatars/YVUQ7H_Jxhvkc2.webp", "biography": "Applications Support Specialist at REANNZ\r\nOpen Source enthusiast.\r\nMechatronics Engineer", "public_name": "callum walley", "guid": "aea09a6f-806b-55f9-8a19-d88c05194959", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/YVUQ7H/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YHYFQP/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/YHYFQP/", "attachments": []}, {"guid": "2a1ba359-b09c-5488-b7d4-04f302aab4df", "code": "DHCKDT", "id": 81550, "logo": null, "date": "2025-11-23T15:00:00+13:00", "start": "15:00", "duration": "01:30", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81550-lightning-talks", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DHCKDT/", "title": "Lightning Talks", "subtitle": "", "track": null, "type": "Event", "language": "en", "abstract": "A series of rapid-fire five-minute talks where attendees share projects, ideas, and insights. Fast-paced, fun, and full of surprises.", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DHCKDT/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/DHCKDT/", "attachments": []}, {"guid": "f5a29556-520e-5c4b-b352-57a0f245c245", "code": "LMD37P", "id": 81554, "logo": null, "date": "2025-11-23T16:30:00+13:00", "start": "16:30", "duration": "00:10", "room": "Plenary Space", "slug": "kiwi-pycon-xiv-2025-81554-conference-closing", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LMD37P/", "title": "Conference Closing", "subtitle": "", "track": null, "type": "Event", "language": "en", "abstract": "We\u2019ll come together one last time to reflect on highlights, thank our contributors, and close the conference on an inspiring note.", "description": "", "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LMD37P/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/LMD37P/", "attachments": []}], "Breakout Room": [{"guid": "a501ccd3-44d0-57f3-83e3-b1f9361277a2", "code": "WWU79Z", "id": 84622, "logo": null, "date": "2025-11-23T10:25:00+13:00", "start": "10:25", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-84622-network-state-checking-a-case-study-in-automation-using-python", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/WWU79Z/", "title": "Network State Checking: A Case Study in Automation using Python", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Dependability is the watchword for any telecommunications operator. Sound monitoring goes a long way to ensure continuity of service, but typically this relies on known existing metrics to be effective. When the network changes and these metrics are invalidated, it can be challenging to confirm there is no ongoing service impact for the end user. \r\n\r\nThis was the challenge that REANNZ faced in the past year as we undertook a hardware refresh affecting our entire domestic backhaul. Every service we deliver was required to be rehomed and reimplemented according to a new network architecture. To catalogue every possible service and establish individually the evidence that would be required to prove their continuity after migration would require an enormous time-investment and be prone to error, so we instead developed a generalised service model and implemented automation with Python to reason from live data pulled from our network. New configuration was generated consistent with the requirements of our new hardware, and feedback produced at the time of implementation describing in clear detail a comparison between old and new running state. This model was iterated upon based on our learnings over time until it could accurately verify even highly bespoke configurations.\r\n\r\nIn this presentation, I propose to demonstrate the workings of this system with case studies from our experience. I will explain the challenges we encountered and how they were overcome, and conclude how ultimately this work proved its worth for our membership.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "VLSCEP", "name": "Craig Henderson", "avatar": "https://talks.kiwipycon.nz/media/avatars/VLSCEP_rgzT2K4.webp", "biography": "Craig Henderson is an operational engineer with REANNZ, New Zealand's National Research and Education network carrier and high performance computing provider. His recent work has leveraged automation tooling developed with Python to manage a large-scale network rearchitecture, and he is here to speak to that experience.", "public_name": "Craig Henderson", "guid": "14288cf9-3eb3-55d3-9f01-f2c630dd2e75", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/VLSCEP/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/WWU79Z/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/WWU79Z/", "attachments": []}, {"guid": "8f842004-dff6-50e6-b367-8f816da8c8db", "code": "J3RF97", "id": 79905, "logo": null, "date": "2025-11-23T11:00:00+13:00", "start": "11:00", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-79905-the-python-and-the-pelican", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J3RF97/", "title": "The Python and the Pelican", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The most recent developments in the world of Python packaging have not only made it easier to package projects, but even to create them. Turbopelican is one such tool which combines one of Python's most popular tools (a static-site generator) with a modern uv setup to provide the easiest ways to create a website without spending a cent. This talk will discuss how recent changes in the packaging world make this, and so much more, not only possible but easy.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "VMTVST", "name": "Elliot Simpson", "avatar": "https://talks.kiwipycon.nz/media/avatars/VMTVST_rZ0MrK9.webp", "biography": "I started attending PyCons in 2010 and have been using Python ever since, most recently in my role as Senior Software Engineer at DataMasque. In my free time, I enjoy contributing to free and open source software, exploring Suckless programs, and writing my own technical blog at elliotsimpson.org when I find the time.", "public_name": "Elliot Simpson", "guid": "b0f811e3-dd02-5962-af8c-7dec545f204d", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/VMTVST/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J3RF97/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/J3RF97/", "attachments": []}, {"guid": "44fac91a-c1f0-5dd0-ac8f-bace8bb90ef1", "code": "QLETXF", "id": 85024, "logo": null, "date": "2025-11-23T11:35:00+13:00", "start": "11:35", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-85024-mauling-python-to-analyse-ancient-basic-programs", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QLETXF/", "title": "Mauling Python to analyse ancient BASIC programs", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Firstly, a meander through the creation and evolution of BASIC in the 1960s and '70s and how, as the first programming language designed specifically for a non-technical audience, it relates to Python. Then an explanation of how we can morph Python to allow programming in a BASIC-like flavour of Python, but with the full power of a modern Python development environment available, allowing historic BASIC program analysis. Lines of Python code can be intermingled with lines of BASIC, each accessing the other\u2019s variables, and runtime code analysis techniques such as interactive debugging, profiling, and code coverage are available.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "D3QWUH", "name": "Carl Cerecke", "avatar": null, "biography": "Carl is a research software engineer with the Bioeconomy Science Institute where he spends his days writing Python code to help scientists do science. He has spent his career bouncing between industry as a software developer and academia as a lecturer/tutor. His programming journey began 40yrs ago teaching himself BASIC on the Commodore 64, and he started programming Python around the turn of the millennium.", "public_name": "Carl Cerecke", "guid": "0bf8c1fe-ea9a-5310-aeb6-fa471f793de6", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/D3QWUH/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QLETXF/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/QLETXF/", "attachments": []}, {"guid": "251a4031-3d20-50e5-af2b-3e0bdf3a6a2e", "code": "NFZ8UB", "id": 85135, "logo": null, "date": "2025-11-23T14:10:00+13:00", "start": "14:10", "duration": "00:30", "room": "Breakout Room", "slug": "kiwi-pycon-xiv-2025-85135-brevity", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NFZ8UB/", "title": "Brevity", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "This is talk about technical communication in large scale complex systems where operational safety is paramount. In such environments, technical phrases, formal procedures, recent biases and individual habits influence how we communicate. But in high risk environments, when miscommunications or misunderstandings occur, it can be catastrophic.", "description": "Today we\u2019re going to learn how to fly a plane. Or, specifically, we\u2019re going to learn how large international jets taxi and take off from a runway.\r\n\r\nWhile thousands of planes take off and land safely every day, occasionally there are some close calls when disaster is averted by sheer luck or coincidence. In those circumstances, we get a safety investigation to help us learn from the mistakes and avoid catastrophic outcomes. This talk learns from one such safety report and we\u2019ll discuss the parallels software engineers can learn from the aviation industry when communicating in complex operating environments.", "recording_license": "", "do_not_record": false, "persons": [{"code": "PB9BKD", "name": "Jack Skinner", "avatar": "https://talks.kiwipycon.nz/media/avatars/PB9BKD_MVrZUtt.webp", "biography": "Jack is a consultant CTO For Hire, specialising in all things web and APIs. He consults to small and growing software companies on patterns and practices for scaling teams and technology. He\u2019s spent the past decade growing technical communities as a speaker, organiser, facilitator and coach.\r\n\r\nIn his spare time, Jack is also an active member of the Python community in Australia. He co-organises the recently rebooted Sydney Python Community, and is the conference director of PyCon AU 2026 in Brisbane.", "public_name": "Jack Skinner", "guid": "2bbeaf8c-83e0-5205-ba1c-faa9507e504d", "url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/speaker/PB9BKD/"}], "links": [], "feedback_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NFZ8UB/feedback/", "origin_url": "https://talks.kiwipycon.nz/kiwi-pycon-xiv-2025/talk/NFZ8UB/", "attachments": []}]}}]}}}