diff --git a/public/files/PyCon AU 2024 - Bring your team.pdf b/public/files/PyCon AU 2024 - Bring your team.pdf new file mode 100644 index 00000000..9e092be3 Binary files /dev/null and b/public/files/PyCon AU 2024 - Bring your team.pdf differ diff --git a/public/media/bring-your-team-campaign.png b/public/media/bring-your-team-campaign.png new file mode 100644 index 00000000..19f9caa1 Binary files /dev/null and b/public/media/bring-your-team-campaign.png differ diff --git a/public/pycon-au-2024/schedule/v/20240903.1/widgets/schedule.json b/public/pycon-au-2024/schedule/v/20240903.1/widgets/schedule.json index cde3e54e..c1f0a72b 100644 --- a/public/pycon-au-2024/schedule/v/20240903.1/widgets/schedule.json +++ b/public/pycon-au-2024/schedule/v/20240903.1/widgets/schedule.json @@ -1 +1,1407 @@ -{"talks": [{"code": "ACKK3A", "id": 1069859, "title": "Causal Discovery in Python", "abstract": "A review and comparison of software available for causal discovery in Python. Causal discovery means learning \"what causes what\" from your data. The input is a tabular dataset; the output is a causal graphical model (or a set of potential models) over your features. If feature A affects feature B, there should be an arrow A-->B in the causal graphical model. Causal discovery is useful for hypothesis generation, experiment selection, and for testing our assumptions around causation.\r\n\r\nI'll give a brief intro to causal discovery, then review the following packages: py-tetrad, causal-learn, tigramite, causalnex, and cdt (causal discovery toolbox). The packages have some overlap but different emphases: each one implements at least one algorithm not covered by the other packages, making them useful in different situations. If time permits I'll finish with a quick demo, showing each package learning a model from the same dataset.", "speakers": ["Q7H3M8"], "track": 4873, "start": "2024-11-22T09:20:00+11:00", "end": "2024-11-22T09:50:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.795363+00:00", "state": null, "do_not_record": false}, {"id": 1069857, "title": {"en": "[placeholder] Education Track Keynote"}, "start": "2024-11-21T22:20:00Z", "end": "2024-11-22T09:50:00+11:00", "room": 3412}, {"code": "ZCKWM3", "id": 1069858, "title": "Why UUIDs are Secretly Incredibly Fascinating", "abstract": "What even is '06462f89-b4ef-7f7d-8000-edda1bba5155' and why should you actually care?\r\n\r\n(you should, but \"why\"?)", "speakers": ["KCADCR"], "track": 4872, "start": "2024-11-22T09:20:00+11:00", "end": "2024-11-22T09:50:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.795324+00:00", "state": null, "do_not_record": false}, {"code": "79HGSW", "id": 1069861, "title": "A Lazy Person's Guide to Building REST Clients or: How I Learned to Stop Worrying and Love Dunder Overrides", "abstract": "Sick of writing lots of dedicated methods to perform the same tasks? Want to write less code? This talk may be for you! \r\n\r\nREST API's are ubiquitious, and a very useful way to send and recieve data from various services. However, building them can often feel repetitive and boring. So, because I was lazy, and sick of doing it I decided to override specific dunder methods to write less boiler plate code, and keep myself interested.\r\n\r\nWas it easier? Probably not. Did it require less work than a normal implementation? Also probably not. Did it make my code more readable and portable? Definitely not. But it was fun, and I learnt how overriding Python's magic methods - often called dunders - could be useful. Let me share the lessons I learnt with you and inspire your own ideas.", "speakers": ["NTEJEK"], "track": 4872, "start": "2024-11-22T10:00:00+11:00", "end": "2024-11-22T10:30:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.795425+00:00", "state": null, "do_not_record": false}, {"code": "3GPQDE", "id": 1069860, "title": "Teaching Digital Technologies in Australian schools with Python and the Kookaberry", "abstract": "There are around 6,200 primary schools around Australia, and the curriculum has a requirement to teach Digital Technologies, which includes a coding portion. There are many challenges here, not least which is enabling the approximately 150,000 primary school teachers with the skills and resources to teach programming to young students. The AustSTEM foundation was set up to assist in this area, and developed a MicroPython based learning platform, which consists of a pocket-sized computing device that integrates with a web-based coding and teaching environment. The teaching material has many hands-on activities, with connections to nature and science. In this talk we will discuss this teaching platform, how it can help students transition from block-based programming to textual coding, and show some of the successes we have had so far in Australian classrooms.", "speakers": ["BHTKP3"], "track": 4871, "start": "2024-11-22T10:00:00+11:00", "end": "2024-11-22T10:30:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.795394+00:00", "state": null, "do_not_record": false}, {"code": "WB8HTT", "id": 1069862, "title": "Verifying and evaluating scientific results with the open source package \"scores\"", "abstract": "Verifying, evaluating or interpreting complex data requires specialist tools and methods. Many data scientists, programmers and scientists will be familiar with some evaluation metrics such as accuracy, mean squared error or true positive rate. There are many situations where these scores are insufficient for assessing correctness, accuracy or suitability of a model or prediction. The challenge of verifying models and predictions affects most fields of science, engineering, and many machine learning applications.\r\n\r\nThis talk will introduce \"scores\", an open source Python package for verifying and evaluating labelled, n-dimensional (multidimensional) data at any scale. \"scores\" includes over 50 metrics, statistical techniques and data processing tools. The software repository can be found at https://github.com/nci/scores and the documentation can be found at https://scores.readthedocs.io/ .\r\n\r\nThis talk is suitable for beginner, intermediate and expert audiences. Developers and data scientists who are familiar mainly with tabular data, such as supported by the pandas library, may be interested in the additional functionality offered by \"scores\" (and the xarray library it utilises). For those learning about more advanced methods, every metric and statistical test has a companion Jupyter Notebook tutorial. For expert users already familiar with these ideas, you may be interested in some of the novel scoring methods not commonly found in other packages. \r\n\r\nCome to this talk to hear about:\r\n - The difference between tabular data, n-dimensional data, and labelled n-dimensional data\r\n - Examples of using a common metric from \"scores\" on labelled, n-dimensional data\r\n - Examples of using \"scores\" for interrogating data in multiple dimensions\r\n - Examples of where basic methods overlook important considerations\r\n - Examples of using some of the more complex metrics in \"scores\"", "speakers": ["ZZQ9TE"], "track": 4873, "start": "2024-11-22T10:00:00+11:00", "end": "2024-11-22T10:30:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.795456+00:00", "state": null, "do_not_record": false}, {"id": 1069865, "title": {"en": "Morning break"}, "start": "2024-11-21T23:30:00Z", "end": "2024-11-22T11:00:00+11:00", "room": 3412}, {"id": 1069863, "title": {"en": "Morning break"}, "start": "2024-11-21T23:30:00Z", "end": "2024-11-22T11:00:00+11:00", "room": 3411}, {"id": 1069864, "title": {"en": "Morning break"}, "start": "2024-11-21T23:30:00Z", "end": "2024-11-22T11:00:00+11:00", "room": 3410}, {"code": "NLZQAA", "id": 1069866, "title": "Django on AWS for chump change", "abstract": "Some cheap and definitely not employer approved ways to run Django on AWS infrastructure on a budget", "speakers": ["JFJVXW"], "track": 4872, "start": "2024-11-22T11:00:00+11:00", "end": "2024-11-22T11:30:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.795651+00:00", "state": null, "do_not_record": false}, {"code": "YYN7YH", "id": 1069867, "title": "How Smart is AI? \u2013 Real projects to build real understanding", "abstract": "Chat GPT is all the rage in schools, and everyone is talking about AI, but how do we give students a real understanding of AI\u2019s capabilities and limitations? In this talk I\u2019ll demo how you can get students coding their own projects that explore (free) GPT technologies, integrating their own data sources, and contemplating when AI is the right solution.", "speakers": ["TQKR8P"], "track": 4871, "start": "2024-11-22T11:00:00+11:00", "end": "2024-11-22T11:30:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.795684+00:00", "state": null, "do_not_record": false}, {"code": "MQQJYE", "id": 1069868, "title": "Commissioning tools at the Australian Synchrotron, or, how to get a bazillion dollars worth of toys to play nicely together", "abstract": "Discover the innovative work happening at the Australian Synchrotron, where high-energy X-rays support research across Australia and neighbouring countries. The scientific computing team uses Python to connect to hardware, orchestrate experiments, and process data.\r\n\r\nWe'll focus on a Python Dash interface developed to commission new positioners and detectors. This interface automatically generates Gaussian statistics. It includes pages for both one positioner and one detector (1D) or two positioners and one detector (2D), and allows users to click on a 2D Gaussian to take horizontal and vertical slices.\r\n\r\nAdditionally, we will discuss best programming practices, such as implementing unit tests, maintaining DRY principles, and using linting tools to improve code quality. Good programming practices work beautifully in a scientific environment. Join us to learn how these techniques can enhance your work with Python.", "speakers": ["JJR3W8"], "track": 4873, "start": "2024-11-22T11:00:00+11:00", "end": "2024-11-22T11:30:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.795715+00:00", "state": null, "do_not_record": false}, {"code": "DQGVLY", "id": 1069870, "title": "Simplifying Python Web App Operations: Automating K8s Ops with Open Source", "abstract": "After creating a great web app using Python such as with flask, the next hurdle to production is how to make it available to users and operate it. And not just your app, but also ingress, the database, observability and the list goes on. We will go through your options for simplifying the operations of your web app using open source tooling. This will include using k8s directly, helm charts, IaaC using pulumi and new tooling developed by Canonical using juju. By the end of the talk you will have seen the benefits and drawbacks of each which will help you make an informed decision on which tool best suits your needs!", "speakers": ["ATDLZU"], "track": 4872, "start": "2024-11-22T11:40:00+11:00", "end": "2024-11-22T12:10:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.795775+00:00", "state": null, "do_not_record": false}, {"code": "9MLDVZ", "id": 1069871, "title": "Astronomy with Python, for non-astronomers", "abstract": "Astronomers have been dealing with digital data since the 1980s and online databases \r\nsince the early 90's, and now, almost all research astronomers use Python to access and \r\nprocess that data. Most astronomical database are open to the public, and most research\r\nsoftware tools are either open source, or freely available. I'll give an intro, aimed at \r\nnon-astronomers, to some Python packages (astropy, skyfield) and online research tools.\r\n\r\nThis talk will give an overview on what tools and databases are available and how to access \r\nthem. Maybe you're writing a game, and you want the 3D locations and properties of the \r\nnearest 10,000 stars (or extrasolar planets, or galaxies). Maybe you're building a Solar\r\npanel that tracks the Sun, or a camera mount that tracks the International Space\r\nStation. Maybe you're trying to model shadow lengths and directions in satellite images. Or\r\nmaybe you just want to play around with real telescope images that haven't had a PR \r\ndepartment make them 'prettier'...", "speakers": ["9JGCPM"], "track": 4873, "start": "2024-11-22T11:40:00+11:00", "end": "2024-11-22T12:10:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.795804+00:00", "state": null, "do_not_record": false}, {"code": "XHTJ3S", "id": 1069869, "title": "Transitioning from VB to Python \u2013 Mapping a 6 month journey", "abstract": "In the past decade, this school has consistently exceeded VCE expectations in Software Development, largely due to well-developed resources, consistency in use of programming language (Visual Basic) and progression of skills through year 7 to year 12. However, a gap analysis in the teaching methodology has highlighted conceptual computational thinking and problem-solving skills as a key gap in the current offering. This was attributed to the curriculum's skills-based focus and the Covid-era teaching practice of flipped learning via video tutorials. \r\n\r\nThis has presented an opportunity to overhaul the teaching methodology to focus on equipping students with the skills to apply their learning in different contexts. Some key aspects of this transformation include a more live coding technique and transitioning to Python as the preferred programming language, due to its versatility and future prospects for students. \r\n\r\nWe present this roadmap which leads to a complete overhaul of our teaching programmes from year 7 to year 12, scaffolding Python across Applied Computing, STEM projects, Robotics and Game development over the next 6 months.", "speakers": ["BNHHZ9", "MK9KK8"], "track": 4871, "start": "2024-11-22T11:40:00+11:00", "end": "2024-11-22T12:10:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.795745+00:00", "state": null, "do_not_record": false}, {"code": "WLCHUM", "id": 1069873, "title": "Enhancing Programming Ability with Playful Learning and Karel", "abstract": "Beginner programmers often struggle to understand and trace program execution, which is worsened by underdeveloped debugging and testing skills. Beginners may also lack confidence or are easily demotivated, which can hinder learning. To assist students in developing these skills and build confidence we created a set of playful programming challenges and competition using Karel the Robot. The Karel system provides a 2D \u201cgrid world\u201d where the Karel character can move and interact with its environment. The 2D world is visualised for students so that they can immediately see how their program changes the environment step by step as well as the final program state. This is in contrast to traditional languages where learners must develop and maintain a mental model of the program state. This talk will cover our approach, preliminary results and feedback from students showing an increase in confidence and interest in programming. We will also share how this approach can be applied to other learning contexts.", "speakers": ["VXBVLZ", "8NDWMQ"], "track": 4871, "start": "2024-11-22T12:20:00+11:00", "end": "2024-11-22T12:50:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.795861+00:00", "state": null, "do_not_record": false}, {"code": "JV9WT7", "id": 1069872, "title": "Explore, annotate, and analyse multidimensional image data with napari", "abstract": "napari is an n-dimensional image viewer for Python. If you\u2019ve ever tried `plt.imshow(arr)` and made Matplotlib unhappy because `arr` has more than two dimensions, then napari might be for you! napari will gladly display higher-dimensional arrays by providing sliders to explore additional dimensions. But napari can also: overlay derived data, such as points, segmentations, polygons, surfaces, and more; and annotate and edit these data, using standard data structures like NumPy or Zarr arrays, allowing you to seamlessly weave exploration, computation, and annotation in image analysis.", "speakers": ["8NFJSF", "S7AU83"], "track": 4873, "start": "2024-11-22T12:20:00+11:00", "end": "2024-11-22T12:50:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.795832+00:00", "state": null, "do_not_record": false}, {"code": "M3KJ3V", "id": 1069874, "title": "Notes on Over-Engineering: A Project Post-Mortem", "abstract": "Join me for a retrospective on a reusable Django app for providing shared database multi-tenancy, complete with automatic tenant-specific queryset filtering, automatic tenant selection middleware, REST framework support, and comprehensive test coverage. This app, despite its sophistication, was never used in production. Let's explore why it was ultimately deemed over-engineered and unnecessary, and what lessons we can learn from this experience.", "speakers": ["RSUKRU"], "track": 4872, "start": "2024-11-22T12:20:00+11:00", "end": "2024-11-22T12:50:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.795891+00:00", "state": null, "do_not_record": false}, {"id": 1069877, "title": {"en": "Lunch"}, "start": "2024-11-22T01:50:00Z", "end": "2024-11-22T13:50:00+11:00", "room": 3411}, {"id": 1069876, "title": {"en": "Lunch"}, "start": "2024-11-22T01:50:00Z", "end": "2024-11-22T13:50:00+11:00", "room": 3410}, {"id": 1069875, "title": {"en": "Lunch"}, "start": "2024-11-22T01:50:00Z", "end": "2024-11-22T13:50:00+11:00", "room": 3412}, {"code": "NUUJAN", "id": 1069880, "title": "Who tests the testers? Making and testing pipelines", "abstract": "You likely have a good pipeline that either runs tests, lints, or deployments for your project.\r\n\r\nBut when it comes to changing that pipeline, how sure are you that it works before taking those changes live?", "speakers": ["AHET73"], "track": 4872, "start": "2024-11-22T13:50:00+11:00", "end": "2024-11-22T14:20:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.796117+00:00", "state": null, "do_not_record": false}, {"code": "7DJWKZ", "id": 1069878, "title": "From Keyword Chaos to Clarity: Conquering a Complex Systematic Review with Python", "abstract": "How can you find relevant needles in a haystack of 25,000 academic abstracts when keyword searching is useless? I explore how I used Python to automate my way out of systematic review hell.", "speakers": ["JTPU7J"], "track": 4873, "start": "2024-11-22T13:50:00+11:00", "end": "2024-11-22T14:20:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796056+00:00", "state": null, "do_not_record": false}, {"code": "Z3KYJZ", "id": 1069879, "title": "Build Your Own IoT! Fun With Python and Raspberry Pi.", "abstract": "This talk will discuss building a basic streaming data pipeline for IoT applications using Python and Raspberry Pi. Attendees will have the opportunity to learn about Raspberry Pi, Apache Kafka + Kafka Connect, and solar power generation.", "speakers": ["7SWEAL"], "track": 4871, "start": "2024-11-22T13:50:00+11:00", "end": "2024-11-22T14:20:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.796087+00:00", "state": null, "do_not_record": false}, {"code": "KFVD3Z", "id": 1069881, "title": "As a Teacher. I have no Time to learn Programming - Streamline Assignment Marking with Python", "abstract": "Teaching is a demanding job that takes away the initiative to learn or improve in programming skills. I therefore decided to streamline some of my assignment marking using Python. The time I spent in developing the Python scripts could then be offset by the efficiency and accuracy I gained from the automation. \r\n\r\nIn this presentation, I will demonstrate how to populate student details into their individual Excel mark sheets, check marking mistakes, automate mark adjustment and collect data from individual mark sheets. \r\n\r\nWhile the above automation can be achieved using standard tools offered by Microsoft by putting the programming logic into Excel formulae or Visual Basic for Application, I will argue using Python to separate the logic from data is a better approach in terms of programming practice and Cybersecurity.", "speakers": ["WREQBQ"], "track": 4871, "start": "2024-11-22T14:30:00+11:00", "end": "2024-11-22T15:00:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.796146+00:00", "state": null, "do_not_record": false}, {"code": "XHM7N7", "id": 1069883, "title": "Coding Competition Software VS Murphy's Law", "abstract": "Imagine agreeing to develop a full stack web app to host a coding competition for thousands of students. Then standing at a podium in front of a large crowd as your app crashes and you discover that you might be in too deep.\r\n\r\nThat was my first year of a four year journey of learning to program \"properly\" and build something robust and useful. The full story includes more spectacular fails, hacking and an eventually an app students loved using to program algorithms that do battle in contests based on game theory. The app is built on React / FastAPI and SQLmodel ORM", "speakers": ["VJPZ7L"], "track": 4872, "start": "2024-11-22T14:30:00+11:00", "end": "2024-11-22T15:00:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.796204+00:00", "state": null, "do_not_record": false}, {"code": "3JHULA", "id": 1069882, "title": "Data Morph: A Cautionary Tale of Summary Statistics", "abstract": "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.\r\n\r\nTo 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.", "speakers": ["9WJJPL"], "track": 4873, "start": "2024-11-22T14:30:00+11:00", "end": "2024-11-22T15:00:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796175+00:00", "state": null, "do_not_record": false}, {"id": 1069884, "title": {"en": "Afternoon break"}, "start": "2024-11-22T04:00:00Z", "end": "2024-11-22T15:30:00+11:00", "room": 3410}, {"id": 1069886, "title": {"en": "Afternoon break"}, "start": "2024-11-22T04:00:00Z", "end": "2024-11-22T15:30:00+11:00", "room": 3412}, {"id": 1069885, "title": {"en": "Afternoon break"}, "start": "2024-11-22T04:00:00Z", "end": "2024-11-22T15:30:00+11:00", "room": 3411}, {"code": "XUNCWK", "id": 1069888, "title": "Leveraging the Rich Spatiotemporal Features of live cell imaging with Machine Learning and AI", "abstract": "Live cell imaging is a microscopy technique, where scientists can observe dynamics of living cells across time. One such method, known as lattice lightsheet microscopy captures these processes at high spatiotemporal detail. However, current analyses methods do not always capture the complexities of these feature rich datasets. \r\nIn this talk, I will use an example of programmed cell death, where cells are exposed to different drugs. Using python packages, such as scikit-image and tsfresh, I will demonstrate how we extract morphological and spatiotemporal features of cells. We use these features to train a supervised machine learning (ML) model to predict which drug treatment the cells were exposed to. \r\nFurthermore, using explainable AI with Shapley values, we identify key feature combinations that distinguish the cellular response to each drug. This approach enables data-driven hypothesis generation, allowing us to infer underlying phenotypes and correlate them to the biological processes.", "speakers": ["HVQBMZ"], "track": 4873, "start": "2024-11-22T15:30:00+11:00", "end": "2024-11-22T16:00:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796377+00:00", "state": null, "do_not_record": false}, {"id": 1069887, "title": {"en": "Student Showcase"}, "start": "2024-11-22T04:30:00Z", "end": "2024-11-22T17:20:00+11:00", "room": 3412}, {"code": "CQDJ9K", "id": 1069889, "title": "From minutes to seconds: Capillary auto-alignment with python and opencv", "abstract": "Samples used for diffraction experiments at the Australian Synchrotron, a research facility in Melbourne, are typically presented as finely ground powders confined inside very thin (1mm or less) glass capillaries. These samples are irradiated with X-rays in order to uncover their atomic crystal structures. Amongst our research areas, we study applications in mining, solar cells, perovskites, hydrogen storage, and geology, where understanding material properties at the atomic level can lead to advancements such as enhancing mineral extraction processes, improving solar cell efficiency, developing better hydrogen storage solutions, and analysing the composition of meteorites.\r\n\r\nTo ensure good data quality, the capillary needs to rotate precisely around its centre of rotation in front of the X-ray beam. Alignment of the centre of rotation is usually a manual operation that relies on the human eye and expertise to discern that the capillary is straight and stationary while it rotates around its axis; this process can be lengthy, error-prone, and difficult to achieve, especially for non-experts.\r\n\r\nIn this talk, I will demonstrate how we have united Python, OpenCV, and motion control systems to automate the capillary alignment procedure at the Australian Synchrotron, reducing the time to align a sample from several minutes to just 10 seconds.", "speakers": ["MSEC3L"], "track": 4873, "start": "2024-11-22T16:10:00+11:00", "end": "2024-11-22T16:40:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796406+00:00", "state": null, "do_not_record": false}, {"code": "A78TC9", "id": 1069890, "title": "Avocado, Cheese, Grape, Tomato or: How I Used Python to Stop Worrying and Love Emoji in Bioinformatics", "abstract": "Bioinformatics is the science of understanding and analysing biological information, such as the genetic information contained in DNA. It combines the disciplines of biology, computer science, and mathematics. If this seems daunting, don\u2019t panic, because this talk will focus on two open-source Python packages I have developed, FASTQE and Biomojify, that make common bioinformatics file formats intuitive and accessible\u2026. by using emoji.\r\n\r\nFASTQE simplifies DNA sequencing data analysis by taking numerical quality scores for the data, and summarising them using emoji to quickly convey the good, the bad, and the ugly of sequence data quality. Whether for training, outreach, or debugging, this tool can easily turn unremarkable data quality analysis into an appealing visualisation.\r\n\r\nBiomojify takes the concept further by converting plain text data to use emoji. In DNA, for example, the conventional format represents individual A, C, G, and T nucleotides as plain text. Biomojify substitutes them with emojis such as avocado, cheese, grape, and tomato. It supports various bioinformatics file formats and supports user defined emoji mapping. It can be used to teach the underlying biological concepts behind bioinformatics data, by simplifying specialised data structures for a general audience. \r\n\r\nScience communication is hard. These tools transform complex bioinformatics data into engaging, emoji-based visualisations, making bioinformatics concepts more accessible and adding an element of fun to scientific education and communication.", "speakers": ["HBDX9R"], "track": 4873, "start": "2024-11-22T16:50:00+11:00", "end": "2024-11-22T17:20:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796435+00:00", "state": null, "do_not_record": false}, {"id": 1069891, "title": {"en": "First Timers Session"}, "start": "2024-11-22T21:25:00Z", "end": "2024-11-23T08:45:00+11:00", "room": 3410}, {"id": 1069892, "title": {"en": "Conference Opening (Saturday)"}, "start": "2024-11-22T22:00:00Z", "end": "2024-11-23T09:25:00+11:00", "room": 3410}, {"id": 1069893, "title": {"en": "Keynote - Revealed Soon! "}, "start": "2024-11-22T22:25:00Z", "end": "2024-11-23T10:10:00+11:00", "room": 3410}, {"id": 1069894, "title": {"en": "Morning break"}, "start": "2024-11-22T23:10:00Z", "end": "2024-11-23T10:40:00+11:00", "room": 3410}, {"id": 1069896, "title": {"en": "Morning break"}, "start": "2024-11-22T23:10:00Z", "end": "2024-11-23T10:40:00+11:00", "room": 3411}, {"id": 1069895, "title": {"en": "Morning break"}, "start": "2024-11-22T23:10:00Z", "end": "2024-11-23T10:40:00+11:00", "room": 3412}, {"code": "MBZSKZ", "id": 1069899, "title": "Where am I? What am I doing? Mobile App development in Python", "abstract": "A modern mobile phone isn't just a powerful CPU and display. It's a collection of incredibly sophisticated portable sensors: multiple cameras, a high resolution GPS, accelerometers and more. In this talk, you'll learn how to build and run an app on your phone that can access these sensors, using nothing but Python.", "speakers": ["LDFVBH"], "track": 4870, "start": "2024-11-23T10:40:00+11:00", "end": "2024-11-23T11:10:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.796732+00:00", "state": null, "do_not_record": false}, {"code": "JD8WMZ", "id": 1069898, "title": "AI perceptions of gender", "abstract": "Why does AI perceive gender? Is this something that can be fixed? Should it be fixed? Explore the results of my research encompassing art, AI and gender theory to find out the why and how of gender perception.", "speakers": ["PFTMME"], "track": 4870, "start": "2024-11-23T10:40:00+11:00", "end": "2024-11-23T11:10:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796703+00:00", "state": null, "do_not_record": false}, {"code": "MW7E7N", "id": 1069897, "title": "Making an open source package - lessons learned", "abstract": "Making an open source package is pretty hard in 2024. Expectations are high, and there\u2019s a lot to take into account. I recently developed an open source package. This talk covers what worked, what didn\u2019t work, what I would do again and what I would do differently.\r\n\r\nI developed an open source package called \u201cscores\u201d ( https://github.com/nci/scores , https://scores.readthedocs.io/ ). This is not a presentation about what \u201cscores\u201d does, but instead covers the lessons I learned. Despite being an experienced software developer and having used lots of open source software, there was still a lot to learn (and a lot to figure out) about open source package maintenance.\r\n\r\nEvery package is different, but this is what I did and these are the lessons I learned. \r\n\r\n- Technical Matters:\r\n - How to lay things out on disk\r\n - Configuration files\r\n - Automated testing\r\n - Type hinting\r\n - Linting and other static analysis tools\r\n - Code layout and design\r\n- Documentation:\r\n - What documentation to produce\r\n - Picking and using a tech stack\r\n - Rendering (documentation often renders differently in different locations)\r\n- Ecosystem Integration:\r\n - How to fit in well with the tools around you\r\n - Versioning \r\n - Publishing to PyPI\r\n - How and what to automate\r\n - How to do releases\r\n- Community Considerations:\r\n - Code review standards\r\n - Clear presentation of information\r\n - Understanding your user base and audience", "speakers": ["ZZQ9TE"], "track": 4870, "start": "2024-11-23T10:40:00+11:00", "end": "2024-11-23T11:10:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.796674+00:00", "state": null, "do_not_record": false}, {"code": "TWFSTJ", "id": 1069900, "title": "Serpents and Ducks: wrangling data with Python and DuckDB", "abstract": "Got a billion rows of data in a weird file format? Wishing you could wrangle a dataframe from a geospatial dataset? A bit lost interacting with a remote API? Let\u2019s wrangle some data with Python and DuckDB. \r\n\r\nDuckDB executes analytical SQL queries without the need for a server. DuckDB features a deep and deceptively simple integration with the Python ecosystem, allowing us to query, wrangle, and output data, alongside all your favourite Python tools.. Its powerful analytical features and rich integrations position DuckDB as an invaluable tool for anyone working with analytical data in Python, helping you solve complex problems with ease and elegance. \r\nIn this practical talk, we\u2019ll introduce DuckDB, a fast and versatile analytical database to keep in your data toolkit. We\u2019ll go through how to use the DuckDB Python client effectively, taking advantage of DuckDB\u2019s efficient data processing features, as well as its integrations with libraries like Pandas and Ibis.", "speakers": ["87LT9Q", "PAMFZZ"], "track": 4870, "start": "2024-11-23T11:20:00+11:00", "end": "2024-11-23T11:50:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.796760+00:00", "state": null, "do_not_record": false}, {"code": "Q78MDT", "id": 1069901, "title": "Embeddings: How Computers Learned to Read", "abstract": "As large language models take over the world, we\u2019re now working alongside machines that can read, write and converse \u2013 coding with CoPilot, chatting with ChatGPT and drawing with DALL-E. But how do machines, which fundamentally operate on binary code, achieve such remarkable feats? The answer lies in embeddings. Embeddings allow us to represent complex data - whether it's text, images, or even abstract concepts - as dense vectors of numbers. In this presentation, we'll demystify embeddings and give you a practical and intuitive understanding of how they work.", "speakers": ["7D78ZU"], "track": 4870, "start": "2024-11-23T11:20:00+11:00", "end": "2024-11-23T11:50:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796789+00:00", "state": null, "do_not_record": false}, {"code": "ZEKYUW", "id": 1069903, "title": "Performant Python", "abstract": "An introduction to writing performant Python code - the \"what, why, where, when and many how's\" of performance analysis, testing, tools and techniques.", "speakers": ["97JLNB"], "track": 4870, "start": "2024-11-23T12:00:00+11:00", "end": "2024-11-23T12:30:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.796846+00:00", "state": null, "do_not_record": false}, {"code": "LGDUVR", "id": 1069902, "title": "ML ain\u2019t your only hammer: adding mathematical optimisation to the data scientist\u2019s toolbox", "abstract": "The purpose of this presentation is to introduce the audience to the field of mathematical optimisation - what it is, how it differs from machine learning, and the types of problems it is best suited to solve.\r\n\r\nThe first section will provide this context and background - describing the anatomy of an optimisation problem, and what the model building process looks like. We will touch on the characteristics common to optimisation problems seen across multiple industries.\r\n\r\nWe will then build a simple optimisation model together, demonstrating how the model building process compares to the machine learning approach.\r\n\r\nFinally, we will end by exploring some of the most fascinating applications of mathematical optimisation in industry, focussing on the characteristics that the audience can map to challenges that are specific to their own industry.", "speakers": ["HQSSZQ"], "track": 4870, "start": "2024-11-23T12:00:00+11:00", "end": "2024-11-23T12:30:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.796817+00:00", "state": null, "do_not_record": false}, {"id": 1069904, "title": {"en": "Lunch"}, "start": "2024-11-23T01:30:00Z", "end": "2024-11-23T13:30:00+11:00", "room": 3412}, {"id": 1069906, "title": {"en": "Lunch"}, "start": "2024-11-23T01:30:00Z", "end": "2024-11-23T13:30:00+11:00", "room": 3410}, {"id": 1069905, "title": {"en": "Lunch"}, "start": "2024-11-23T01:30:00Z", "end": "2024-11-23T13:30:00+11:00", "room": 3411}, {"code": "CERBXC", "id": 1069907, "title": "from seeds import plants: using IoT to grow healthy herbs", "abstract": "With the current climate crisis and the rise of households growing their own fruits, vegetables and herbs, the efficient use of potable water is crucial now more than ever. However, the majority of plant watering systems are either manual or time based - that is, they water plants on a pre-defined schedule. This talk will describe a simple automated watering system programmed with micropython and various extensions to the core product to simplify existing features and add new capabilities using various internet of things devices and data analytics tools.", "speakers": ["DEZCB8"], "track": 4870, "start": "2024-11-23T13:30:00+11:00", "end": "2024-11-23T14:00:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.796979+00:00", "state": null, "do_not_record": false}, {"code": "HMWPGH", "id": 1069908, "title": "Introducing Potnia: A Python language library for the conversion of ancient texts to Unicode", "abstract": "The last five years have seen a significant increase in the application of machine learning to the study of ancient scripts. Applications are broad, and include recognition via Optical Character Recognition (OCR), textual restoration, palaeographic analysis, topic modelling, representation learning, decipherment and machine translation (Sommerschield 2023). A large number of ancient language corpora have been digitised in recent decades, supporting this research. However, while the necessary Unicode blocks for many of these ancient scripts are available, a number of these data sets are still presented as Romanised transliterations.\r\n\r\nIn response to this situation, we have created Potnia (https://pypi.org/project/potnia/), an open-source Python language library under the Apache 2.0 license, designed to convert such transliterated texts to Unicode. The session image accompanying this proposal provides an example of Potnia\u2019s conversion process, with a Romanised transliteration of a Linear B text as the input, and the Unicode representation of this same text as the output. This conversion is crucial for downstream machine learning tasks, as tokenisation in the original Unicode script allows for more accurate representation of linguistic structures and mitigates potential biases introduced by transliteration.\r\n\r\nPotnia's flexible architecture, built on Python's object-oriented principles, employs string manipulation techniques and regular expressions to handle various complexities inherent in ancient texts, such as uncertain readings, missing elements, and script-specific notations. At present, the library can be used for Linear B texts, with functionality for Linear A, Sumerian and Akkadian soon to follow.\r\n\r\nPotnia's design allows for easy addition of new scripts, each with its own set of rules for tokenisation, regularisation, and character mapping. This extensibility positions us well for future inclusion of additional scripts. To ensure reliability and facilitate open-source contributions, we've implemented a comprehensive test suite using pytest, with test cases defined in YAML files for easy expansion. This approach covers key functionalities across different scripts and simplifies the process of adding new test scenarios as the library grows.\r\n\r\nReferences\r\nSommerschield, T., Y. Assael, J. Pavlopoulos, V. Stefanak, A. Senior, C. Dyer, J. Bodel, J. Prag, I. Androutsopoulos, and N.D. Freitas. 2023. \u201cMachine Learning for Ancient Languages: A Survey.\u201d Computational Linguistics 49 (3): 1\u201345. doi:10.1162/coli_a_00481.", "speakers": ["ZUWBQU", "YJFZGW"], "track": 4870, "start": "2024-11-23T13:30:00+11:00", "end": "2024-11-23T14:00:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:43:33.467965+00:00", "state": null, "do_not_record": false}, {"code": "R9ZKZC", "id": 1069909, "title": "Let's make a working implementation of async functions in Python 2.1, also, why you might want to use a more recent version of Python", "abstract": "Often I hear people lamenting that Python has too many features and that older versions of Python were better for that exact reason.\r\n\r\nTo make those people happy, we're going to pick apart the features of Python that enable the `async`/`await` syntax, layer by layer, until we happen upon a working implementation of coroutines that will function in Python 2.1.\r\n\r\nSomewhere in this talk will be some useful discussions about why recent syntactic developments in Python are a good thing actually, but let's not lie, you're reading this abstract for the stunt content. You'll get what you came for.", "speakers": ["QWCHX7"], "track": 4870, "start": "2024-11-23T13:30:00+11:00", "end": "2024-11-23T14:00:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797069+00:00", "state": null, "do_not_record": false}, {"code": "HFXFLZ", "id": 1069912, "title": "MicroPython: The best bits!", "abstract": "MicroPython continues to grow in popularity. But _why_? What is it about this pint-sized version of Python that makes it so darn compelling? What are the best bits of MicroPython? \r\n\r\nJoin me in this talk for a whirlwind tour of some of the most exciting features of this modern embedded programming language.", "speakers": ["N9ZZWG"], "track": 4870, "start": "2024-11-23T14:10:00+11:00", "end": "2024-11-23T14:40:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.797189+00:00", "state": null, "do_not_record": false}, {"code": "CFS9GH", "id": 1069910, "title": "What Python Can Learn From Other Languages", "abstract": "Python is great! It's been a mainstay of web development and systems programming for decades and is on the cutting edge of many fields like scientific computing. But there is always more to improve, both in the language itself and how we use it. This talk will look at how ideas and features from other languages like Ruby, Go, and PHP could be used to improve Python!", "speakers": ["MY7QMZ"], "track": 4870, "start": "2024-11-23T14:10:00+11:00", "end": "2024-11-23T14:40:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797109+00:00", "state": null, "do_not_record": false}, {"code": "9KD9HJ", "id": 1069911, "title": "Cultural and Linguistic Influences on Translation: A Study of Novels", "abstract": "How do translations preserve the original meaning, style, and sentiment of texts across different languages and cultural contexts? This intriguing question drives our study as we delve into the complexities of translation.\r\n\r\nWe examine how sentiment analysis results differ for the same text in various languages, aiming to understand the role of language families in these variations. Using natural language processing techniques in Python, we analyse novels from diverse genres, time periods, and cultural backgrounds to uncover generalisable translation patterns.\r\n\r\nOur study seeks to answer whether translations of words, ideas, and societal contexts in novels are influenced by the cultural contexts into which they are translated. By highlighting the importance of accurate and culturally relevant translations, we emphasise how they play a crucial role in preserving cultural and societal knowledge, ensuring that the richness of the original text is maintained across languages.", "speakers": ["R3ENGB", "GNVTMG"], "track": 4870, "start": "2024-11-23T14:10:00+11:00", "end": "2024-11-23T14:40:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.797139+00:00", "state": null, "do_not_record": false}, {"code": "YNDDJR", "id": 1069913, "title": "Walking the Tree of Life \u2013 Adventures in Phylogenetics", "abstract": "\"What's the last common ancestor of a bear and a weasel?\"\r\n\"Which animals are more related to pigs than cows?\"\r\n\"Are birds reptiles?\"\r\n\"Am I a fish?\"\r\n\r\nWith a recent interest in phylogeny \u2013 the science of evolution, diversification, and speciation \u2013 these are the kinds of questions I've been asking myself. I wanted to find a tool that would let me examine the relationships between species and find the answers to these questions, but, as I looked around I couldn't find anything that did what I wanted. So I made it myself.\r\n\r\nCome with me as I share my journey that led me to talk to some of Australia's top scientists, give up on talking to other top scientists, and accidentally stumble my way into making an actual contribution to science. Learn why I made this tool, how I made this tool, what stage it's at, and where you can use it yourself. And maybe learn some things about life on Earth along the way.\r\n\r\nOh, and to answer the questions above: dog-bears, peccaries, yes, and yes!", "speakers": ["8UFZNX"], "track": 4870, "start": "2024-11-23T14:50:00+11:00", "end": "2024-11-23T15:20:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.797222+00:00", "state": null, "do_not_record": false}, {"code": "8UXYBS", "id": 1069915, "title": "Wait, is Wi-Fi just blinking lights?", "abstract": "Wi-Fi, the mysterious computer blabber. Have you ever wondered how are computers yapping away from under our noses? What secrets must they hold? In this talk we will cover the magic of Wi-Fi, how it works in detail and we will even get our own wireless communication system going using Python and micro-controllers.", "speakers": ["YCFJET"], "track": 4870, "start": "2024-11-23T14:50:00+11:00", "end": "2024-11-23T15:20:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.797278+00:00", "state": null, "do_not_record": false}, {"code": "GF3NJK", "id": 1069914, "title": "Failsafes and Safety Fails: How to crash a train and other lessons for software engineers", "abstract": "Software builders and operators have long looked to transport and aviation for lessons in engineering practices and safety. Today, we\u2019ll turn our attention to the railways as we take 20 years of hindsight to look at the \u2018Broady runaway\u2019 and what it can teach us. This talk will dive into the ATSB\u2019s subsequent safety investigation, recommendations and parallels in the software world, offering us critical lessons in complex system design and incident management.\r\n\r\nFor software engineers, 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.\r\n\r\nOur 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.", "speakers": ["PB9BKD"], "track": 4870, "start": "2024-11-23T14:50:00+11:00", "end": "2024-11-23T15:20:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797250+00:00", "state": null, "do_not_record": false}, {"id": 1069916, "title": {"en": "Afternoon break"}, "start": "2024-11-23T04:20:00Z", "end": "2024-11-23T15:50:00+11:00", "room": 3411}, {"id": 1069918, "title": {"en": "Afternoon break"}, "start": "2024-11-23T04:20:00Z", "end": "2024-11-23T15:50:00+11:00", "room": 3410}, {"id": 1069917, "title": {"en": "Afternoon break"}, "start": "2024-11-23T04:20:00Z", "end": "2024-11-23T15:50:00+11:00", "room": 3412}, {"id": 1069919, "title": {"en": "Lightning Talks (Saturday)"}, "start": "2024-11-23T04:50:00Z", "end": "2024-11-23T16:50:00+11:00", "room": 3410}, {"id": 1069920, "title": {"en": "Conference Opening (Sunday)"}, "start": "2024-11-23T22:00:00Z", "end": "2024-11-24T09:20:00+11:00", "room": 3410}, {"id": 1069921, "title": {"en": "Keynote - Revealed Soon!"}, "start": "2024-11-23T22:20:00Z", "end": "2024-11-24T10:05:00+11:00", "room": 3410}, {"id": 1069924, "title": {"en": "Morning break"}, "start": "2024-11-23T23:05:00Z", "end": "2024-11-24T10:35:00+11:00", "room": 3410}, {"id": 1069922, "title": {"en": "Morning break"}, "start": "2024-11-23T23:05:00Z", "end": "2024-11-24T10:35:00+11:00", "room": 3411}, {"id": 1069923, "title": {"en": "Morning break"}, "start": "2024-11-23T23:05:00Z", "end": "2024-11-24T10:35:00+11:00", "room": 3412}, {"code": "8HBU3Z", "id": 1069926, "title": "Using Multiple Databases in Django Applications", "abstract": "Over six years ago, three engineers from Sydney started working on an insurtech platform with global ambitions. They chose Django, even though two of them had no prior experience with the framework. Nevertheless, the project became a success, affirming that choosing Django was a great technical decision.\r\n\r\nThis is a real-life story about the challenges the team faced while scaling the project and changing the database architecture, all while maintaining uninterrupted services for millions of customers. We will cover some of the key technical decisions the team made, how Django supported us in migrating from a single database to a multi-database architecture, and examine the architectural benefits of using multiple databases in data-intensive applications.", "speakers": ["VQZYV9"], "track": 4870, "start": "2024-11-24T10:35:00+11:00", "end": "2024-11-24T11:05:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.797649+00:00", "state": null, "do_not_record": false}, {"code": "LYLY7H", "id": 1069927, "title": "Quantifying Nebraska", "abstract": "[In 2020, xkcd published _Dependency_](https://xkcd.com/2347/), which posited that \"all modern digital infrastructure\" is ultimately transitively dependent on \"a project some random person in Nebraska has been thanklessly maintaining since 2003\".\r\n\r\nHow can we find these projects and ensure that their maintainers get the thanks and \u2014 more importantly \u2014 the resources they need?", "speakers": ["8LCDDU"], "track": 4870, "start": "2024-11-24T10:35:00+11:00", "end": "2024-11-24T11:05:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797727+00:00", "state": null, "do_not_record": false}, {"code": "QTWAGZ", "id": 1069925, "title": "Better dataframes", "abstract": "Dataframes are an abstraction that proven extremely useful for data analysis in dynamic languages like S, R, Python, and Julia. The Pandas package has been dominant in Python for around 15 years but its design is now showing its age. There is now a vibrant and messy ecosystem of potential disruptors to the status quo for data analysis tasks in Python.\r\n\r\nThis talk will help you make sense of the mess. It will give you a comprehensive review of the strengths and weaknesses of the challengers, including Polars, Ibis, Vaex, Modin, Dask, and the PySpark Pandas API (formerly known as Koalas). It will also review efforts to unify the PyData landscape such as Apache Arrow, the dataframe interchange protocol, Narwhals, and the Ibis project from the original author of Pandas, Wes McKinney.", "speakers": ["3WXCVF"], "track": 4870, "start": "2024-11-24T10:35:00+11:00", "end": "2024-11-24T11:05:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.797621+00:00", "state": null, "do_not_record": false}, {"code": "P7UKEN", "id": 1069928, "title": "Dependency management: the cause of\u2014and solution to\u2014all supply chain problems", "abstract": "How many dependencies does your software project have? How much confidence do you have in them? We sometimes say in open source there is safety in \u2018eyes on the code\u2019, but with supply chain attacks on the rise, who is really watching?\r\n\r\nMost software is built with hundreds if not thousands of direct and transitive dependencies, and those dependencies change every day. Our analysis shows that up to 20% of PyPI packages change their dependency graphs multiple times per week. Ensuring that each one of these dependencies is trustworthy is a daunting task.\r\n\r\nIn this talk, we will share some stats and stories from building deps.dev. We will look at what it means for a project to be healthy, dig into the complexities of dependency resolution algorithms, and recommend tools that can make practical dependency management possible if not easy.", "speakers": ["X99XWA"], "track": 4870, "start": "2024-11-24T11:15:00+11:00", "end": "2024-11-24T11:45:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797757+00:00", "state": null, "do_not_record": false}, {"code": "9ZRRJY", "id": 1069930, "title": "How to confirm that the index you added actually improves query performance", "abstract": "Database indexes allow us to speed up queries by providing a method to quickly look up data. However, do we always check that they actually improve performance? In this talk, I explain how and why an automatically added database index did not get used by the queries we expected. Together we will go through SQL produced from Django ORM, index structures and generating database query plans to unravel what was actually going on behind the scenes in our queries.", "speakers": ["WRLNJE"], "track": 4870, "start": "2024-11-24T11:15:00+11:00", "end": "2024-11-24T11:45:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.797829+00:00", "state": null, "do_not_record": false}, {"code": "U3YKPB", "id": 1069929, "title": "Rethinking Data Catalogs: The Promise and Pitfalls", "abstract": "The promise of data catalogs, a single source of truth for your organisation's data, often clashes with the reality of under-utilised features, redundancy across various data catalog solutions across teams, adoption challenges and a lack of clear strategy.\r\n\r\n\r\nThis talk will pose some critical questions concerning current approaches of choosing and implementing data catalogs:\r\n\r\n\r\n- Do you actually need a Data catalog?\r\n- Are data catalogs becoming just glorified registries without much practical use?\r\n- Why do organisations find themselves juggling multiple catalogs?\r\n- Is there a synergy between System Catalog & Data Catalog?\r\n- How do you identify the right fit and what are the considerations?\r\n- How to measure success for a data catalog?\r\n\r\nWe'll dissect the reasons behind these challenges and share our experience of implementing data catalogs across different organisations.", "speakers": ["3DCSNN", "98HVRZ"], "track": 4870, "start": "2024-11-24T11:15:00+11:00", "end": "2024-11-24T11:45:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.797786+00:00", "state": null, "do_not_record": false}, {"code": "DQPW7L", "id": 1069932, "title": "Adding File System context to pathlib", "abstract": "Adding file system specific information (e.g. how to match case, whether to follow symlinks) to pathlib Path objects, instead of adding such arguments to methods taking Path objects.", "speakers": ["ZY7KJB"], "track": 4870, "start": "2024-11-24T11:55:00+11:00", "end": "2024-11-24T12:25:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.797887+00:00", "state": null, "do_not_record": false}, {"code": "LALLKX", "id": 1069933, "title": "The perfect setup? Not setup.py! Building packages the right way", "abstract": "Everyone loves package management! Python's packaging systems have continued to evolve over the years. Specifications such as environment markers, custom backends, and static build configurations have been introduced. Additionally new package managers like Poetry and Hatch have emerged.\r\n\r\nYet despite the updates, many projects are still living in the 2010s - using a setup.py file to specify the build configuration for their package. setup.py is notoriously difficult to learn and a common vector for launching attacks during install.\r\n\r\nThis talk will discuss why it's time to move away from using setup.py and how to do it.\r\n\r\nWe will see how setup.py is used and abused - from downloading huge datasets (*cough* AI *cough*), modifying the system, and most critically how malicious payloads can be included to execute when setup.py is evaluated. Arbitrary code in setup.py makes security analysis harder and creates more work for PyPI administrators.\r\n\r\nThe talk will detail the new (as of 7 years ago) methods of describing build configurations in pyproject.toml and setup.cfg, giving examples of how to use these methods. The examples will include how to achieve what once required dynamic code to include data like readme contents, version numbers and requirements. The limits of pyproject.toml and setup.cfg will also be covered.\r\n\r\nFinally, the talk will outline how moving away from setup.py improves the Python packaging universe, how it makes life easier for ensuring Python security, and what can be done to drive adoption of pyproject.toml.", "speakers": ["CGMRAQ"], "track": 4870, "start": "2024-11-24T11:55:00+11:00", "end": "2024-11-24T12:25:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.797915+00:00", "state": null, "do_not_record": false}, {"code": "UKJB7J", "id": 1069931, "title": "Follow the Postgres brick road: a journey of testing against a real database server", "abstract": "Tests are good. Code that uses a database is good. Testing code that uses a database is great\u2026 But it's not so easy to do well. Let's follow our journey through various pitfalls to make testing against a local PostgreSQL instance informative, reliable and fast, so that we have fewer horrible surprises once code gets to production.", "speakers": ["PGYLJB"], "track": 4870, "start": "2024-11-24T11:55:00+11:00", "end": "2024-11-24T12:25:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.797858+00:00", "state": null, "do_not_record": false}, {"id": 1069935, "title": {"en": "Lunch"}, "start": "2024-11-24T01:25:00Z", "end": "2024-11-24T13:30:00+11:00", "room": 3411}, {"id": 1069934, "title": {"en": "Lunch"}, "start": "2024-11-24T01:25:00Z", "end": "2024-11-24T13:30:00+11:00", "room": 3410}, {"id": 1069936, "title": {"en": "Lunch"}, "start": "2024-11-24T01:25:00Z", "end": "2024-11-24T13:30:00+11:00", "room": 3412}, {"code": "WYZEUQ", "id": 1069938, "title": "With Xonsh use Python as your shell: No more switching between shell and Python syntax!", "abstract": "Many of us employ shells (like Bash, Zsh or PowerShell) in the terminal to \u201cget admin things done\u201d on our computer. For the actual programming then we switch to Python to \u201cget real things done\u201d.\r\n\r\nBut what if you could use Python in your programs *and* in the terminal? Welcome to Xonsh, a shell and a Python REPL in one. This unique feature helps very much to get all things in the terminal done quicker, safer and to have more fun on the way!", "speakers": ["BHGMDT"], "track": 4870, "start": "2024-11-24T13:30:00+11:00", "end": "2024-11-24T14:00:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.798081+00:00", "state": null, "do_not_record": false}, {"code": "ZGCQSY", "id": 1069937, "title": "Setting Up Your Python Community for Success: Lessons from the Melbourne Python User Group", "abstract": "Discover best practices in managing a meetup which fosters a vibrant open-source ecosystem and maintains engaged membership and volunteers from experiences within the Melbourne Python User Group. Learn best practices for organizing successful meetups, hackathons, and collaborative projects that drive community engagement and innovation.", "speakers": ["XPM9RU"], "track": 4870, "start": "2024-11-24T13:30:00+11:00", "end": "2024-11-24T14:00:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.798052+00:00", "state": null, "do_not_record": false}, {"code": "C37SMX", "id": 1069939, "title": "Django, REST and OpenAPI - a gentle introduction", "abstract": "Django is an all-parts-included framework that is one of the most popular ways of building a website in Python. But for many websites that's not enough - we also need a REST-based API with an OpenAPI specification so that other programs can read and work with our data. This talk will cover the Python packages that can provide these facilities and how to integrate them into your existing website.", "speakers": ["RB3PZZ"], "track": 4870, "start": "2024-11-24T13:30:00+11:00", "end": "2024-11-24T14:00:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.798110+00:00", "state": null, "do_not_record": false}, {"code": "NFZKYP", "id": 1069941, "title": "Time and Time Again", "abstract": "Time is one of the few forces that remain outside of human control. Attempting to understand it is hard enough, but attempting to make computers understand it is a frequent and common source of errors, especially across different cultures and calendars.\r\n\r\nThis talk will explore a number of different ways of understanding and expressing the flow of time, as well as common and uncommon edge cases to account for when building software.", "speakers": ["P9CXX8"], "track": 4870, "start": "2024-11-24T14:10:00+11:00", "end": "2024-11-24T14:40:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.798166+00:00", "state": null, "do_not_record": false}, {"code": "MVAF7U", "id": 1069942, "title": "How we used Python to try and save lives", "abstract": "Google Crisis Response saved lives and tried to make the world better. And all of it was in Python.", "speakers": ["AK9RMY"], "track": 4870, "start": "2024-11-24T14:10:00+11:00", "end": "2024-11-24T14:40:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.798194+00:00", "state": null, "do_not_record": false}, {"code": "S7E8T7", "id": 1069940, "title": "Three Django Apps in a Trenchcoat: Writing an event management website with not a lot of time", "abstract": "Come and hear how I wrote 3 Django apps in a trenchcoat to run a ~300+ person scout camp, from making event registration a breeze, to conducting everyone's movements throughout the entire event.", "speakers": ["CYVHAC", "QD8GMS"], "track": 4870, "start": "2024-11-24T14:10:00+11:00", "end": "2024-11-24T14:40:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.798138+00:00", "state": null, "do_not_record": false}, {"code": "UKK9K9", "id": 1069943, "title": "Lowering the Gangplank: How Writing Songs Relates to Templating", "abstract": "Templating is awesome! It makes automation easier and takes away a lot of the tedious work required to maintain and build new things. Now, what if I told you that the way we utilise templates is somewhat similar to how songs are written? In this talk I will lower the proverbial gangplank from our templating ship as we cross over into the land of song writing and discover how these two concepts are linked.", "speakers": ["FTUWNC"], "track": 4870, "start": "2024-11-24T14:50:00+11:00", "end": "2024-11-24T15:20:00+11:00", "room": 3410, "duration": 30, "updated": "2024-09-03T10:14:51.798222+00:00", "state": null, "do_not_record": false}, {"code": "WCUHJ8", "id": 1069945, "title": "Turtles all the way down: Abstractions and when we should use them", "abstract": "Abstractions are one of the greatest tools in all of programming. But sometimes we reach for them too often. How do we know when we should use an abstraction, and when we should just use the ones that already exist.", "speakers": ["9JG7DV"], "track": 4870, "start": "2024-11-24T14:50:00+11:00", "end": "2024-11-24T15:20:00+11:00", "room": 3412, "duration": 30, "updated": "2024-09-03T10:14:51.798279+00:00", "state": null, "do_not_record": false}, {"code": "B8RJPR", "id": 1069944, "title": "Space Django: Migrating and Redesigning a Database while Hunting for Satellites.", "abstract": "Being a fast-paced startup and developing a completely new product in the Space Industry is very challenging, and moving fast wasn\u2019t just a requirement but essential. It's the kind of environment that is hard to think too much ahead, and for that reason, our database was created to address the problems we had at hand. \r\nAfter a while, new products and features were required, and our database couldn't handle all of them. That\u2019s when we decided to move our data to a newly designed database instance with proper relationships, able to handle more features, higher workloads and scalable. During the planning phase, several approaches were discussed, such as creating a script to copy the data and some off-the-shelf software that we thought could handle that for us. However, the complexity of implementing those approaches wasn\u2019t feasible with our deadlines for releasing the new product. So, we decided to copy the data using Django ORM (our product was already using Django), the idea was to avoid the complexity of creating complex SQL Queries to copy data to new tables while keeping the data consistency and integrity.\r\nIn this presentation, we aim to demonstrate how our database was limiting the company\u2019s scalability and how we fixed those problems by migrating to a new database schema whilst maintaining two database instances, one for internal operations and the other for customer-facing functions. Moreover, we show how we did that using object-oriented programming in combination with Django\u2019s ORM to migrate our database without the need to handle complex SQL commands to copy data, keep relationships, and create new ones.", "speakers": ["EJ9MHD"], "track": 4870, "start": "2024-11-24T14:50:00+11:00", "end": "2024-11-24T15:20:00+11:00", "room": 3411, "duration": 30, "updated": "2024-09-03T10:14:51.798250+00:00", "state": null, "do_not_record": false}, {"id": 1069948, "title": {"en": "Afternoon break"}, "start": "2024-11-24T04:20:00Z", "end": "2024-11-24T15:50:00+11:00", "room": 3412}, {"id": 1069946, "title": {"en": "Afternoon break"}, "start": "2024-11-24T04:20:00Z", "end": "2024-11-24T15:50:00+11:00", "room": 3410}, {"id": 1069947, "title": {"en": "Afternoon break"}, "start": "2024-11-24T04:20:00Z", "end": "2024-11-24T15:50:00+11:00", "room": 3411}, {"id": 1069949, "title": {"en": "Lightning Talks (Sunday)"}, "start": "2024-11-24T04:50:00Z", "end": "2024-11-24T16:50:00+11:00", "room": 3410}, {"id": 1069950, "title": {"en": "Closing Address (Sunday)"}, "start": "2024-11-24T05:50:00Z", "end": "2024-11-24T17:30:00+11:00", "room": 3410}], "version": "20240903.1", "timezone": "Australia/Melbourne", "event_start": "2024-11-22", "event_end": "2024-11-24", "tracks": [{"id": 4870, "name": {"en": "Main Conference"}, "description": {}, "color": "#FC0101"}, {"id": 4871, "name": {"en": "Education"}, "description": {}, "color": "#FFBF00"}, {"id": 4872, "name": {"en": "DevOops"}, "description": {}, "color": "#00BA1E"}, {"id": 4873, "name": {"en": "Scientific Python"}, "description": {}, "color": "#0078A4"}], "rooms": [{"id": 3410, "name": {"en": "Goldfields Theatre"}, "description": {}}, {"id": 3411, "name": {"en": "Eureka 2"}, "description": {}}, {"id": 3412, "name": {"en": "Eureka 3"}, "description": {}}], "speakers": [{"code": "GNVTMG", "name": "Eliz So", "avatar": ""}, {"code": "YJFZGW", "name": "Kabir Manandhar Shrestha", "avatar": ""}, {"code": "HVQBMZ", "name": "Pradeep Rajasekhar", "avatar": ""}, {"code": "N9ZZWG", "name": "Matt Trentini", "avatar": "https://pretalx.com/media/avatars/ea42d30f7cda55601ae9931f5579abe0_nQNiRQD.jpg"}, {"code": "9JGCPM", "name": "Andrew Williams", "avatar": "https://pretalx.com/media/avatars/JC_9591-head.png"}, {"code": "MY7QMZ", "name": "Noah Kantrowitz", "avatar": "https://pretalx.com/media/avatars/headshot_00YX2vK.jpg"}, {"code": "PFTMME", "name": "J. Rosenbaum", "avatar": "https://pretalx.com/media/avatars/headshot1_PdnFrwR.jpeg"}, {"code": "3DCSNN", "name": "Harmeet Sokhi", "avatar": "https://pretalx.com/media/avatars/1aa9a192090001f30be351ac4c8021f5_vMdEteR.jpg"}, {"code": "P9CXX8", "name": "Yaakov", "avatar": "https://pretalx.com/media/avatars/MicrosoftTeams-image-smaller_j754fqe.jpg"}, {"code": "97JLNB", "name": "Anna Tisch", "avatar": ""}, {"code": "7SWEAL", "name": "A.J. Fisher", "avatar": "https://pretalx.com/media/avatars/1712749524080_SatwVlO.jfif"}, {"code": "ATDLZU", "name": "David Andersson", "avatar": "https://pretalx.com/media/avatars/1615684432676_U5XDwSy.jpeg"}, {"code": "JJR3W8", "name": "Mel", "avatar": ""}, {"code": "RSUKRU", "name": "Sam Bishop", "avatar": "https://pretalx.com/media/avatars/avatar-sp1_PGtPyGB.jpg"}, {"code": "8UFZNX", "name": "Jack Reichelt", "avatar": "https://pretalx.com/media/avatars/profile-pic_qQ6v2SB.png"}, {"code": "8NFJSF", "name": "Juan Nunez-Iglesias", "avatar": "https://pretalx.com/media/avatars/425e61a8c6b77bd5d300cd1991ec3f15_n565tME.jpg"}, {"code": "XPM9RU", "name": "Renaldi Gondosubroto", "avatar": "https://pretalx.com/media/avatars/Renaldi_Headshot_2_2ykNW11.png"}, {"code": "HBDX9R", "name": "Andrew Lonsdale", "avatar": "https://pretalx.com/media/avatars/32eac8bd4629b636cb2f7eb1adfc1e30_XwrpOAA.jpg"}, {"code": "FTUWNC", "name": "Chelsea Finnie", "avatar": "https://pretalx.com/media/avatars/PenguSquare2_vrBAf4Y.png"}, {"code": "EJ9MHD", "name": "Artur Baruchi", "avatar": "https://pretalx.com/media/avatars/IMG_8138_rqZjrzD.png"}, {"code": "VXBVLZ", "name": "Stephen Tierney", "avatar": "https://pretalx.com/media/avatars/stierney_small_PfgTgMf.jpg"}, {"code": "8NDWMQ", "name": "Alison Wong", "avatar": "https://pretalx.com/media/avatars/AlisonWONGFinal_TtKrbTY.jpg"}, {"code": "9JG7DV", "name": "Mark Lakewood", "avatar": "https://pretalx.com/media/avatars/Profile_photo_kLZb4p5.jpg"}, {"code": "HQSSZQ", "name": "Dr Jack Simpson", "avatar": "https://pretalx.com/media/avatars/jack_KOm8jei_KQth295.jpg"}, {"code": "PB9BKD", "name": "Jack Skinner", "avatar": "https://pretalx.com/media/avatars/228a543862b1b9c1e7f3b812620b1471_D363AsG.jpg"}, {"code": "87LT9Q", "name": "Simon Aubury", "avatar": ""}, {"code": "LDFVBH", "name": "Russell Keith-Magee", "avatar": "https://pretalx.com/media/avatars/b91373320dbc3bc52fcd870d3b21748f_UHhnDR7.jpg"}, {"code": "VQZYV9", "name": "Artem Kolesnikov", "avatar": "https://pretalx.com/media/avatars/photo_IgPBVll.jpg"}, {"code": "WRLNJE", "name": "Suzannah Cooper", "avatar": ""}, {"code": "BHTKP3", "name": "Damien George", "avatar": "https://pretalx.com/media/avatars/DSC_9022-crop_95so5l7.JPG"}, {"code": "KCADCR", "name": "Tom Eastman", "avatar": "https://pretalx.com/media/avatars/52298146141_97cb5031f9_k_Kyf5T1H.jpg"}, {"code": "AHET73", "name": "Evan Kohilas", "avatar": "https://pretalx.com/media/avatars/ebd48c4b1d85878d6035ad6ac3631070_90Vo0dw.jpg"}, {"code": "7D78ZU", "name": "Liam Bluett", "avatar": ""}, {"code": "WREQBQ", "name": "Haggen So", "avatar": ""}, {"code": "ZZQ9TE", "name": "Tennessee Leeuwenburg", "avatar": "https://pretalx.com/media/avatars/Profile_Photo_Tennessee_Leeuwenburg_JwewX1k.jpg"}, {"code": "YCFJET", "name": "Felipe Tavares", "avatar": "https://pretalx.com/media/avatars/profile-pic11_NglMWbQ.png"}, {"code": "8LCDDU", "name": "Adam Harvey", "avatar": "https://pretalx.com/media/avatars/36d8c4d60eaed7139aa0ab88378590c0_QjHrX33.jpg"}, {"code": "CGMRAQ", "name": "Caleb Brown", "avatar": ""}, {"code": "QWCHX7", "name": "Christopher Neugebauer", "avatar": "https://pretalx.com/media/avatars/chrisjrn-unicorn_LLQw4TY.jpg"}, {"code": "9WJJPL", "name": "Stefanie Molin", "avatar": "https://pretalx.com/media/avatars/li_7EgJHSM.jpeg"}, {"code": "AK9RMY", "name": "Anthony Baxter", "avatar": ""}, {"code": "VJPZ7L", "name": "Sanjin", "avatar": ""}, {"code": "BNHHZ9", "name": "Pravin vaz", "avatar": ""}, {"code": "ZY7KJB", "name": "Clinton Roy", "avatar": "https://pretalx.com/media/avatars/0898bb664197d0f27e15f5677a183de7_Yod0P7l.jpg"}, {"code": "BHGMDT", "name": "Leo Broska", "avatar": "https://pretalx.com/media/avatars/1c8d1308bafaa6eb869321d5dca427cd_6ulmg7M.jpg"}, {"code": "PGYLJB", "name": "Huon Wilson", "avatar": "https://pretalx.com/media/avatars/profile.jpg_IRjIpGe.png"}, {"code": "JTPU7J", "name": "Edwina Mead", "avatar": "https://pretalx.com/media/avatars/Untitled_M6iVsMc.png"}, {"code": "MK9KK8", "name": "Carolyn Gekas", "avatar": ""}, {"code": "RB3PZZ", "name": "Paul Wayper", "avatar": "https://pretalx.com/media/avatars/c6d06e8c0df6789364ac68f7aeaed800_lQgt0db.jpg"}, {"code": "3WXCVF", "name": "Ed Schofield", "avatar": ""}, {"code": "Q7H3M8", "name": "Lizzie Silver", "avatar": "https://pretalx.com/media/avatars/Silver_Lizzie_4eAibq1.jpg"}, {"code": "MSEC3L", "name": "Emily Massahud", "avatar": "https://pretalx.com/media/avatars/emily_massahud_pLJtvvo.jpg"}, {"code": "X99XWA", "name": "Nicky Ringland", "avatar": "https://pretalx.com/media/avatars/cd3e4475f0521c4df69598eae54502ae_oLtz3hX.jpg"}, {"code": "JFJVXW", "name": "Luke Wiwatowski", "avatar": "https://pretalx.com/media/avatars/b76ad1749a253bb98395d9a566c99ad6_Y2eAHoO.jpg"}, {"code": "DEZCB8", "name": "Anthony I. Joseph", "avatar": "https://pretalx.com/media/avatars/Image_from_iOS_XuOClu6.jpg"}, {"code": "98HVRZ", "name": "Vishal Srivastava", "avatar": "https://pretalx.com/media/avatars/self_low_res_3_18IqiHv.jpg"}, {"code": "R3ENGB", "name": "Anneysha Sarkar", "avatar": ""}, {"code": "TQKR8P", "name": "Renee Noble", "avatar": "https://pretalx.com/media/avatars/renee_pycon_tpf6eur.jpeg"}, {"code": "S7AU83", "name": "Draga Doncila Pop", "avatar": ""}, {"code": "CYVHAC", "name": "Matt Cengia", "avatar": "https://pretalx.com/media/avatars/signal-2022-07-03-19-36-05-9942_BaFQYmw_AS6w9Tc.jpg"}, {"code": "NTEJEK", "name": "Ash Bek", "avatar": "https://pretalx.com/media/avatars/2589332414bf1618600e2bcafa1307f3f50ecfdc_YbHvJd4.webp"}, {"code": "ZUWBQU", "name": "Emily Tour", "avatar": "https://pretalx.com/media/avatars/Knossos_Site_2_WM4L6aW.jpg"}, {"code": "QD8GMS", "name": "Luke Byrnes", "avatar": "https://pretalx.com/media/avatars/5e753a48150c4b90dd6addba390e5029_A1kEdh3.jpg"}, {"code": "PAMFZZ", "name": "Ned Letcher", "avatar": "https://pretalx.com/media/avatars/ned_profile_pic_sxnDbKl.jpg"}]} +{ + "talks": [ + { + "code": "ACKK3A", + "id": 1069859, + "title": "Causal Discovery in Python", + "abstract": "A review and comparison of software available for causal discovery in Python. Causal discovery means learning \"what causes what\" from your data. The input is a tabular dataset; the output is a causal graphical model (or a set of potential models) over your features. If feature A affects feature B, there should be an arrow A-->B in the causal graphical model. Causal discovery is useful for hypothesis generation, experiment selection, and for testing our assumptions around causation.\r\n\r\nI'll give a brief intro to causal discovery, then review the following packages: py-tetrad, causal-learn, tigramite, causalnex, and cdt (causal discovery toolbox). The packages have some overlap but different emphases: each one implements at least one algorithm not covered by the other packages, making them useful in different situations. If time permits I'll finish with a quick demo, showing each package learning a model from the same dataset.", + "speakers": ["Q7H3M8"], + "track": 4873, + "start": "2024-11-22T09:20:00+11:00", + "end": "2024-11-22T09:50:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.795363+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069857, + "title": { "en": "[placeholder] Education Track Keynote" }, + "start": "2024-11-21T22:20:00Z", + "end": "2024-11-22T09:50:00+11:00", + "room": 3412 + }, + { + "code": "ZCKWM3", + "id": 1069858, + "title": "Why UUIDs are Secretly Incredibly Fascinating", + "abstract": "What even is '06462f89-b4ef-7f7d-8000-edda1bba5155' and why should you actually care?\r\n\r\n(you should, but \"why\"?)", + "speakers": ["KCADCR"], + "track": 4872, + "start": "2024-11-22T09:20:00+11:00", + "end": "2024-11-22T09:50:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.795324+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "79HGSW", + "id": 1069861, + "title": "A Lazy Person's Guide to Building REST Clients or: How I Learned to Stop Worrying and Love Dunder Overrides", + "abstract": "Sick of writing lots of dedicated methods to perform the same tasks? Want to write less code? This talk may be for you! \r\n\r\nREST API's are ubiquitious, and a very useful way to send and recieve data from various services. However, building them can often feel repetitive and boring. So, because I was lazy, and sick of doing it I decided to override specific dunder methods to write less boiler plate code, and keep myself interested.\r\n\r\nWas it easier? Probably not. Did it require less work than a normal implementation? Also probably not. Did it make my code more readable and portable? Definitely not. But it was fun, and I learnt how overriding Python's magic methods - often called dunders - could be useful. Let me share the lessons I learnt with you and inspire your own ideas.", + "speakers": ["NTEJEK"], + "track": 4872, + "start": "2024-11-22T10:00:00+11:00", + "end": "2024-11-22T10:30:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.795425+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "3GPQDE", + "id": 1069860, + "title": "Teaching Digital Technologies in Australian schools with Python and the Kookaberry", + "abstract": "There are around 6,200 primary schools around Australia, and the curriculum has a requirement to teach Digital Technologies, which includes a coding portion. There are many challenges here, not least which is enabling the approximately 150,000 primary school teachers with the skills and resources to teach programming to young students. The AustSTEM foundation was set up to assist in this area, and developed a MicroPython based learning platform, which consists of a pocket-sized computing device that integrates with a web-based coding and teaching environment. The teaching material has many hands-on activities, with connections to nature and science. In this talk we will discuss this teaching platform, how it can help students transition from block-based programming to textual coding, and show some of the successes we have had so far in Australian classrooms.", + "speakers": ["BHTKP3"], + "track": 4871, + "start": "2024-11-22T10:00:00+11:00", + "end": "2024-11-22T10:30:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.795394+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "WB8HTT", + "id": 1069862, + "title": "Verifying and evaluating scientific results with the open source package \"scores\"", + "abstract": "Verifying, evaluating or interpreting complex data requires specialist tools and methods. Many data scientists, programmers and scientists will be familiar with some evaluation metrics such as accuracy, mean squared error or true positive rate. There are many situations where these scores are insufficient for assessing correctness, accuracy or suitability of a model or prediction. The challenge of verifying models and predictions affects most fields of science, engineering, and many machine learning applications.\r\n\r\nThis talk will introduce \"scores\", an open source Python package for verifying and evaluating labelled, n-dimensional (multidimensional) data at any scale. \"scores\" includes over 50 metrics, statistical techniques and data processing tools. The software repository can be found at https://github.com/nci/scores and the documentation can be found at https://scores.readthedocs.io/ .\r\n\r\nThis talk is suitable for beginner, intermediate and expert audiences. Developers and data scientists who are familiar mainly with tabular data, such as supported by the pandas library, may be interested in the additional functionality offered by \"scores\" (and the xarray library it utilises). For those learning about more advanced methods, every metric and statistical test has a companion Jupyter Notebook tutorial. For expert users already familiar with these ideas, you may be interested in some of the novel scoring methods not commonly found in other packages. \r\n\r\nCome to this talk to hear about:\r\n - The difference between tabular data, n-dimensional data, and labelled n-dimensional data\r\n - Examples of using a common metric from \"scores\" on labelled, n-dimensional data\r\n - Examples of using \"scores\" for interrogating data in multiple dimensions\r\n - Examples of where basic methods overlook important considerations\r\n - Examples of using some of the more complex metrics in \"scores\"", + "speakers": ["ZZQ9TE"], + "track": 4873, + "start": "2024-11-22T10:00:00+11:00", + "end": "2024-11-22T10:30:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.795456+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069865, + "title": { "en": "Morning break" }, + "start": "2024-11-21T23:30:00Z", + "end": "2024-11-22T11:00:00+11:00", + "room": 3412 + }, + { + "id": 1069863, + "title": { "en": "Morning break" }, + "start": "2024-11-21T23:30:00Z", + "end": "2024-11-22T11:00:00+11:00", + "room": 3411 + }, + { + "id": 1069864, + "title": { "en": "Morning break" }, + "start": "2024-11-21T23:30:00Z", + "end": "2024-11-22T11:00:00+11:00", + "room": 3410 + }, + { + "code": "NLZQAA", + "id": 1069866, + "title": "Django on AWS for chump change", + "abstract": "Some cheap and definitely not employer approved ways to run Django on AWS infrastructure on a budget", + "speakers": ["JFJVXW"], + "track": 4872, + "start": "2024-11-22T11:00:00+11:00", + "end": "2024-11-22T11:30:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.795651+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "YYN7YH", + "id": 1069867, + "title": "How Smart is AI? \u2013 Real projects to build real understanding", + "abstract": "Chat GPT is all the rage in schools, and everyone is talking about AI, but how do we give students a real understanding of AI\u2019s capabilities and limitations? In this talk I\u2019ll demo how you can get students coding their own projects that explore (free) GPT technologies, integrating their own data sources, and contemplating when AI is the right solution.", + "speakers": ["TQKR8P"], + "track": 4871, + "start": "2024-11-22T11:00:00+11:00", + "end": "2024-11-22T11:30:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.795684+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "MQQJYE", + "id": 1069868, + "title": "Commissioning tools at the Australian Synchrotron, or, how to get a bazillion dollars worth of toys to play nicely together", + "abstract": "Discover the innovative work happening at the Australian Synchrotron, where high-energy X-rays support research across Australia and neighbouring countries. The scientific computing team uses Python to connect to hardware, orchestrate experiments, and process data.\r\n\r\nWe'll focus on a Python Dash interface developed to commission new positioners and detectors. This interface automatically generates Gaussian statistics. It includes pages for both one positioner and one detector (1D) or two positioners and one detector (2D), and allows users to click on a 2D Gaussian to take horizontal and vertical slices.\r\n\r\nAdditionally, we will discuss best programming practices, such as implementing unit tests, maintaining DRY principles, and using linting tools to improve code quality. Good programming practices work beautifully in a scientific environment. Join us to learn how these techniques can enhance your work with Python.", + "speakers": ["JJR3W8"], + "track": 4873, + "start": "2024-11-22T11:00:00+11:00", + "end": "2024-11-22T11:30:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.795715+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "DQGVLY", + "id": 1069870, + "title": "Simplifying Python Web App Operations: Automating K8s Ops with Open Source", + "abstract": "After creating a great web app using Python such as with flask, the next hurdle to production is how to make it available to users and operate it. And not just your app, but also ingress, the database, observability and the list goes on. We will go through your options for simplifying the operations of your web app using open source tooling. This will include using k8s directly, helm charts, IaaC using pulumi and new tooling developed by Canonical using juju. By the end of the talk you will have seen the benefits and drawbacks of each which will help you make an informed decision on which tool best suits your needs!", + "speakers": ["ATDLZU"], + "track": 4872, + "start": "2024-11-22T11:40:00+11:00", + "end": "2024-11-22T12:10:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.795775+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "9MLDVZ", + "id": 1069871, + "title": "Astronomy with Python, for non-astronomers", + "abstract": "Astronomers have been dealing with digital data since the 1980s and online databases \r\nsince the early 90's, and now, almost all research astronomers use Python to access and \r\nprocess that data. Most astronomical database are open to the public, and most research\r\nsoftware tools are either open source, or freely available. I'll give an intro, aimed at \r\nnon-astronomers, to some Python packages (astropy, skyfield) and online research tools.\r\n\r\nThis talk will give an overview on what tools and databases are available and how to access \r\nthem. Maybe you're writing a game, and you want the 3D locations and properties of the \r\nnearest 10,000 stars (or extrasolar planets, or galaxies). Maybe you're building a Solar\r\npanel that tracks the Sun, or a camera mount that tracks the International Space\r\nStation. Maybe you're trying to model shadow lengths and directions in satellite images. Or\r\nmaybe you just want to play around with real telescope images that haven't had a PR \r\ndepartment make them 'prettier'...", + "speakers": ["9JGCPM"], + "track": 4873, + "start": "2024-11-22T11:40:00+11:00", + "end": "2024-11-22T12:10:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.795804+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "XHTJ3S", + "id": 1069869, + "title": "Transitioning from VB to Python \u2013 Mapping a 6 month journey", + "abstract": "In the past decade, this school has consistently exceeded VCE expectations in Software Development, largely due to well-developed resources, consistency in use of programming language (Visual Basic) and progression of skills through year 7 to year 12. However, a gap analysis in the teaching methodology has highlighted conceptual computational thinking and problem-solving skills as a key gap in the current offering. This was attributed to the curriculum's skills-based focus and the Covid-era teaching practice of flipped learning via video tutorials. \r\n\r\nThis has presented an opportunity to overhaul the teaching methodology to focus on equipping students with the skills to apply their learning in different contexts. Some key aspects of this transformation include a more live coding technique and transitioning to Python as the preferred programming language, due to its versatility and future prospects for students. \r\n\r\nWe present this roadmap which leads to a complete overhaul of our teaching programmes from year 7 to year 12, scaffolding Python across Applied Computing, STEM projects, Robotics and Game development over the next 6 months.", + "speakers": ["BNHHZ9", "MK9KK8"], + "track": 4871, + "start": "2024-11-22T11:40:00+11:00", + "end": "2024-11-22T12:10:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.795745+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "WLCHUM", + "id": 1069873, + "title": "Enhancing Programming Ability with Playful Learning and Karel", + "abstract": "Beginner programmers often struggle to understand and trace program execution, which is worsened by underdeveloped debugging and testing skills. Beginners may also lack confidence or are easily demotivated, which can hinder learning. To assist students in developing these skills and build confidence we created a set of playful programming challenges and competition using Karel the Robot. The Karel system provides a 2D \u201cgrid world\u201d where the Karel character can move and interact with its environment. The 2D world is visualised for students so that they can immediately see how their program changes the environment step by step as well as the final program state. This is in contrast to traditional languages where learners must develop and maintain a mental model of the program state. This talk will cover our approach, preliminary results and feedback from students showing an increase in confidence and interest in programming. We will also share how this approach can be applied to other learning contexts.", + "speakers": ["VXBVLZ", "8NDWMQ"], + "track": 4871, + "start": "2024-11-22T12:20:00+11:00", + "end": "2024-11-22T12:50:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.795861+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "JV9WT7", + "id": 1069872, + "title": "Explore, annotate, and analyse multidimensional image data with napari", + "abstract": "napari is an n-dimensional image viewer for Python. If you\u2019ve ever tried `plt.imshow(arr)` and made Matplotlib unhappy because `arr` has more than two dimensions, then napari might be for you! napari will gladly display higher-dimensional arrays by providing sliders to explore additional dimensions. But napari can also: overlay derived data, such as points, segmentations, polygons, surfaces, and more; and annotate and edit these data, using standard data structures like NumPy or Zarr arrays, allowing you to seamlessly weave exploration, computation, and annotation in image analysis.", + "speakers": ["8NFJSF", "S7AU83"], + "track": 4873, + "start": "2024-11-22T12:20:00+11:00", + "end": "2024-11-22T12:50:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.795832+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "M3KJ3V", + "id": 1069874, + "title": "Notes on Over-Engineering: A Project Post-Mortem", + "abstract": "Join me for a retrospective on a reusable Django app for providing shared database multi-tenancy, complete with automatic tenant-specific queryset filtering, automatic tenant selection middleware, REST framework support, and comprehensive test coverage. This app, despite its sophistication, was never used in production. Let's explore why it was ultimately deemed over-engineered and unnecessary, and what lessons we can learn from this experience.", + "speakers": ["RSUKRU"], + "track": 4872, + "start": "2024-11-22T12:20:00+11:00", + "end": "2024-11-22T12:50:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.795891+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069877, + "title": { "en": "Lunch" }, + "start": "2024-11-22T01:50:00Z", + "end": "2024-11-22T13:50:00+11:00", + "room": 3411 + }, + { + "id": 1069876, + "title": { "en": "Lunch" }, + "start": "2024-11-22T01:50:00Z", + "end": "2024-11-22T13:50:00+11:00", + "room": 3410 + }, + { + "id": 1069875, + "title": { "en": "Lunch" }, + "start": "2024-11-22T01:50:00Z", + "end": "2024-11-22T13:50:00+11:00", + "room": 3412 + }, + { + "code": "NUUJAN", + "id": 1069880, + "title": "Who tests the testers? Making and testing pipelines", + "abstract": "You likely have a good pipeline that either runs tests, lints, or deployments for your project.\r\n\r\nBut when it comes to changing that pipeline, how sure are you that it works before taking those changes live?", + "speakers": ["AHET73"], + "track": 4872, + "start": "2024-11-22T13:50:00+11:00", + "end": "2024-11-22T14:20:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.796117+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "7DJWKZ", + "id": 1069878, + "title": "From Keyword Chaos to Clarity: Conquering a Complex Systematic Review with Python", + "abstract": "How can you find relevant needles in a haystack of 25,000 academic abstracts when keyword searching is useless? I explore how I used Python to automate my way out of systematic review hell.", + "speakers": ["JTPU7J"], + "track": 4873, + "start": "2024-11-22T13:50:00+11:00", + "end": "2024-11-22T14:20:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796056+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "Z3KYJZ", + "id": 1069879, + "title": "Build Your Own IoT! Fun With Python and Raspberry Pi.", + "abstract": "This talk will discuss building a basic streaming data pipeline for IoT applications using Python and Raspberry Pi. Attendees will have the opportunity to learn about Raspberry Pi, Apache Kafka + Kafka Connect, and solar power generation.", + "speakers": ["7SWEAL"], + "track": 4871, + "start": "2024-11-22T13:50:00+11:00", + "end": "2024-11-22T14:20:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.796087+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "KFVD3Z", + "id": 1069881, + "title": "As a Teacher. I have no Time to learn Programming - Streamline Assignment Marking with Python", + "abstract": "Teaching is a demanding job that takes away the initiative to learn or improve in programming skills. I therefore decided to streamline some of my assignment marking using Python. The time I spent in developing the Python scripts could then be offset by the efficiency and accuracy I gained from the automation. \r\n\r\nIn this presentation, I will demonstrate how to populate student details into their individual Excel mark sheets, check marking mistakes, automate mark adjustment and collect data from individual mark sheets. \r\n\r\nWhile the above automation can be achieved using standard tools offered by Microsoft by putting the programming logic into Excel formulae or Visual Basic for Application, I will argue using Python to separate the logic from data is a better approach in terms of programming practice and Cybersecurity.", + "speakers": ["WREQBQ"], + "track": 4871, + "start": "2024-11-22T14:30:00+11:00", + "end": "2024-11-22T15:00:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.796146+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "XHM7N7", + "id": 1069883, + "title": "Coding Competition Software VS Murphy's Law", + "abstract": "Imagine agreeing to develop a full stack web app to host a coding competition for thousands of students. Then standing at a podium in front of a large crowd as your app crashes and you discover that you might be in too deep.\r\n\r\nThat was my first year of a four year journey of learning to program \"properly\" and build something robust and useful. The full story includes more spectacular fails, hacking and an eventually an app students loved using to program algorithms that do battle in contests based on game theory. The app is built on React / FastAPI and SQLmodel ORM", + "speakers": ["VJPZ7L"], + "track": 4872, + "start": "2024-11-22T14:30:00+11:00", + "end": "2024-11-22T15:00:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.796204+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "3JHULA", + "id": 1069882, + "title": "Data Morph: A Cautionary Tale of Summary Statistics", + "abstract": "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.\r\n\r\nTo 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.", + "speakers": ["9WJJPL"], + "track": 4873, + "start": "2024-11-22T14:30:00+11:00", + "end": "2024-11-22T15:00:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796175+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069884, + "title": { "en": "Afternoon break" }, + "start": "2024-11-22T04:00:00Z", + "end": "2024-11-22T15:30:00+11:00", + "room": 3410 + }, + { + "id": 1069886, + "title": { "en": "Afternoon break" }, + "start": "2024-11-22T04:00:00Z", + "end": "2024-11-22T15:30:00+11:00", + "room": 3412 + }, + { + "id": 1069885, + "title": { "en": "Afternoon break" }, + "start": "2024-11-22T04:00:00Z", + "end": "2024-11-22T15:30:00+11:00", + "room": 3411 + }, + { + "code": "XUNCWK", + "id": 1069888, + "title": "Leveraging the Rich Spatiotemporal Features of live cell imaging with Machine Learning and AI", + "abstract": "Live cell imaging is a microscopy technique, where scientists can observe dynamics of living cells across time. One such method, known as lattice lightsheet microscopy captures these processes at high spatiotemporal detail. However, current analyses methods do not always capture the complexities of these feature rich datasets. \r\nIn this talk, I will use an example of programmed cell death, where cells are exposed to different drugs. Using python packages, such as scikit-image and tsfresh, I will demonstrate how we extract morphological and spatiotemporal features of cells. We use these features to train a supervised machine learning (ML) model to predict which drug treatment the cells were exposed to. \r\nFurthermore, using explainable AI with Shapley values, we identify key feature combinations that distinguish the cellular response to each drug. This approach enables data-driven hypothesis generation, allowing us to infer underlying phenotypes and correlate them to the biological processes.", + "speakers": ["HVQBMZ"], + "track": 4873, + "start": "2024-11-22T15:30:00+11:00", + "end": "2024-11-22T16:00:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796377+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069887, + "title": { "en": "Student Showcase" }, + "start": "2024-11-22T04:30:00Z", + "end": "2024-11-22T17:20:00+11:00", + "room": 3412 + }, + { + "code": "CQDJ9K", + "id": 1069889, + "title": "From minutes to seconds: Capillary auto-alignment with python and opencv", + "abstract": "Samples used for diffraction experiments at the Australian Synchrotron, a research facility in Melbourne, are typically presented as finely ground powders confined inside very thin (1mm or less) glass capillaries. These samples are irradiated with X-rays in order to uncover their atomic crystal structures. Amongst our research areas, we study applications in mining, solar cells, perovskites, hydrogen storage, and geology, where understanding material properties at the atomic level can lead to advancements such as enhancing mineral extraction processes, improving solar cell efficiency, developing better hydrogen storage solutions, and analysing the composition of meteorites.\r\n\r\nTo ensure good data quality, the capillary needs to rotate precisely around its centre of rotation in front of the X-ray beam. Alignment of the centre of rotation is usually a manual operation that relies on the human eye and expertise to discern that the capillary is straight and stationary while it rotates around its axis; this process can be lengthy, error-prone, and difficult to achieve, especially for non-experts.\r\n\r\nIn this talk, I will demonstrate how we have united Python, OpenCV, and motion control systems to automate the capillary alignment procedure at the Australian Synchrotron, reducing the time to align a sample from several minutes to just 10 seconds.", + "speakers": ["MSEC3L"], + "track": 4873, + "start": "2024-11-22T16:10:00+11:00", + "end": "2024-11-22T16:40:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796406+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "A78TC9", + "id": 1069890, + "title": "Avocado, Cheese, Grape, Tomato or: How I Used Python to Stop Worrying and Love Emoji in Bioinformatics", + "abstract": "Bioinformatics is the science of understanding and analysing biological information, such as the genetic information contained in DNA. It combines the disciplines of biology, computer science, and mathematics. If this seems daunting, don\u2019t panic, because this talk will focus on two open-source Python packages I have developed, FASTQE and Biomojify, that make common bioinformatics file formats intuitive and accessible\u2026. by using emoji.\r\n\r\nFASTQE simplifies DNA sequencing data analysis by taking numerical quality scores for the data, and summarising them using emoji to quickly convey the good, the bad, and the ugly of sequence data quality. Whether for training, outreach, or debugging, this tool can easily turn unremarkable data quality analysis into an appealing visualisation.\r\n\r\nBiomojify takes the concept further by converting plain text data to use emoji. In DNA, for example, the conventional format represents individual A, C, G, and T nucleotides as plain text. Biomojify substitutes them with emojis such as avocado, cheese, grape, and tomato. It supports various bioinformatics file formats and supports user defined emoji mapping. It can be used to teach the underlying biological concepts behind bioinformatics data, by simplifying specialised data structures for a general audience. \r\n\r\nScience communication is hard. These tools transform complex bioinformatics data into engaging, emoji-based visualisations, making bioinformatics concepts more accessible and adding an element of fun to scientific education and communication.", + "speakers": ["HBDX9R"], + "track": 4873, + "start": "2024-11-22T16:50:00+11:00", + "end": "2024-11-22T17:20:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796435+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069891, + "title": { "en": "First Timers Session" }, + "start": "2024-11-22T21:25:00Z", + "end": "2024-11-23T08:45:00+11:00", + "room": 3410 + }, + { + "id": 1069892, + "title": { "en": "Conference Opening (Saturday)" }, + "start": "2024-11-22T22:00:00Z", + "end": "2024-11-23T09:25:00+11:00", + "room": 3410 + }, + { + "id": 1069893, + "title": { "en": "Keynote - Revealed Soon! " }, + "start": "2024-11-22T22:25:00Z", + "end": "2024-11-23T10:10:00+11:00", + "room": 3410 + }, + { + "id": 1069894, + "title": { "en": "Morning break" }, + "start": "2024-11-22T23:10:00Z", + "end": "2024-11-23T10:40:00+11:00", + "room": 3410 + }, + { + "id": 1069896, + "title": { "en": "Morning break" }, + "start": "2024-11-22T23:10:00Z", + "end": "2024-11-23T10:40:00+11:00", + "room": 3411 + }, + { + "id": 1069895, + "title": { "en": "Morning break" }, + "start": "2024-11-22T23:10:00Z", + "end": "2024-11-23T10:40:00+11:00", + "room": 3412 + }, + { + "code": "MBZSKZ", + "id": 1069899, + "title": "Where am I? What am I doing? Mobile App development in Python", + "abstract": "A modern mobile phone isn't just a powerful CPU and display. It's a collection of incredibly sophisticated portable sensors: multiple cameras, a high resolution GPS, accelerometers and more. In this talk, you'll learn how to build and run an app on your phone that can access these sensors, using nothing but Python.", + "speakers": ["LDFVBH"], + "track": 4870, + "start": "2024-11-23T10:40:00+11:00", + "end": "2024-11-23T11:10:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.796732+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "JD8WMZ", + "id": 1069898, + "title": "AI perceptions of gender", + "abstract": "Why does AI perceive gender? Is this something that can be fixed? Should it be fixed? Explore the results of my research encompassing art, AI and gender theory to find out the why and how of gender perception.", + "speakers": ["PFTMME"], + "track": 4870, + "start": "2024-11-23T10:40:00+11:00", + "end": "2024-11-23T11:10:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796703+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "MW7E7N", + "id": 1069897, + "title": "Making an open source package - lessons learned", + "abstract": "Making an open source package is pretty hard in 2024. Expectations are high, and there\u2019s a lot to take into account. I recently developed an open source package. This talk covers what worked, what didn\u2019t work, what I would do again and what I would do differently.\r\n\r\nI developed an open source package called \u201cscores\u201d ( https://github.com/nci/scores , https://scores.readthedocs.io/ ). This is not a presentation about what \u201cscores\u201d does, but instead covers the lessons I learned. Despite being an experienced software developer and having used lots of open source software, there was still a lot to learn (and a lot to figure out) about open source package maintenance.\r\n\r\nEvery package is different, but this is what I did and these are the lessons I learned. \r\n\r\n- Technical Matters:\r\n - How to lay things out on disk\r\n - Configuration files\r\n - Automated testing\r\n - Type hinting\r\n - Linting and other static analysis tools\r\n - Code layout and design\r\n- Documentation:\r\n - What documentation to produce\r\n - Picking and using a tech stack\r\n - Rendering (documentation often renders differently in different locations)\r\n- Ecosystem Integration:\r\n - How to fit in well with the tools around you\r\n - Versioning \r\n - Publishing to PyPI\r\n - How and what to automate\r\n - How to do releases\r\n- Community Considerations:\r\n - Code review standards\r\n - Clear presentation of information\r\n - Understanding your user base and audience", + "speakers": ["ZZQ9TE"], + "track": 4870, + "start": "2024-11-23T10:40:00+11:00", + "end": "2024-11-23T11:10:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.796674+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "TWFSTJ", + "id": 1069900, + "title": "Serpents and Ducks: wrangling data with Python and DuckDB", + "abstract": "Got a billion rows of data in a weird file format? Wishing you could wrangle a dataframe from a geospatial dataset? A bit lost interacting with a remote API? Let\u2019s wrangle some data with Python and DuckDB. \r\n\r\nDuckDB executes analytical SQL queries without the need for a server. DuckDB features a deep and deceptively simple integration with the Python ecosystem, allowing us to query, wrangle, and output data, alongside all your favourite Python tools.. Its powerful analytical features and rich integrations position DuckDB as an invaluable tool for anyone working with analytical data in Python, helping you solve complex problems with ease and elegance. \r\nIn this practical talk, we\u2019ll introduce DuckDB, a fast and versatile analytical database to keep in your data toolkit. We\u2019ll go through how to use the DuckDB Python client effectively, taking advantage of DuckDB\u2019s efficient data processing features, as well as its integrations with libraries like Pandas and Ibis.", + "speakers": ["87LT9Q", "PAMFZZ"], + "track": 4870, + "start": "2024-11-23T11:20:00+11:00", + "end": "2024-11-23T11:50:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.796760+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "Q78MDT", + "id": 1069901, + "title": "Embeddings: How Computers Learned to Read", + "abstract": "As large language models take over the world, we\u2019re now working alongside machines that can read, write and converse \u2013 coding with CoPilot, chatting with ChatGPT and drawing with DALL-E. But how do machines, which fundamentally operate on binary code, achieve such remarkable feats? The answer lies in embeddings. Embeddings allow us to represent complex data - whether it's text, images, or even abstract concepts - as dense vectors of numbers. In this presentation, we'll demystify embeddings and give you a practical and intuitive understanding of how they work.", + "speakers": ["7D78ZU"], + "track": 4870, + "start": "2024-11-23T11:20:00+11:00", + "end": "2024-11-23T11:50:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796789+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "ZEKYUW", + "id": 1069903, + "title": "Performant Python", + "abstract": "An introduction to writing performant Python code - the \"what, why, where, when and many how's\" of performance analysis, testing, tools and techniques.", + "speakers": ["97JLNB"], + "track": 4870, + "start": "2024-11-23T12:00:00+11:00", + "end": "2024-11-23T12:30:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.796846+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "LGDUVR", + "id": 1069902, + "title": "ML ain\u2019t your only hammer: adding mathematical optimisation to the data scientist\u2019s toolbox", + "abstract": "The purpose of this presentation is to introduce the audience to the field of mathematical optimisation - what it is, how it differs from machine learning, and the types of problems it is best suited to solve.\r\n\r\nThe first section will provide this context and background - describing the anatomy of an optimisation problem, and what the model building process looks like. We will touch on the characteristics common to optimisation problems seen across multiple industries.\r\n\r\nWe will then build a simple optimisation model together, demonstrating how the model building process compares to the machine learning approach.\r\n\r\nFinally, we will end by exploring some of the most fascinating applications of mathematical optimisation in industry, focussing on the characteristics that the audience can map to challenges that are specific to their own industry.", + "speakers": ["HQSSZQ"], + "track": 4870, + "start": "2024-11-23T12:00:00+11:00", + "end": "2024-11-23T12:30:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.796817+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069904, + "title": { "en": "Lunch" }, + "start": "2024-11-23T01:30:00Z", + "end": "2024-11-23T13:30:00+11:00", + "room": 3412 + }, + { + "id": 1069906, + "title": { "en": "Lunch" }, + "start": "2024-11-23T01:30:00Z", + "end": "2024-11-23T13:30:00+11:00", + "room": 3410 + }, + { + "id": 1069905, + "title": { "en": "Lunch" }, + "start": "2024-11-23T01:30:00Z", + "end": "2024-11-23T13:30:00+11:00", + "room": 3411 + }, + { + "code": "CERBXC", + "id": 1069907, + "title": "from seeds import plants: using IoT to grow healthy herbs", + "abstract": "With the current climate crisis and the rise of households growing their own fruits, vegetables and herbs, the efficient use of potable water is crucial now more than ever. However, the majority of plant watering systems are either manual or time based - that is, they water plants on a pre-defined schedule. This talk will describe a simple automated watering system programmed with micropython and various extensions to the core product to simplify existing features and add new capabilities using various internet of things devices and data analytics tools.", + "speakers": ["DEZCB8"], + "track": 4870, + "start": "2024-11-23T13:30:00+11:00", + "end": "2024-11-23T14:00:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.796979+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "HMWPGH", + "id": 1069908, + "title": "Introducing Potnia: A Python language library for the conversion of ancient texts to Unicode", + "abstract": "The last five years have seen a significant increase in the application of machine learning to the study of ancient scripts. Applications are broad, and include recognition via Optical Character Recognition (OCR), textual restoration, palaeographic analysis, topic modelling, representation learning, decipherment and machine translation (Sommerschield 2023). A large number of ancient language corpora have been digitised in recent decades, supporting this research. However, while the necessary Unicode blocks for many of these ancient scripts are available, a number of these data sets are still presented as Romanised transliterations.\r\n\r\nIn response to this situation, we have created Potnia (https://pypi.org/project/potnia/), an open-source Python language library under the Apache 2.0 license, designed to convert such transliterated texts to Unicode. The session image accompanying this proposal provides an example of Potnia\u2019s conversion process, with a Romanised transliteration of a Linear B text as the input, and the Unicode representation of this same text as the output. This conversion is crucial for downstream machine learning tasks, as tokenisation in the original Unicode script allows for more accurate representation of linguistic structures and mitigates potential biases introduced by transliteration.\r\n\r\nPotnia's flexible architecture, built on Python's object-oriented principles, employs string manipulation techniques and regular expressions to handle various complexities inherent in ancient texts, such as uncertain readings, missing elements, and script-specific notations. At present, the library can be used for Linear B texts, with functionality for Linear A, Sumerian and Akkadian soon to follow.\r\n\r\nPotnia's design allows for easy addition of new scripts, each with its own set of rules for tokenisation, regularisation, and character mapping. This extensibility positions us well for future inclusion of additional scripts. To ensure reliability and facilitate open-source contributions, we've implemented a comprehensive test suite using pytest, with test cases defined in YAML files for easy expansion. This approach covers key functionalities across different scripts and simplifies the process of adding new test scenarios as the library grows.\r\n\r\nReferences\r\nSommerschield, T., Y. Assael, J. Pavlopoulos, V. Stefanak, A. Senior, C. Dyer, J. Bodel, J. Prag, I. Androutsopoulos, and N.D. Freitas. 2023. \u201cMachine Learning for Ancient Languages: A Survey.\u201d Computational Linguistics 49 (3): 1\u201345. doi:10.1162/coli_a_00481.", + "speakers": ["ZUWBQU", "YJFZGW"], + "track": 4870, + "start": "2024-11-23T13:30:00+11:00", + "end": "2024-11-23T14:00:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:43:33.467965+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "R9ZKZC", + "id": 1069909, + "title": "Let's make a working implementation of async functions in Python 2.1, also, why you might want to use a more recent version of Python", + "abstract": "Often I hear people lamenting that Python has too many features and that older versions of Python were better for that exact reason.\r\n\r\nTo make those people happy, we're going to pick apart the features of Python that enable the `async`/`await` syntax, layer by layer, until we happen upon a working implementation of coroutines that will function in Python 2.1.\r\n\r\nSomewhere in this talk will be some useful discussions about why recent syntactic developments in Python are a good thing actually, but let's not lie, you're reading this abstract for the stunt content. You'll get what you came for.", + "speakers": ["QWCHX7"], + "track": 4870, + "start": "2024-11-23T13:30:00+11:00", + "end": "2024-11-23T14:00:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797069+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "HFXFLZ", + "id": 1069912, + "title": "MicroPython: The best bits!", + "abstract": "MicroPython continues to grow in popularity. But _why_? What is it about this pint-sized version of Python that makes it so darn compelling? What are the best bits of MicroPython? \r\n\r\nJoin me in this talk for a whirlwind tour of some of the most exciting features of this modern embedded programming language.", + "speakers": ["N9ZZWG"], + "track": 4870, + "start": "2024-11-23T14:10:00+11:00", + "end": "2024-11-23T14:40:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.797189+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "CFS9GH", + "id": 1069910, + "title": "What Python Can Learn From Other Languages", + "abstract": "Python is great! It's been a mainstay of web development and systems programming for decades and is on the cutting edge of many fields like scientific computing. But there is always more to improve, both in the language itself and how we use it. This talk will look at how ideas and features from other languages like Ruby, Go, and PHP could be used to improve Python!", + "speakers": ["MY7QMZ"], + "track": 4870, + "start": "2024-11-23T14:10:00+11:00", + "end": "2024-11-23T14:40:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797109+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "9KD9HJ", + "id": 1069911, + "title": "Cultural and Linguistic Influences on Translation: A Study of Novels", + "abstract": "How do translations preserve the original meaning, style, and sentiment of texts across different languages and cultural contexts? This intriguing question drives our study as we delve into the complexities of translation.\r\n\r\nWe examine how sentiment analysis results differ for the same text in various languages, aiming to understand the role of language families in these variations. Using natural language processing techniques in Python, we analyse novels from diverse genres, time periods, and cultural backgrounds to uncover generalisable translation patterns.\r\n\r\nOur study seeks to answer whether translations of words, ideas, and societal contexts in novels are influenced by the cultural contexts into which they are translated. By highlighting the importance of accurate and culturally relevant translations, we emphasise how they play a crucial role in preserving cultural and societal knowledge, ensuring that the richness of the original text is maintained across languages.", + "speakers": ["R3ENGB", "GNVTMG"], + "track": 4870, + "start": "2024-11-23T14:10:00+11:00", + "end": "2024-11-23T14:40:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.797139+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "YNDDJR", + "id": 1069913, + "title": "Walking the Tree of Life \u2013 Adventures in Phylogenetics", + "abstract": "\"What's the last common ancestor of a bear and a weasel?\"\r\n\"Which animals are more related to pigs than cows?\"\r\n\"Are birds reptiles?\"\r\n\"Am I a fish?\"\r\n\r\nWith a recent interest in phylogeny \u2013 the science of evolution, diversification, and speciation \u2013 these are the kinds of questions I've been asking myself. I wanted to find a tool that would let me examine the relationships between species and find the answers to these questions, but, as I looked around I couldn't find anything that did what I wanted. So I made it myself.\r\n\r\nCome with me as I share my journey that led me to talk to some of Australia's top scientists, give up on talking to other top scientists, and accidentally stumble my way into making an actual contribution to science. Learn why I made this tool, how I made this tool, what stage it's at, and where you can use it yourself. And maybe learn some things about life on Earth along the way.\r\n\r\nOh, and to answer the questions above: dog-bears, peccaries, yes, and yes!", + "speakers": ["8UFZNX"], + "track": 4870, + "start": "2024-11-23T14:50:00+11:00", + "end": "2024-11-23T15:20:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.797222+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "8UXYBS", + "id": 1069915, + "title": "Wait, is Wi-Fi just blinking lights?", + "abstract": "Wi-Fi, the mysterious computer blabber. Have you ever wondered how are computers yapping away from under our noses? What secrets must they hold? In this talk we will cover the magic of Wi-Fi, how it works in detail and we will even get our own wireless communication system going using Python and micro-controllers.", + "speakers": ["YCFJET"], + "track": 4870, + "start": "2024-11-23T14:50:00+11:00", + "end": "2024-11-23T15:20:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.797278+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "GF3NJK", + "id": 1069914, + "title": "Failsafes and Safety Fails: How to crash a train and other lessons for software engineers", + "abstract": "Software builders and operators have long looked to transport and aviation for lessons in engineering practices and safety. Today, we\u2019ll turn our attention to the railways as we take 20 years of hindsight to look at the \u2018Broady runaway\u2019 and what it can teach us. This talk will dive into the ATSB\u2019s subsequent safety investigation, recommendations and parallels in the software world, offering us critical lessons in complex system design and incident management.\r\n\r\nFor software engineers, 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.\r\n\r\nOur 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.", + "speakers": ["PB9BKD"], + "track": 4870, + "start": "2024-11-23T14:50:00+11:00", + "end": "2024-11-23T15:20:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797250+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069916, + "title": { "en": "Afternoon break" }, + "start": "2024-11-23T04:20:00Z", + "end": "2024-11-23T15:50:00+11:00", + "room": 3411 + }, + { + "id": 1069918, + "title": { "en": "Afternoon break" }, + "start": "2024-11-23T04:20:00Z", + "end": "2024-11-23T15:50:00+11:00", + "room": 3410 + }, + { + "id": 1069917, + "title": { "en": "Afternoon break" }, + "start": "2024-11-23T04:20:00Z", + "end": "2024-11-23T15:50:00+11:00", + "room": 3412 + }, + { + "id": 1069919, + "title": { "en": "Lightning Talks (Saturday)" }, + "start": "2024-11-23T04:50:00Z", + "end": "2024-11-23T16:50:00+11:00", + "room": 3410 + }, + { + "id": 1069920, + "title": { "en": "Conference Opening (Sunday)" }, + "start": "2024-11-23T22:00:00Z", + "end": "2024-11-24T09:20:00+11:00", + "room": 3410 + }, + { + "id": 1069921, + "title": { "en": "Keynote - Revealed Soon!" }, + "start": "2024-11-23T22:20:00Z", + "end": "2024-11-24T10:05:00+11:00", + "room": 3410 + }, + { + "id": 1069924, + "title": { "en": "Morning break" }, + "start": "2024-11-23T23:05:00Z", + "end": "2024-11-24T10:35:00+11:00", + "room": 3410 + }, + { + "id": 1069922, + "title": { "en": "Morning break" }, + "start": "2024-11-23T23:05:00Z", + "end": "2024-11-24T10:35:00+11:00", + "room": 3411 + }, + { + "id": 1069923, + "title": { "en": "Morning break" }, + "start": "2024-11-23T23:05:00Z", + "end": "2024-11-24T10:35:00+11:00", + "room": 3412 + }, + { + "code": "8HBU3Z", + "id": 1069926, + "title": "Using Multiple Databases in Django Applications", + "abstract": "Over six years ago, three engineers from Sydney started working on an insurtech platform with global ambitions. They chose Django, even though two of them had no prior experience with the framework. Nevertheless, the project became a success, affirming that choosing Django was a great technical decision.\r\n\r\nThis is a real-life story about the challenges the team faced while scaling the project and changing the database architecture, all while maintaining uninterrupted services for millions of customers. We will cover some of the key technical decisions the team made, how Django supported us in migrating from a single database to a multi-database architecture, and examine the architectural benefits of using multiple databases in data-intensive applications.", + "speakers": ["VQZYV9"], + "track": 4870, + "start": "2024-11-24T10:35:00+11:00", + "end": "2024-11-24T11:05:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.797649+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "LYLY7H", + "id": 1069927, + "title": "Quantifying Nebraska", + "abstract": "[In 2020, xkcd published _Dependency_](https://xkcd.com/2347/), which posited that \"all modern digital infrastructure\" is ultimately transitively dependent on \"a project some random person in Nebraska has been thanklessly maintaining since 2003\".\r\n\r\nHow can we find these projects and ensure that their maintainers get the thanks and \u2014 more importantly \u2014 the resources they need?", + "speakers": ["8LCDDU"], + "track": 4870, + "start": "2024-11-24T10:35:00+11:00", + "end": "2024-11-24T11:05:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797727+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "QTWAGZ", + "id": 1069925, + "title": "Better dataframes", + "abstract": "Dataframes are an abstraction that proven extremely useful for data analysis in dynamic languages like S, R, Python, and Julia. The Pandas package has been dominant in Python for around 15 years but its design is now showing its age. There is now a vibrant and messy ecosystem of potential disruptors to the status quo for data analysis tasks in Python.\r\n\r\nThis talk will help you make sense of the mess. It will give you a comprehensive review of the strengths and weaknesses of the challengers, including Polars, Ibis, Vaex, Modin, Dask, and the PySpark Pandas API (formerly known as Koalas). It will also review efforts to unify the PyData landscape such as Apache Arrow, the dataframe interchange protocol, Narwhals, and the Ibis project from the original author of Pandas, Wes McKinney.", + "speakers": ["3WXCVF"], + "track": 4870, + "start": "2024-11-24T10:35:00+11:00", + "end": "2024-11-24T11:05:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.797621+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "P7UKEN", + "id": 1069928, + "title": "Dependency management: the cause of\u2014and solution to\u2014all supply chain problems", + "abstract": "How many dependencies does your software project have? How much confidence do you have in them? We sometimes say in open source there is safety in \u2018eyes on the code\u2019, but with supply chain attacks on the rise, who is really watching?\r\n\r\nMost software is built with hundreds if not thousands of direct and transitive dependencies, and those dependencies change every day. Our analysis shows that up to 20% of PyPI packages change their dependency graphs multiple times per week. Ensuring that each one of these dependencies is trustworthy is a daunting task.\r\n\r\nIn this talk, we will share some stats and stories from building deps.dev. We will look at what it means for a project to be healthy, dig into the complexities of dependency resolution algorithms, and recommend tools that can make practical dependency management possible if not easy.", + "speakers": ["X99XWA"], + "track": 4870, + "start": "2024-11-24T11:15:00+11:00", + "end": "2024-11-24T11:45:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797757+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "9ZRRJY", + "id": 1069930, + "title": "How to confirm that the index you added actually improves query performance", + "abstract": "Database indexes allow us to speed up queries by providing a method to quickly look up data. However, do we always check that they actually improve performance? In this talk, I explain how and why an automatically added database index did not get used by the queries we expected. Together we will go through SQL produced from Django ORM, index structures and generating database query plans to unravel what was actually going on behind the scenes in our queries.", + "speakers": ["WRLNJE"], + "track": 4870, + "start": "2024-11-24T11:15:00+11:00", + "end": "2024-11-24T11:45:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.797829+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "U3YKPB", + "id": 1069929, + "title": "Rethinking Data Catalogs: The Promise and Pitfalls", + "abstract": "The promise of data catalogs, a single source of truth for your organisation's data, often clashes with the reality of under-utilised features, redundancy across various data catalog solutions across teams, adoption challenges and a lack of clear strategy.\r\n\r\n\r\nThis talk will pose some critical questions concerning current approaches of choosing and implementing data catalogs:\r\n\r\n\r\n- Do you actually need a Data catalog?\r\n- Are data catalogs becoming just glorified registries without much practical use?\r\n- Why do organisations find themselves juggling multiple catalogs?\r\n- Is there a synergy between System Catalog & Data Catalog?\r\n- How do you identify the right fit and what are the considerations?\r\n- How to measure success for a data catalog?\r\n\r\nWe'll dissect the reasons behind these challenges and share our experience of implementing data catalogs across different organisations.", + "speakers": ["3DCSNN", "98HVRZ"], + "track": 4870, + "start": "2024-11-24T11:15:00+11:00", + "end": "2024-11-24T11:45:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.797786+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "DQPW7L", + "id": 1069932, + "title": "Adding File System context to pathlib", + "abstract": "Adding file system specific information (e.g. how to match case, whether to follow symlinks) to pathlib Path objects, instead of adding such arguments to methods taking Path objects.", + "speakers": ["ZY7KJB"], + "track": 4870, + "start": "2024-11-24T11:55:00+11:00", + "end": "2024-11-24T12:25:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.797887+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "LALLKX", + "id": 1069933, + "title": "The perfect setup? Not setup.py! Building packages the right way", + "abstract": "Everyone loves package management! Python's packaging systems have continued to evolve over the years. Specifications such as environment markers, custom backends, and static build configurations have been introduced. Additionally new package managers like Poetry and Hatch have emerged.\r\n\r\nYet despite the updates, many projects are still living in the 2010s - using a setup.py file to specify the build configuration for their package. setup.py is notoriously difficult to learn and a common vector for launching attacks during install.\r\n\r\nThis talk will discuss why it's time to move away from using setup.py and how to do it.\r\n\r\nWe will see how setup.py is used and abused - from downloading huge datasets (*cough* AI *cough*), modifying the system, and most critically how malicious payloads can be included to execute when setup.py is evaluated. Arbitrary code in setup.py makes security analysis harder and creates more work for PyPI administrators.\r\n\r\nThe talk will detail the new (as of 7 years ago) methods of describing build configurations in pyproject.toml and setup.cfg, giving examples of how to use these methods. The examples will include how to achieve what once required dynamic code to include data like readme contents, version numbers and requirements. The limits of pyproject.toml and setup.cfg will also be covered.\r\n\r\nFinally, the talk will outline how moving away from setup.py improves the Python packaging universe, how it makes life easier for ensuring Python security, and what can be done to drive adoption of pyproject.toml.", + "speakers": ["CGMRAQ"], + "track": 4870, + "start": "2024-11-24T11:55:00+11:00", + "end": "2024-11-24T12:25:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.797915+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "UKJB7J", + "id": 1069931, + "title": "Follow the Postgres brick road: a journey of testing against a real database server", + "abstract": "Tests are good. Code that uses a database is good. Testing code that uses a database is great\u2026 But it's not so easy to do well. Let's follow our journey through various pitfalls to make testing against a local PostgreSQL instance informative, reliable and fast, so that we have fewer horrible surprises once code gets to production.", + "speakers": ["PGYLJB"], + "track": 4870, + "start": "2024-11-24T11:55:00+11:00", + "end": "2024-11-24T12:25:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.797858+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069935, + "title": { "en": "Lunch" }, + "start": "2024-11-24T01:25:00Z", + "end": "2024-11-24T13:30:00+11:00", + "room": 3411 + }, + { + "id": 1069934, + "title": { "en": "Lunch" }, + "start": "2024-11-24T01:25:00Z", + "end": "2024-11-24T13:30:00+11:00", + "room": 3410 + }, + { + "id": 1069936, + "title": { "en": "Lunch" }, + "start": "2024-11-24T01:25:00Z", + "end": "2024-11-24T13:30:00+11:00", + "room": 3412 + }, + { + "code": "WYZEUQ", + "id": 1069938, + "title": "With Xonsh use Python as your shell: No more switching between shell and Python syntax!", + "abstract": "Many of us employ shells (like Bash, Zsh or PowerShell) in the terminal to \u201cget admin things done\u201d on our computer. For the actual programming then we switch to Python to \u201cget real things done\u201d.\r\n\r\nBut what if you could use Python in your programs *and* in the terminal? Welcome to Xonsh, a shell and a Python REPL in one. This unique feature helps very much to get all things in the terminal done quicker, safer and to have more fun on the way!", + "speakers": ["BHGMDT"], + "track": 4870, + "start": "2024-11-24T13:30:00+11:00", + "end": "2024-11-24T14:00:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.798081+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "ZGCQSY", + "id": 1069937, + "title": "Setting Up Your Python Community for Success: Lessons from the Melbourne Python User Group", + "abstract": "Discover best practices in managing a meetup which fosters a vibrant open-source ecosystem and maintains engaged membership and volunteers from experiences within the Melbourne Python User Group. Learn best practices for organizing successful meetups, hackathons, and collaborative projects that drive community engagement and innovation.", + "speakers": ["XPM9RU"], + "track": 4870, + "start": "2024-11-24T13:30:00+11:00", + "end": "2024-11-24T14:00:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.798052+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "C37SMX", + "id": 1069939, + "title": "Django, REST and OpenAPI - a gentle introduction", + "abstract": "Django is an all-parts-included framework that is one of the most popular ways of building a website in Python. But for many websites that's not enough - we also need a REST-based API with an OpenAPI specification so that other programs can read and work with our data. This talk will cover the Python packages that can provide these facilities and how to integrate them into your existing website.", + "speakers": ["RB3PZZ"], + "track": 4870, + "start": "2024-11-24T13:30:00+11:00", + "end": "2024-11-24T14:00:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.798110+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "NFZKYP", + "id": 1069941, + "title": "Time and Time Again", + "abstract": "Time is one of the few forces that remain outside of human control. Attempting to understand it is hard enough, but attempting to make computers understand it is a frequent and common source of errors, especially across different cultures and calendars.\r\n\r\nThis talk will explore a number of different ways of understanding and expressing the flow of time, as well as common and uncommon edge cases to account for when building software.", + "speakers": ["P9CXX8"], + "track": 4870, + "start": "2024-11-24T14:10:00+11:00", + "end": "2024-11-24T14:40:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.798166+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "MVAF7U", + "id": 1069942, + "title": "How we used Python to try and save lives", + "abstract": "Google Crisis Response saved lives and tried to make the world better. And all of it was in Python.", + "speakers": ["AK9RMY"], + "track": 4870, + "start": "2024-11-24T14:10:00+11:00", + "end": "2024-11-24T14:40:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.798194+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "S7E8T7", + "id": 1069940, + "title": "Three Django Apps in a Trenchcoat: Writing an event management website with not a lot of time", + "abstract": "Come and hear how I wrote 3 Django apps in a trenchcoat to run a ~300+ person scout camp, from making event registration a breeze, to conducting everyone's movements throughout the entire event.", + "speakers": ["CYVHAC", "QD8GMS"], + "track": 4870, + "start": "2024-11-24T14:10:00+11:00", + "end": "2024-11-24T14:40:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.798138+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "UKK9K9", + "id": 1069943, + "title": "Lowering the Gangplank: How Writing Songs Relates to Templating", + "abstract": "Templating is awesome! It makes automation easier and takes away a lot of the tedious work required to maintain and build new things. Now, what if I told you that the way we utilise templates is somewhat similar to how songs are written? In this talk I will lower the proverbial gangplank from our templating ship as we cross over into the land of song writing and discover how these two concepts are linked.", + "speakers": ["FTUWNC"], + "track": 4870, + "start": "2024-11-24T14:50:00+11:00", + "end": "2024-11-24T15:20:00+11:00", + "room": 3410, + "duration": 30, + "updated": "2024-09-03T10:14:51.798222+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "WCUHJ8", + "id": 1069945, + "title": "Turtles all the way down: Abstractions and when we should use them", + "abstract": "Abstractions are one of the greatest tools in all of programming. But sometimes we reach for them too often. How do we know when we should use an abstraction, and when we should just use the ones that already exist.", + "speakers": ["9JG7DV"], + "track": 4870, + "start": "2024-11-24T14:50:00+11:00", + "end": "2024-11-24T15:20:00+11:00", + "room": 3412, + "duration": 30, + "updated": "2024-09-03T10:14:51.798279+00:00", + "state": null, + "do_not_record": false + }, + { + "code": "B8RJPR", + "id": 1069944, + "title": "Space Django: Migrating and Redesigning a Database while Hunting for Satellites.", + "abstract": "Being a fast-paced startup and developing a completely new product in the Space Industry is very challenging, and moving fast wasn\u2019t just a requirement but essential. It's the kind of environment that is hard to think too much ahead, and for that reason, our database was created to address the problems we had at hand. \r\nAfter a while, new products and features were required, and our database couldn't handle all of them. That\u2019s when we decided to move our data to a newly designed database instance with proper relationships, able to handle more features, higher workloads and scalable. During the planning phase, several approaches were discussed, such as creating a script to copy the data and some off-the-shelf software that we thought could handle that for us. However, the complexity of implementing those approaches wasn\u2019t feasible with our deadlines for releasing the new product. So, we decided to copy the data using Django ORM (our product was already using Django), the idea was to avoid the complexity of creating complex SQL Queries to copy data to new tables while keeping the data consistency and integrity.\r\nIn this presentation, we aim to demonstrate how our database was limiting the company\u2019s scalability and how we fixed those problems by migrating to a new database schema whilst maintaining two database instances, one for internal operations and the other for customer-facing functions. Moreover, we show how we did that using object-oriented programming in combination with Django\u2019s ORM to migrate our database without the need to handle complex SQL commands to copy data, keep relationships, and create new ones.", + "speakers": ["EJ9MHD"], + "track": 4870, + "start": "2024-11-24T14:50:00+11:00", + "end": "2024-11-24T15:20:00+11:00", + "room": 3411, + "duration": 30, + "updated": "2024-09-03T10:14:51.798250+00:00", + "state": null, + "do_not_record": false + }, + { + "id": 1069948, + "title": { "en": "Afternoon break" }, + "start": "2024-11-24T04:20:00Z", + "end": "2024-11-24T15:50:00+11:00", + "room": 3412 + }, + { + "id": 1069946, + "title": { "en": "Afternoon break" }, + "start": "2024-11-24T04:20:00Z", + "end": "2024-11-24T15:50:00+11:00", + "room": 3410 + }, + { + "id": 1069947, + "title": { "en": "Afternoon break" }, + "start": "2024-11-24T04:20:00Z", + "end": "2024-11-24T15:50:00+11:00", + "room": 3411 + }, + { + "id": 1069949, + "title": { "en": "Lightning Talks (Sunday)" }, + "start": "2024-11-24T04:50:00Z", + "end": "2024-11-24T16:50:00+11:00", + "room": 3410 + }, + { + "id": 1069950, + "title": { "en": "Closing Address (Sunday)" }, + "start": "2024-11-24T05:50:00Z", + "end": "2024-11-24T17:30:00+11:00", + "room": 3410 + } + ], + "version": "20240903.1", + "timezone": "Australia/Melbourne", + "event_start": "2024-11-22", + "event_end": "2024-11-24", + "tracks": [ + { + "id": 4870, + "name": { "en": "Main Conference" }, + "description": {}, + "color": "#FC0101" + }, + { + "id": 4871, + "name": { "en": "Education" }, + "description": {}, + "color": "#FFBF00" + }, + { + "id": 4872, + "name": { "en": "DevOops" }, + "description": {}, + "color": "#00BA1E" + }, + { + "id": 4873, + "name": { "en": "Scientific Python" }, + "description": {}, + "color": "#0078A4" + } + ], + "rooms": [ + { "id": 3410, "name": { "en": "Goldfields Theatre" }, "description": {} }, + { "id": 3411, "name": { "en": "Eureka 2" }, "description": {} }, + { "id": 3412, "name": { "en": "Eureka 3" }, "description": {} } + ], + "speakers": [ + { "code": "GNVTMG", "name": "Eliz So", "avatar": "" }, + { "code": "YJFZGW", "name": "Kabir Manandhar Shrestha", "avatar": "" }, + { "code": "HVQBMZ", "name": "Pradeep Rajasekhar", "avatar": "" }, + { + "code": "N9ZZWG", + "name": "Matt Trentini", + "avatar": "https://pretalx.com/media/avatars/ea42d30f7cda55601ae9931f5579abe0_nQNiRQD.jpg" + }, + { + "code": "9JGCPM", + "name": "Andrew Williams", + "avatar": "https://pretalx.com/media/avatars/JC_9591-head.png" + }, + { + "code": "MY7QMZ", + "name": "Noah Kantrowitz", + "avatar": "https://pretalx.com/media/avatars/headshot_00YX2vK.jpg" + }, + { + "code": "PFTMME", + "name": "J. Rosenbaum", + "avatar": "https://pretalx.com/media/avatars/headshot1_PdnFrwR.jpeg" + }, + { + "code": "3DCSNN", + "name": "Harmeet Sokhi", + "avatar": "https://pretalx.com/media/avatars/1aa9a192090001f30be351ac4c8021f5_vMdEteR.jpg" + }, + { + "code": "P9CXX8", + "name": "Yaakov", + "avatar": "https://pretalx.com/media/avatars/MicrosoftTeams-image-smaller_j754fqe.jpg" + }, + { "code": "97JLNB", "name": "Anna Tisch", "avatar": "" }, + { + "code": "7SWEAL", + "name": "A.J. Fisher", + "avatar": "https://pretalx.com/media/avatars/1712749524080_SatwVlO.jfif" + }, + { + "code": "ATDLZU", + "name": "David Andersson", + "avatar": "https://pretalx.com/media/avatars/1615684432676_U5XDwSy.jpeg" + }, + { "code": "JJR3W8", "name": "Mel", "avatar": "" }, + { + "code": "RSUKRU", + "name": "Sam Bishop", + "avatar": "https://pretalx.com/media/avatars/avatar-sp1_PGtPyGB.jpg" + }, + { + "code": "8UFZNX", + "name": "Jack Reichelt", + "avatar": "https://pretalx.com/media/avatars/profile-pic_qQ6v2SB.png" + }, + { + "code": "8NFJSF", + "name": "Juan Nunez-Iglesias", + "avatar": "https://pretalx.com/media/avatars/425e61a8c6b77bd5d300cd1991ec3f15_n565tME.jpg" + }, + { + "code": "XPM9RU", + "name": "Renaldi Gondosubroto", + "avatar": "https://pretalx.com/media/avatars/Renaldi_Headshot_2_2ykNW11.png" + }, + { + "code": "HBDX9R", + "name": "Andrew Lonsdale", + "avatar": "https://pretalx.com/media/avatars/32eac8bd4629b636cb2f7eb1adfc1e30_XwrpOAA.jpg" + }, + { + "code": "FTUWNC", + "name": "Chelsea Finnie", + "avatar": "https://pretalx.com/media/avatars/PenguSquare2_vrBAf4Y.png" + }, + { + "code": "EJ9MHD", + "name": "Artur Baruchi", + "avatar": "https://pretalx.com/media/avatars/IMG_8138_rqZjrzD.png" + }, + { + "code": "VXBVLZ", + "name": "Stephen Tierney", + "avatar": "https://pretalx.com/media/avatars/stierney_small_PfgTgMf.jpg" + }, + { + "code": "8NDWMQ", + "name": "Alison Wong", + "avatar": "https://pretalx.com/media/avatars/AlisonWONGFinal_TtKrbTY.jpg" + }, + { + "code": "9JG7DV", + "name": "Mark Lakewood", + "avatar": "https://pretalx.com/media/avatars/Profile_photo_kLZb4p5.jpg" + }, + { + "code": "HQSSZQ", + "name": "Dr Jack Simpson", + "avatar": "https://pretalx.com/media/avatars/jack_KOm8jei_KQth295.jpg" + }, + { + "code": "PB9BKD", + "name": "Jack Skinner", + "avatar": "https://pretalx.com/media/avatars/228a543862b1b9c1e7f3b812620b1471_D363AsG.jpg" + }, + { "code": "87LT9Q", "name": "Simon Aubury", "avatar": "" }, + { + "code": "LDFVBH", + "name": "Russell Keith-Magee", + "avatar": "https://pretalx.com/media/avatars/b91373320dbc3bc52fcd870d3b21748f_UHhnDR7.jpg" + }, + { + "code": "VQZYV9", + "name": "Artem Kolesnikov", + "avatar": "https://pretalx.com/media/avatars/photo_IgPBVll.jpg" + }, + { "code": "WRLNJE", "name": "Suzannah Cooper", "avatar": "" }, + { + "code": "BHTKP3", + "name": "Damien George", + "avatar": "https://pretalx.com/media/avatars/DSC_9022-crop_95so5l7.JPG" + }, + { + "code": "KCADCR", + "name": "Tom Eastman", + "avatar": "https://pretalx.com/media/avatars/52298146141_97cb5031f9_k_Kyf5T1H.jpg" + }, + { + "code": "AHET73", + "name": "Evan Kohilas", + "avatar": "https://pretalx.com/media/avatars/ebd48c4b1d85878d6035ad6ac3631070_90Vo0dw.jpg" + }, + { "code": "7D78ZU", "name": "Liam Bluett", "avatar": "" }, + { "code": "WREQBQ", "name": "Haggen So", "avatar": "" }, + { + "code": "ZZQ9TE", + "name": "Tennessee Leeuwenburg", + "avatar": "https://pretalx.com/media/avatars/Profile_Photo_Tennessee_Leeuwenburg_JwewX1k.jpg" + }, + { + "code": "YCFJET", + "name": "Felipe Tavares", + "avatar": "https://pretalx.com/media/avatars/profile-pic11_NglMWbQ.png" + }, + { + "code": "8LCDDU", + "name": "Adam Harvey", + "avatar": "https://pretalx.com/media/avatars/36d8c4d60eaed7139aa0ab88378590c0_QjHrX33.jpg" + }, + { "code": "CGMRAQ", "name": "Caleb Brown", "avatar": "" }, + { + "code": "QWCHX7", + "name": "Christopher Neugebauer", + "avatar": "https://pretalx.com/media/avatars/chrisjrn-unicorn_LLQw4TY.jpg" + }, + { + "code": "9WJJPL", + "name": "Stefanie Molin", + "avatar": "https://pretalx.com/media/avatars/li_7EgJHSM.jpeg" + }, + { "code": "AK9RMY", "name": "Anthony Baxter", "avatar": "" }, + { "code": "VJPZ7L", "name": "Sanjin", "avatar": "" }, + { "code": "BNHHZ9", "name": "Pravin vaz", "avatar": "" }, + { + "code": "ZY7KJB", + "name": "Clinton Roy", + "avatar": "https://pretalx.com/media/avatars/0898bb664197d0f27e15f5677a183de7_Yod0P7l.jpg" + }, + { + "code": "BHGMDT", + "name": "Leo Broska", + "avatar": "https://pretalx.com/media/avatars/1c8d1308bafaa6eb869321d5dca427cd_6ulmg7M.jpg" + }, + { + "code": "PGYLJB", + "name": "Huon Wilson", + "avatar": "https://pretalx.com/media/avatars/profile.jpg_IRjIpGe.png" + }, + { + "code": "JTPU7J", + "name": "Edwina Mead", + "avatar": "https://pretalx.com/media/avatars/Untitled_M6iVsMc.png" + }, + { "code": "MK9KK8", "name": "Carolyn Gekas", "avatar": "" }, + { + "code": "RB3PZZ", + "name": "Paul Wayper", + "avatar": "https://pretalx.com/media/avatars/c6d06e8c0df6789364ac68f7aeaed800_lQgt0db.jpg" + }, + { "code": "3WXCVF", "name": "Ed Schofield", "avatar": "" }, + { + "code": "Q7H3M8", + "name": "Lizzie Silver", + "avatar": "https://pretalx.com/media/avatars/Silver_Lizzie_4eAibq1.jpg" + }, + { + "code": "MSEC3L", + "name": "Emily Massahud", + "avatar": "https://pretalx.com/media/avatars/emily_massahud_pLJtvvo.jpg" + }, + { + "code": "X99XWA", + "name": "Nicky Ringland", + "avatar": "https://pretalx.com/media/avatars/cd3e4475f0521c4df69598eae54502ae_oLtz3hX.jpg" + }, + { + "code": "JFJVXW", + "name": "Luke Wiwatowski", + "avatar": "https://pretalx.com/media/avatars/b76ad1749a253bb98395d9a566c99ad6_Y2eAHoO.jpg" + }, + { + "code": "DEZCB8", + "name": "Anthony I. Joseph", + "avatar": "https://pretalx.com/media/avatars/Image_from_iOS_XuOClu6.jpg" + }, + { + "code": "98HVRZ", + "name": "Vishal Srivastava", + "avatar": "https://pretalx.com/media/avatars/self_low_res_3_18IqiHv.jpg" + }, + { "code": "R3ENGB", "name": "Anneysha Sarkar", "avatar": "" }, + { + "code": "TQKR8P", + "name": "Renee Noble", + "avatar": "https://pretalx.com/media/avatars/renee_pycon_tpf6eur.jpeg" + }, + { "code": "S7AU83", "name": "Draga Doncila Pop", "avatar": "" }, + { + "code": "CYVHAC", + "name": "Matt Cengia", + "avatar": "https://pretalx.com/media/avatars/signal-2022-07-03-19-36-05-9942_BaFQYmw_AS6w9Tc.jpg" + }, + { + "code": "NTEJEK", + "name": "Ash Bek", + "avatar": "https://pretalx.com/media/avatars/2589332414bf1618600e2bcafa1307f3f50ecfdc_YbHvJd4.webp" + }, + { + "code": "ZUWBQU", + "name": "Emily Tour", + "avatar": "https://pretalx.com/media/avatars/Knossos_Site_2_WM4L6aW.jpg" + }, + { + "code": "QD8GMS", + "name": "Luke Byrnes", + "avatar": "https://pretalx.com/media/avatars/5e753a48150c4b90dd6addba390e5029_A1kEdh3.jpg" + }, + { + "code": "PAMFZZ", + "name": "Ned Letcher", + "avatar": "https://pretalx.com/media/avatars/ned_profile_pic_sxnDbKl.jpg" + } + ] +} diff --git a/src/components/PurchaseButton.astro b/src/components/PurchaseButton.astro index 8631db16..2e7b116d 100644 --- a/src/components/PurchaseButton.astro +++ b/src/components/PurchaseButton.astro @@ -1,15 +1,29 @@ --- import Button from "./Button.astro" + +export type Props = { + cta: string + +} +let { cta } = Astro.props + ---

+ +