<?xml version='1.0' encoding='utf-8' ?>
<!-- Made with love by pretalx v2026.3.0.dev0. -->
<schedule>
    <generator name="pretalx" system="pretalx.com" version="2026.3.0.dev0" />
    <version>1.2</version>
    <conference>
        <title>Juliacon 2024</title>
        <acronym>juliacon2024</acronym>
        <start>2024-07-09</start>
        <end>2024-07-12</end>
        <days>4</days>
        <timeslot_duration>00:05</timeslot_duration>
        <base_url>https://pretalx.com</base_url>
        
        <time_zone_name>Europe/Amsterdam</time_zone_name>
        
        
        <track name="General" slug="4266-general"  color="#000000" />
        
        <track name="Earth and climate science in Julia: Power to the user" slug="4413-earth-and-climate-science-in-julia-power-to-the-user"  color="#764806" />
        
        <track name="Quantum Minisymposia" slug="4414-quantum-minisymposia"  color="#790bfb" />
        
        <track name="Aerospace Minisymposium" slug="4415-aerospace-minisymposium"  color="#49f0f3" />
        
        <track name="Industrial Julia" slug="4416-industrial-julia"  color="#676565" />
        
        <track name="Scientific Data Minisymposium" slug="4417-scientific-data-minisymposium"  color="#01390f" />
        
        <track name="Julia for High-Performance Computing" slug="4418-julia-for-high-performance-computing"  color="#fb0202" />
        
        <track name="AI/ML/AD" slug="4565-aimlad"  color="#f30fca" />
        
        <track name="SciML" slug="4564-sciml"  color="#006051" />
        
        <track name="Notebooks &amp; Graphics" slug="4566-notebooks-graphics"  color="#760303" />
        
        <track name="Posters" slug="4567-posters"  color="#06f701" />
        
        <track name="Community" slug="4569-community"  color="#c99be6" />
        
        <track name="Julia Internals and Tooling" slug="4568-julia-internals-and-tooling"  color="#01a6ff" />
        
        <track name="Biology &amp; Life Sciences" slug="4586-biology-life-sciences"  color="#027f20" />
        
        <track name="Physics &amp; Quantum Chemistry" slug="4587-physics-quantum-chemistry"  color="#002489" />
        
        <track name="Economics" slug="4588-economics"  color="#b69804" />
        
        <track name="Data Science and Dynamics" slug="4589-data-science-and-dynamics"  color="#f17800" />
        
        <track name="Math(s)" slug="4600-maths"  color="#e89999" />
        
        <track name="Graphs" slug="4602-graphs"  color="#378a9d" />
        
        <track name="Accelerated &amp; large-scale computing" slug="4603-accelerated-large-scale-computing"  color="#b63e09" />
        
        <track name="Optimization" slug="4601-optimization"  color="#fbff42" />
        
        <track name="PyData" slug="4885-pydata"  color="#009dff" />
        
    </conference>
    <day index='1' date='2024-07-09' start='2024-07-09T04:00:00+02:00' end='2024-07-10T03:59:00+02:00'>
        <room name='TU-Eindhoven -1.350' guid='19f608aa-ae11-5310-bd0d-d57e6f70791c'>
            <event guid='359c7fe2-1b9a-5c5d-a022-b21d8c485ce2' id='43438' code='D3Y7KW'>
                <room>TU-Eindhoven -1.350</room>
                <title>Productive Parallel Programming with Dagger.jl</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>03:00</duration>
                <abstract>Everybody wants fast code, but not everyone knows how to write it. Thankfully, Dagger.jl can help you write fast, parallel code with such ease as you&apos;ve never known before. In this workshop, we will teach you everything you need to know to use Dagger effectively, and work through building example parallel programs with Dagger.</abstract>
                <slug>juliacon2024-43438-productive-parallel-programming-with-dagger-jl</slug>
                <track>Accelerated &amp; large-scale computing</track>
                <logo>/media/juliacon2024/submissions/D3Y7KW/Final-medium_JjEvDmJ.jpg</logo>
                <persons>
                    <person id='46487'>Przemys&#322;aw Szufel</person><person id='46486'>Julian P Samaroo</person>
                </persons>
                <language>en</language>
                <description>Traditional parallel programming can be very hard to do effectively, as there are many prerequisites to know, and many tools that need to be used correctly and combined for maximum performance. Because of this, many programmers never learn how to write code that can scale beyond a single thread or a single server; and when parallelism is added to code, it often only supports one or a limited number of systems and hardware devices, which excludes users with unsupported systems from using that code effectively.

Dagger.jl aims to help fix this problem for Julia code, by providing a full parallel programming environment that closely matches how users already write code. Instead of forcing users to learn a new programming paradigm or opinionated API, Dagger provides a variety of familiar interfaces - like tasks, arrays, tables, and graphs - so that users can pick the interface that matches their existing code and algorithms. And once any of those interfaces are used, Dagger seamlessly parallelizes the user&apos;s code and allows it to run automatically on multiple CPUs, multiple servers, on a variety of GPUs, and more, and even manages data by moving it to disk when available memory is tight.

This workshop is focused on users who feel comfortable with Julia, but struggle with adding parallelism to their code. This workshop will start out by introducing Dagger and explaining how it works at a high level. Then, we will dive into the various programming interfaces (tasks, arrays, tables, graphs, and more) that Dagger provides, show how they can be used just like their non-Dagger counterparts, and then work through an example program built with each programming paradigm. Along the way, we will also see how to user Dagger&apos;s logging and profiling capabilities to gain insights into what Dagger is doing behind the scenes, so that we can better observe where our parallelism is coming from.

If there is enough time, we will also cover more advanced topics like how to utilize GPUs, MPI interfacing, and more.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaParallel/Dagger.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/D3Y7KW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/D3Y7KW/feedback/</feedback_url>
            </event>
            <event guid='f897f29c-1e65-5981-980e-6c6fdd0a8d76' id='43634' code='NTQZJJ'>
                <room>TU-Eindhoven -1.350</room>
                <title>Hands-on with Julia for HPC on GPUs and CPUs</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>03:00</duration>
                <abstract>Julia offers the flexibility of a high-productivity language while providing control, performance, and compatibility with high-performance computing (HPC) hardware. This workshop demonstrates how Julia makes modern HPC accessible. It covers resource configuration, distributed computing, code optimization for CPUs and GPUs, and versatile workflows. Participants will have the opportunity to experience it firsthand with a hands-on session on a GPU-powered supercomputer.</abstract>
                <slug>juliacon2024-43634-hands-on-with-julia-for-hpc-on-gpus-and-cpus</slug>
                <track>Accelerated &amp; large-scale computing</track>
                <logo>/media/juliacon2024/submissions/NTQZJJ/Julia_for_HPC_-_workshop_vdgRdKX.png</logo>
                <persons>
                    <person id='46675'>Carsten Bauer</person><person id='46673'>Ludovic R&#228;ss</person><person id='46831'>Johannes Blaschke</person><person id='46679'>Ivan Utkin</person>
                </persons>
                <language>en</language>
                <description>**URGENT: You have a workshop ticket and plan to attend the workshop in person? Then please apply for a NERSC account as soon as possible!** Check out the instructions [here](https://github.com/JuliaHPC/juliacon24-hpcworkshop).

Why to wait hours for computations to complete, when it could take only a few seconds? Tired of prototyping code in an interactive, high-level language and rewriting it in a lower-level language to get high-performance code? By its design, Julia offers the flexibility of a high-productivity language, without sacrificing the control, the performance, and the idiosyncrasies that are often demanded by high-performance computing (HPC) hardware.

This workshop demonstrates how modern HPC is made accessible to a broad range of users using Julia. We will cover technical backgrounds and hands-on examples in contemporary uses of HPC systems: resource configuration and management; distributed computing; optimising code of CPUs and GPUs; sophisticated workflows that can run (almost) anywhere! If you&#8217;re using HPC systems right now, or if you&#8217;re just curious about HPC, this workshop is right for you.

**Program**
The workshop consists of 2 parts:

1. You will learn the basics of how to develop applications and workflows for HPC systems. Topics covered in the first part are:
  - Managing your software environment on HPC systems
  - Multithreading
  - Distributed computing (structured and unstructured communication using [MPI.jl](https://github.com/JuliaParallel/MPI.jl), [Distributed.jl](https://github.com/JuliaLang/Distributed.jl), and [Dagger.jl](https://github.com/JuliaParallel/Dagger.jl)).
  - Developing code for GPUs.
Each of the topics above will be presented in the form of technical background, and accessible hands-on examples. Since performance is key, we will also cover the relevant performance optimization tools for each area.

2. Once you&#8217;re armed with the necessary knowledge, we will spend the second part developing an HPC application on a supercomputer: [NERSC&#8217;s Perlmutter system](https://www.nersc.gov/systems/perlmutter/). The application you will implement will be driven entirely from NERSC&#8217;s Jupyter Hub, and it will make use of multiple nodes and GPUs. Packages you will learn about/use: [MPI.jl](https://github.com/JuliaParallel/MPI.jl), [Dagger.jl](https://github.com/JuliaParallel/Dagger.jl), [HDF5.jl](https://github.com/JuliaIO/HDF5.jl), [IJulia.jl](https://github.com/JuliaLang/IJulia.jl).

We will provide access to training accounts on NERSC&#8217;s &#8220;Perlmutter&#8221; system. Please apply to get our training account no later than a week before the workshop. **Details will be posted here: https://juliaparallel.org/tutorials/.**

**Goals**
By the end of this workshop, you will have acquired or refreshed the basics of how to develop applications and workflows for HPC systems using Julia. In the first part, you will learn about basic tools using simple examples. Then, in a second part, you will develop a parallelized version of a serial code and run it on NERSC&#8217;s GPU-accelerated supercomputer Perlmutter.

We look forward to having you on board and will make sure to foster exchange of ideas and knowledge to provide an as inclusive as possible event.

**Prerequisite Knowledge**
This workshop assumes a basic knowledge of the Julia language (language structure such as functions and modules, control flow, and data types including arrays), and coding best practices (such as git, ssh, and limited usage of the Bash command line interface).

We will cover the fundamentals of multi-threading, distributed, and GPU computing; as well as how these relate to modern HPC systems. Now prerequisite knowledge in these areas is needed.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NTQZJJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NTQZJJ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='TU-Eindhoven -1.354' guid='c5fa3408-b414-5a79-a5b6-6f2dda561ff8'>
            <event guid='1b5c65c2-7eb4-5d23-9550-f1f0377626b5' id='43873' code='YPPSBF'>
                <room>TU-Eindhoven -1.354</room>
                <title>Hierarchical Component-Based Modeling with ModelingToolkit.jl</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>03:00</duration>
                <abstract>Acausal modeling tools such as ModelingToolkit, Modelica, and Simscape are widely used for industrial modeling, simulated real-world phenomena such as hydraulic, HVAC, and multibody systems. In this tutorial we will dive into how to easily build large-scale high-fidelity models with ModelingToolkit and use its embedding within the Julia programming language in order to transform high level descriptions into simpler equations and simulate the resulting models with the tools of Julia&apos;s SciML.</abstract>
                <slug>juliacon2024-43873-hierarchical-component-based-modeling-with-modelingtoolkit-jl</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person><person id='46490'>Michael Tiller</person>
                </persons>
                <language>en</language>
                <description>ModelingToolkit is the symbolic modeling layer of Julia&apos;s SciML. SciML covers many areas of numerical modeling and simulation, such as linear systems of equations, nonlinear systems of equations, differential equations, and optimization. Similarly, ModelingToolkit is a symbolic modeling language which covers the same interfaces and shuttles to the underlying numerical solvers.

What makes ModelingToolkit interesting is its ability to allow for reusable component-based modeling and its ability to perform automatic simplification of the resulting equations. This allows for efficient hierarchical modeling, where libraries of components define items like engines and air compressors, and then modelers can easily build large models by connecting the existing physical components to generate composed models. The resulting composed model is then simplified to give a representation of he system that is fast to simulate, but without being slow to model.

In this workshop we will showcase how to build steady state models, transient models, and optimization models. We will showcase the ModelingToolkitStandardLibrary as a source of pre-built components that can be used to quickly get started, and we will show how ModelingToolkit interacts with the growing set of tooling around it, including graphical user interfaces (GUIs), specialized solvers, and model analysis tooling. This includes:

- Moment closure expansions
- File readers for importing models (SBML, CellML)
- MathOptInterface special integrations for Optimization
- Structural identifiability analysis
- Linearization

and much more.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YPPSBF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YPPSBF/feedback/</feedback_url>
            </event>
            <event guid='23a2cb37-9675-5fd9-80e2-685e1f18d06a' id='44391' code='9KQJFS'>
                <room>TU-Eindhoven -1.354</room>
                <title>Scientific Machine Learning using Functional Mock-Up Units</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>03:00</duration>
                <abstract>If there is something YOU know about a physical system, AI shouldn&#8217;t need to learn it. How to integrate your system knowledge into an ML development process is the core topic of this hands-on workshop. The entire workshop evolves around a challenging use case from robotics: Modeling a robot that is able to write arbitrary messages with a pen. After introducing the topic and the considered use case, participants can experiment with their very own robot model.</abstract>
                <slug>juliacon2024-44391-scientific-machine-learning-using-functional-mock-up-units</slug>
                <track>SciML</track>
                <logo>/media/juliacon2024/submissions/9KQJFS/Icon_w0WIAUe.png</logo>
                <persons>
                    <person id='47370'>Tobias Thummerer</person><person id='47373'>Lars Mikelsons</person>
                </persons>
                <language>en</language>
                <description>This workshop focuses on the integration of Functional Mock-Up Units (FMUs) into a machine learning topology. FMUs are simulation models that can be generated within a variety of modeling tools (https://fmi-standard.org/). Together with deep neural networks that complement and improve the FMU prediction, so called NeuralFMUs can be created. Example use cases that show the potentials of this technique are given during the introduction. 

The workshop itself evolves around the modeling of a Selective Compliance Assembly Robot Arm (SCARA), that is able to write user defined words on a sheet of paper. A ready to use physical simulation model (FMU) for the SCARA is given and shortly highlighted during the workshop. However, this model &#8211; as any simulation model &#8211; shows some deviations if compared to measurements from the real system. These deviations result from unmodeled so called slip-stick-friction: The pen sticks to the paper until a force limit is reached, but then moves jerkily. A hard to model physical effect &#8211; but not for a NeuralFMU.

The workshop divides into the following slots:
- [5min] Preparing notebook
- [60min] Thematic introduction: Scientific Machine Learning / Hybrid Modeling / SCARA
- [10min] Coding Together: Examination of the used model (FMU) and data
- [75min] Exploring the notebook: Designing and training the hybrid model
- [30min] Wrap-up, Results, Closing the workshop

After completing the workshop, participants will be able to answer the following questions:
- What is hybrid modeling and what are advantages/disadvantages compared to modeling based on physical principles or pure machine learning models?
- How can the physical modeling and machine learning world be connected? What needs to be considered?
- What are NeuralODEs and NeuralFMUs?
- How does the choice of signals between physical model (FMU) and machine learning model influence the training success and computational performance?
- ... and more!

Equipped with the knowledge about the necessary steps to build a proper hybrid model for the SCARA, workshop participants will have an easier time dealing with their own hybrid modeling applications.

Participants only need access to a computer with Julia installed (tested under v1.10) running Windows (tested Windows 10) or Linux (tested Ubuntu 22.04 LTS). To ensure a productive experience for all participants, major parts of modeling and coding are pre-implemented as interactive Pluto-Notebook. This way, participants can explore the topic at their own pace according to their previous knowledge. The notebook stays available after the workshop.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://bit.ly/SciMLUsingFMUs">Workshop Notebook</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/9KQJFS/resources/ScientificMachineLearningUsingFunctionalMockUp_YkqR6HF.pdf">Workshop (Presentation) Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/9KQJFS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9KQJFS/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='TU-Eindhoven 0.242' guid='1da745e7-278a-5376-b440-3709289185ef'>
            <event guid='a4416896-807f-574c-8fb4-ec0fab68244b' id='44390' code='EFCQMK'>
                <room>TU-Eindhoven 0.242</room>
                <title>Julia for Systems Biology; generating personalized models</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>03:00</duration>
                <abstract>Computational models are a valuable tool to study dynamic interactions and the evolution of systems behavior. Our hands-on and interactive  workshop will demonstrate how personalized models can be more rapidly generated in Julia using various SciML packages combined with custom implementations. We will cover the implementation of ODE models in Julia, parameter estimation and model selection strategies including parameter sensitivity and identifiability analysis.</abstract>
                <slug>juliacon2024-44390-julia-for-systems-biology-generating-personalized-models</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='46030'>Max de Rooij</person><person id='47371'>Shauna O&apos;Donovan</person><person id='50655'>Natal van Riel</person>
                </persons>
                <language>en</language>
                <description>Computational models offer a valuable tool for understanding the dynamic interactions between different biological entities, especially in biomedical applications. Personalizing these models with data can shed light on interindividual variation and project future health risks. However, model generation can be computationally expensive. Our hands-on and interactive workshop will demonstrate how personalized models can be more rapidly generated in Julia. We will be mainly using DifferentialEquations.jl combined with Optimization.jl and custom implementations of sensitivity and identifiability analysis approaches. Useing an in-house model of the glucose-insulin system, we will cover the implementation and resolving of ODE systems in Julia, including importing in SBML. We will provide a guide on model selection including parameter sensitivity and identifiability analysis, highlighting efficiencies that can be achieved using Julia. Additionally, we will discuss strategies for parameter estimation, including the benefits of regularization, using a publicly available data set of meal responses. Short presentation will be used to provide necessary background and theory and all methods will be implemented in a Jupyter notebook to facilitate independent learning.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EFCQMK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EFCQMK/feedback/</feedback_url>
            </event>
            <event guid='18f260c2-75ee-54e6-9f47-910514a6d4db' id='39590' code='GFCSRB'>
                <room>TU-Eindhoven 0.242</room>
                <title>Writing and maintaining an exceptional Documentation</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>03:00</duration>
                <abstract>Wanna learn how to write a stellar documentation, that will satisfy newcomers, make them quickly and efficiently learn your software, and even motivate them to become contributors? Then join this workshop all about one of the most important aspects of software development: _documentation!_ You will learn the core principles of good docs, tips &amp; tricks, and you will write good docs yourself, during the workshop!  Plus you&apos;ll learn to create docs and host them online using Documenter.jl!</abstract>
                <slug>juliacon2024-39590-writing-and-maintaining-an-exceptional-documentation</slug>
                <track>General</track>
                
                <persons>
                    <person id='47461'>Morten Piibeleht</person><person id='47449'>Fredrik Ekre</person><person id='43577'>George Datseris</person>
                </persons>
                <language>en</language>
                <description>_**Note: you should bring the codebase you want to document with you in this workshop! The exercises are applied to your own codebase!**_

This workshop is all about documentation. It&apos;s one of the most important aspects of code and software: it makes your code accessible to others, makes their experience with it pleasant, makes them wanna keep using it for the long run, and lowers the threshold for them to become contributors! Whether you are a maintainer of several registered Julia packages, or a just someone with an unregistered codebase that you believe can be useful for others, this workshop will be of use to you!

The workshop will be fully hands-on, and will be composed by several iterations of [lecture -&gt; application] for the covered topics. The main things it will cover are (among others, and depending on the real-time flow):

1. Core principles of what makes a good documentation.
1. The skeleton of a good documentation: exceptional, unambiguous docstrings.
1. The different depths of exposition approach to documentation.
1. The introductory tutorial.
1. Tips &amp; tricks for increasing clarity in the docs.
1. Intro to Documenter.jl: key syntax and functions.
1. Using Documenter.jl+Literate.jl to generate a runnable tutorial.
1. Layouting documentation pages.
1. Using Documenter.jl to compile a documentation locally into HTML.
1. Using Documenter.jl to deploy documentation online on a GitHub repository.
1. Using DocumenterCitations.jl to cite literature robustly.
1. Tips for reducing maintainance burden.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaDynamics/GoodScientificCodeWorkshop/blob/main/block5_documentation/block5_slides_juliacon2024.pdf">Workshop Slides (please download!)</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GFCSRB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GFCSRB/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='TU-Eindhoven 0.264' guid='cc0ba8e9-8574-581c-afb7-0fcee52b5cc7'>
            <event guid='2bb88fe1-4b77-5ebd-967f-ccb46fc8f8fd' id='49355' code='7NGHZP'>
                <room>TU-Eindhoven 0.264</room>
                <title>Introduction to Julia</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>03:00</duration>
                <abstract>Kick-start JuliaCon 2024 with this half-day workshop to pick up the language.  Discover what makes Julia special and start writing your own code right away.  No prior Julia experience is necessary; this workshop is geared towards anyone with basic programming knowledge from another language.</abstract>
                <slug>juliacon2024-49355-introduction-to-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='51766'>Matt Bauman</person>
                </persons>
                <language>en</language>
                <description>The goal of this workshop is to provide you with a broad overview of the language and establish a foundation for the rest of the week.  We will cover Julia&apos;s syntax and data structures as well as its marquee features, including multiple dispatch, its type system, and a few common packages.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7NGHZP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7NGHZP/feedback/</feedback_url>
            </event>
            <event guid='f45c362b-41f1-56cc-bf99-f7db0543066e' id='44416' code='RCZT83'>
                <room>TU-Eindhoven 0.264</room>
                <title>Julia and Rust - Safer abstractions and FFI Workshop</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-09T13:30:00+02:00</date>
                <start>13:30</start>
                <duration>03:00</duration>
                <abstract>Rust is great but not for Julians - unless you come to this talk and learn to go around the rougher spots we face when interacting with Rust for real world scenarios.</abstract>
                <slug>juliacon2024-44416-julia-and-rust-safer-abstractions-and-ffi-workshop</slug>
                <track>General</track>
                
                <persons>
                    <person id='47281'>Miguel Raz Guzm&#225;n Macedo</person>
                </persons>
                <language>en</language>
                <description>We&apos;ll cover stuff like:
- Basic and Advanced LSP setup for the best Rust integration
- Common Rust footguns that will be encountered by Julia folks
- A small project to generate bindings using `cbindgen` and `diplomat`
- Miss BenchmarkTools.jl? We&apos;ll cover the best of `divan` 
- Iterators tricks to speed up your Rust code</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RCZT83/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RCZT83/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='2' date='2024-07-10' start='2024-07-10T04:00:00+02:00' end='2024-07-11T03:59:00+02:00'>
        <room name='REPL (2, main stage)' guid='5c6ee87c-db8a-5bb4-a19f-c5cdf33da22a'>
            <event guid='2a34e5d9-7ced-5e9e-8a18-128aa88fdf51' id='53124' code='ACGZ3A'>
                <room>REPL (2, main stage)</room>
                <title>Opening Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-10T08:50:00+02:00</date>
                <start>08:50</start>
                <duration>00:10</duration>
                <abstract>Opening the first day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</abstract>
                <slug>juliacon2024-53124-opening-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>Opening the first day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ACGZ3A/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ACGZ3A/feedback/</feedback_url>
            </event>
            <event guid='faacdced-d56d-5c7d-8c35-c7197ecc6b28' id='45603' code='3EZMQM'>
                <room>REPL (2, main stage)</room>
                <title>State of Julia 2024</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-10T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>01:00</duration>
                <abstract>It is time again to take a look at what new exciting things have happened with Julia; the language, the package ecosystem and the community. Join us as we explore these advancements and celebrate the progress of Julia in 2024.</abstract>
                <slug>juliacon2024-45603-state-of-julia-2024</slug>
                <track>General</track>
                
                <persons>
                    <person id='47351'>Kristoffer Carlsson</person><person id='47368'>Lilith Hafner</person><person id='53303'>Elliot Saba</person>
                </persons>
                <language>en</language>
                <description>It is time again to take a look at what new exciting things have happened with Julia; the language, the package ecosystem and the community. Join us as we explore these advancements and celebrate the progress of Julia in 2024.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/3EZMQM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3EZMQM/feedback/</feedback_url>
            </event>
            <event guid='671e27aa-dc79-5bdc-9362-8aa64ffc74ef' id='51434' code='NFEKFJ'>
                <room>REPL (2, main stage)</room>
                <title>Juliet&amp;Romeo; making Julia a hard real-time robot language</title>
                <subtitle></subtitle>
                <type>Silver sponsor talk</type>
                <date>2024-07-10T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:15</duration>
                <abstract>Juliet is the first robot programming language that is low-latency real-time multitasking while
being safe and fully dynamic with automatic memory management as supported by the new
real-time virtual machine Romeo. Juliet&amp;Romeo provides a Julia-compatible platform for
machine control, with digital twins and AI features co-existing as Julia packages.</abstract>
                <slug>juliacon2024-51434-juliet-romeo-making-julia-a-hard-real-time-robot-language</slug>
                <track></track>
                
                <persons>
                    <person id='54096'>Klas Nilsson</person><person id='55185'>Kan Wu</person>
                </persons>
                <language>en</language>
                <description>Robots are machines that are system-programmable by robot producers and system
integrators, and then user-programmable by different means for defining the task at hand.
System programs have so far been written in unsafe languages like C++, also used for
implementing an interpreter for the user language. User languages have up to now 
been programmatically very limited and specific for each robot brand, while on the 
other hand supporting interactive motion programming quite well, including 
simplified multi-tasking control and backwards execution as required for a 
robot programming language. It is hereby announced a new more advanced take 
on robot programming, with simplicity for non-programmers in mind:

Juliet is the first robot programming language that is low-latency real-time multitasking while
being safe and fully dynamic with automatic memory management as supported by the new
real-time virtual machine Romeo. Juliet&amp;Romeo (1) provides a Julia-compatible platform for
machine control, with Digital Twins and AI features co-existing as Julia (2) packages.

(1) Juliet&amp;Romeo is a registered trademark of Cognibotics AB and Estun Automation Co, Ltd.
(2) Julia is a registered trademark of Julia Computing Inc.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NFEKFJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NFEKFJ/feedback/</feedback_url>
            </event>
            <event guid='306a112d-9573-5e86-9fb8-92e541229ed4' id='51433' code='HDY8LE'>
                <room>REPL (2, main stage)</room>
                <title>JuliaSim: Bringing Julia to Industrial Modeling and Simulation</title>
                <subtitle></subtitle>
                <type>Platinum sponsor talk</type>
                <date>2024-07-10T10:15:00+02:00</date>
                <start>10:15</start>
                <duration>00:25</duration>
                <abstract>JuliaHub has been developing JuliaSim - a modern modeling and simulation tool that leverages Julia and ModelingToolkit.jl&#8217;s unique capabilities. In this talk, we will show how JulaSim&#8217;s capabilities are being used across industrial, automotive and aviation firms. Gary Mansouri, Chief Architect of Systems MBE at Boeing, will join us for a conversation on the process of model based design.</abstract>
                <slug>juliacon2024-51433-juliasim-bringing-julia-to-industrial-modeling-and-simulation</slug>
                <track></track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person><person id='53734'>Viral B. Shah</person><person id='54983'>Gary Mansouri</person>
                </persons>
                <language>en</language>
                <description>JuliaHub has been developing JuliaSim - a modern modeling and simulation tool that leverages Julia&#8217;s unique capabilities. JuliaSim aims to bridge the two cultures problem in engineering product design, combining vastly better modeling and simulation capabilities along with code deployment capabilities. JuliaSim builds upon the ModelingToolkit.jl framework by adding a GUI as well as a new compiler backend. In addition, JuliaSim also includes a set of advanced model libraries for HVAC, batteries, and Multibody (with new ones being continuously developed). In this talk, we will show how JulaSim&#8217;s capabilities are being used across industrial, automotive and aviation firms.
Gary Mansouri, Chief Architect of Systems MBE at Boeing, will join us for a conversation on the process of model based design and digital engineering related to systems product development. Boeing is a leading global aerospace company and is committed to innovating for the future, leading with sustainability, and cultivating a culture based on the company&#8217;s core values of safety, quality and integrity.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HDY8LE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HDY8LE/feedback/</feedback_url>
            </event>
            <event guid='2ddf8950-73d5-537f-898c-1df6b9c47574' id='43067' code='D3H79J'>
                <room>REPL (2, main stage)</room>
                <title>Adventures in Julia IR: Plundering Core.Compiler</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>This is a tutorial on how to use the tools shipped with Julia in Core.Compiler to manipulate the Julia IR and thus change how the program is compiled.
It includes running custom code transforms (like for autodiff), custom optimization passes, and introducing custom intrinsics.
This talk is for advanced Julia users, who want to understand and (ab)use the internals.</abstract>
                <slug>juliacon2024-43067-adventures-in-julia-ir-plundering-core-compiler</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46054'>Frames Catherine White</person>
                </persons>
                <language>en</language>
                <description>Slides: https://raw.githack.com/oxinabox/JuliaCon2024_IR_talk/main/reveal.js/index.html

Julia uses several intermediate representations (IR) during the compilation process.
The abstract syntax tree (AST), untyped IR, typed IR, LLVM IR.
Different transforms happen as these different stages, and they can be extended by you.
In contrast to previous talks presented at JuliaCon, the focus of this talk is on typed-IR, rather than the untyped IR commonly manipulated with Cassette or IRTools.jl.

This talk will cover in detail how passes transform the code, showing how to implement and deploy custom passes for optimization.
This will allow you to control how your code is optimised, or even introduce new semantics beyond what is possible at the lexical/syntax level via conventional metaprogramming.

The exact content and methods presented in this talk are likely to break without warning, as they use extensively the internals of the language which are subject to change without regards to SemVer.
However, the general learning and approach will remain relevant.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/D3H79J/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/D3H79J/feedback/</feedback_url>
            </event>
            <event guid='f4b9bef4-284c-53e2-a343-43c6af67b6ea' id='44428' code='D88XFU'>
                <room>REPL (2, main stage)</room>
                <title>Compiler plugins and non-native execution caching</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>Recent improvements to compilation caching in Julia have made it feel a lot more snappy :)
Except when you use non-native compilation (think GPUs or Automatic Differentiation) :(
In this talk I will dive into recent progress on non-native compilation caching, how Julia performs caching in the first place and my thoughts on compiler plugins</abstract>
                <slug>juliacon2024-44428-compiler-plugins-and-non-native-execution-caching</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47396'>Valentin Churavy</person>
                </persons>
                <language>en</language>
                <description>Compiler plugins have a rich history in Julia, starting with approaches like Cassette.jl (and it&apos;s cousin IRTools.jl) that used generated function and code reflection to implement non-standard semantics.
These were followed by a family of tools that extend the compiler interface (`AbstractInterpreter`) and method overlay tables which currently power GPUCompiler.jl and others.

While these tools can perform *within* Julia session caching, they currently can not perform *across* session caching leading to large latency spikes. We will walk through Julia&apos;s caching infrastructure, explore the challenges involved and discuss a currently proposed solution.

A secondary challenge with the use of `AbstractInterpreter` based tools is that there is no robust execution story, there is hope that the solving the non-native caching problem will also enable a solution for the execution of non-native code.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/D88XFU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/D88XFU/feedback/</feedback_url>
            </event>
            <event guid='57258fc6-75eb-5727-b071-003ca5d3c3d7' id='44189' code='U739BS'>
                <room>REPL (2, main stage)</room>
                <title>Secure numerical computations using fully homomorphic encryption</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Homomorphic encryption allows one to perform computations on encrypted data and obtain the
same result as with the original, unencrypted data. This makes it possible to securely
process sensitive data in untrusted compute environments. In this talk, we will demonstrate
how to easily set up and run homomorphically encrypted computations in Julia and show
which kind of operations are possible. We will present examples for secure algorithms and
discuss challenges and limitations in practice.</abstract>
                <slug>juliacon2024-44189-secure-numerical-computations-using-fully-homomorphic-encryption</slug>
                <track>General</track>
                
                <persons>
                    <person id='44305'>Michael Schlottke-Lakemper</person><person id='47188'>Arseniy Kholod</person>
                </persons>
                <language>en</language>
                <description>Today&apos;s widespread availability of commercial cloud providers makes it possible for many researchers and companies to offload compute-intensive tasks to machines in the cloud. However, processing sensitive information such as engineering, financial, or medical data on cloud systems comes with an inherent risk of data exposure or theft in case the systems are compromised. Homomorphic encryption can mitigate this risk by not requiring any trust in the compute environment: Since the data is encrypted before being transferred to the cloud, the underlying raw information cannot be obtained by a malicious party as long as the decryption key is stored securely on premises.

There exist several open-source libraries for performing homomorphic encryption, most of which are implemented in compiled languages such as C/C++. They are often nontrivial to use and require a compiler (and frequent recompilation) during development. Our goal is therefore to lower the threshold for using modern, high-performance homomorphic encryption implementations and to facilitate rapid prototyping for experimentation with new applications. For this purpose, we have created two Julia packages, [OpenFHE.jl](https://github.com/sloede/OpenFHE.jl) and [SecureArithmetic.jl](https://github.com/sloede/SecureArithmetic.jl). OpenFHE.jl wraps the state-of-the-art C++ library [OpenFHE](https://github.com/openfheorg/openfhe-development) and provides Julia bindings via [CxxWrap.jl](https://github.com/JuliaInterop/CxxWrap.jl). All required binaries are available as precompiled JLL packages and are downloaded automatically upon installation. SecureArithmetic.jl is a convenience layer on top of OpenFHE.jl, allowing one to express homomorphic encryption algorithms in a more succinct and easier-to-understand manner. The idea is that one can use SecureArithmetic.jl for initial prototyping of new ideas, and to then switch to OpenFHE.jl primitives only where more detailed control is necessary.

We will begin this talk with a brief introduction to the fundamental concepts of homomorphic encryption in general and the CKKS scheme for approximate computations with real numbers in particular. This is followed by a demonstration of how to use homomorphic encryption in Julia using OpenFHE.jl and SecureArithmetic.jl. We will present some examples for secure algorithms building upon these packages, such as the numerical simulation of partial differential equations. Finally, we will discuss some of the challenges experienced when working with homomorphic encryption and analyze practical limitations such as performance or algorithmic complexity.

The target audience for this talk is computational scientists and research software engineers interested in secure numerical computations with Julia. No prior knowledge of homomorphic encryption is required. Some familiarity with numerical methods for partial differential equations is helpful but not strictly necessary.

Repository with presentation slides and reproducibility code:
https://github.com/hpsc-lab/talk-2024-juliacon-secure_numerical_computations</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/U739BS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/U739BS/feedback/</feedback_url>
            </event>
            <event guid='b8df64e6-a211-52b6-86ce-88067e6d9aa3' id='44163' code='F9JTK3'>
                <room>REPL (2, main stage)</room>
                <title>The cryptography packages in Julia &#128272;: What is missing?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Cryptography is a necessity for everyday life as well as for industrial applications. However, Julia packages seem to be lagging behind. What can we do about this?</abstract>
                <slug>juliacon2024-44163-the-cryptography-packages-in-julia-what-is-missing</slug>
                <track>General</track>
                
                <persons>
                    <person id='47156'>Jorge Alberto Vieyra Salas</person>
                </persons>
                <language>en</language>
                <description>This is an analysis and comparison of the existing packages in Julia and what is needed to be as complete as other programming languages, e.g. python and rust.

Python has a plethora of cryptographic packages that are very easy to use and are widespread.  This for sure has helped on python adoption. Sometimes vendors write solutions in their preferred programming language, e.g. Java, C, C#, etc, and also they go out of their way to also have a python version.
Other languages like Rust and Go also have a large cryptography ecosystem, sometimes more than one package for the same application.

In this talk I will survey the current state of cryptographic packages that are available in Julia and what in my opinion is needed to enable julia wider adoption in other areas besides scientific computing.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/F9JTK3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/F9JTK3/feedback/</feedback_url>
            </event>
            <event guid='00218541-ad06-53c6-bde8-e6c3cff98aac' id='43386' code='CYJ7V7'>
                <room>REPL (2, main stage)</room>
                <title>`Memory` in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Julia 1.11 rewrites Array from being an opaque type implemented mostly in C to being just another type in Julia. In order to do this, we introduced a new, more primitive type for homogenous data storage, called Memory. Then we could re-use that work to add an AtomicMemory type that allow for better expressing multi-threaded memory operations. And along the way, also added the full set of atomic operators to globals, known as Binding types. In this talk, we  we will look at the new Memory type, t</abstract>
                <slug>juliacon2024-43386-memory-in-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46444'>Jameson Nash</person><person id='46464'>Oscar Smith</person>
                </persons>
                <language>en</language>
                <description>Prior to Julia 1.11, Array was a special object in Julia. Operations like resizing and creation had to be done completely in C, which created overhead and made some of the code much harder to write and difficult for the compiler to optimize. Array also had some features that were unnecessary for some uses (e.g. resizing and multiple dimensions) which imposed a small cost. To fix this, in https://github.com/JuliaLang/julia/pull/51319, we added a new, lower level Memory type, which allowed re-implementing all of Array in Julia code on top of it. This moved much of the complexity around resizing and copying an array into pure Julia code. And it allowed a few important data types, that don&#8217;t need all of Array&#8217;s features (such as Dict), to avoid a small amount of overhead. This has led to some great performance improvements. For example, push! on Array is now roughly ~2x faster, and a number of types in Base now use slightly less memory.
Along the way, we also added support for doing more with atomic operations (especially https://github.com/JuliaLang/julia/pull/52868). By making a simpler Memory type as the basis for an Array, we could also introduce an AtomicMemory that reused most of the same code (and even shares the GenericMemory base class!). This gives both multi-threaded and single-threaded Julia programs alike new and powerful ways of expressing high performance algorithms.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CYJ7V7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CYJ7V7/feedback/</feedback_url>
            </event>
            <event guid='583534cf-4254-5ecb-b2f7-31e7b8e95761' id='44366' code='UKX9BF'>
                <room>REPL (2, main stage)</room>
                <title>App support in Pkg</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>This presentation explores the design and implementation of a new feature in Pkg, enabling the installation of &quot;apps&quot; - Julia programs launched directly by their name in the terminal.</abstract>
                <slug>juliacon2024-44366-app-support-in-pkg</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47351'>Kristoffer Carlsson</person>
                </persons>
                <language>en</language>
                <description>Most Julia packages function as &quot;libraries,&quot; loaded by users or other packages, with their functions (API) being subsequently called. However, certain Julia packages are better categorized as &quot;applications&quot; where you don&apos;t really call any functions in them but either communicate with them though stdin and stdout or via a GUI. Notable examples include Pluto.jl and IJulia.jl. Currently, to launch these, one must initiate a Julia session, load the package, and execute specific commands like `Pluto.run()` or `IJulia.notebook()`.

For such application-oriented packages, initiating them by simply typing their name in the terminal would be more convenient. Additionally, installing applications in a shared environment with other packages can lead to compatibility conflicts due to dependency issues.


This presentation introduces a new functionality in Pkg where a Julia package can declare itself to contain applications. Users can then effortlessly install these applications using Pkg, making them readily executable from the terminal. This feature encompasses handling updates, precompilation, and other aspects to ensure a seamless user experience.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/UKX9BF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UKX9BF/feedback/</feedback_url>
            </event>
            <event guid='c766554d-46c7-53f5-bac6-16e1ec916dc9' id='44483' code='GT98W8'>
                <room>REPL (2, main stage)</room>
                <title>JuliaScript.jl - simply run julia scripts at max speed</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>JuliaScript.jl provides `juliascript` runner with which you really just do `juliascript yourscript.jl`.

Enjoy speed for julia scripts!</abstract>
                <slug>juliacon2024-44483-juliascript-jl-simply-run-julia-scripts-at-max-speed</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47441'>Stephan Sahm</person>
                </persons>
                <language>en</language>
                <description>When building Julia scripts myself, I couldn&apos;t find any way to make them simply fast out of the box. This package solves this.

The difficulty behind the scene is that Julia&apos;s precompilation is build for packages, not for scripts. Hence `juliascript` automatically translates your script into a respective package with optimal precompilation. A single runner, everything automated.

Furthermore, `juliascript` is also a tiny wrapper around PackageCompiler.jl, but more on this in the talk.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GT98W8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GT98W8/feedback/</feedback_url>
            </event>
            <event guid='d456b1cc-e656-52b2-86f8-8ad43e777b36' id='44421' code='FR8MVT'>
                <room>REPL (2, main stage)</room>
                <title>ScopedValues -- What are they good for</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>ScopedValues are a new language feature in Julia 1.11, in this talk I will discuss their uses and some implementation details.</abstract>
                <slug>juliacon2024-44421-scopedvalues-what-are-they-good-for</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47396'>Valentin Churavy</person>
                </persons>
                <language>en</language>
                <description>ScopedValues allow for the propagation of values using dynamic scope, that means that in contrast to global values different tasks executing at the same time can see different values.

This makes ScopedValues a useful tool for propagation of options in a composable manner.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FR8MVT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FR8MVT/feedback/</feedback_url>
            </event>
            <event guid='2058e484-b334-5439-b49f-5b9e09765c1f' id='44044' code='RW8RQS'>
                <room>REPL (2, main stage)</room>
                <title>Renovating Automated Dependency Management in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>A deep dive into dependency management processes, associated tooling, and lessons learned integrating with Julia&#8217;s package management system from a different technology stack.</abstract>
                <slug>juliacon2024-44044-renovating-automated-dependency-management-in-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47043'>Joris Kraak</person><person id='47035'>Anant Thazhemadam</person>
                </persons>
                <language>en</language>
                <description>For the longest time, dependency management in Julia, for all its pros and cons, has had a single answer - CompatHelper. However, there is a much larger ecosystem built around dependency management tooling in general, which doesn&#8217;t support Julia.

This talk is primarily about dependency management processes, the current state of dependency management in Julia, and how we added Julia support to Renovate, a very popular dependency management tool.

We will be giving an overview of the landscape of dependency management tools, highlighting standardised dependency management processes, while emphasising the need for a standardised and popular system that has a wider scope. We will evaluate the merits (and demerits) of the popular options available, keeping in mind their scope of dependency management.

In particular, we will talk about Renovate, and the efforts to add Julia support to it. We will discuss what &#8220;adding Julia support to Renovate&apos;&apos; entails. This covers the underlying structure of how Renovate works giving insight into the processes and workflows it would support, and more importantly, how we integrated it to work with Julia (specifically, with Julia&apos;s package management system).

Of course, any such endeavour to add tooling support is not without challenges, and as such, we will discuss the challenges we&#8217;ve faced and what it would take to overcome them.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RW8RQS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RW8RQS/feedback/</feedback_url>
            </event>
            <event guid='cdb0800a-9c66-5830-8eb8-347e8dfa4f5c' id='44478' code='TKLH9U'>
                <room>REPL (2, main stage)</room>
                <title>Pkg en route: the logistics behind the package manager</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Almost every Julia user is well acquainted with the package manager, *Pkg*, and uses it to add, update, and remove packages from their package environments. Behind the scenes Pkg is supported by a global distribution network of Julia-powered *package servers* that host registries, packages, and artifacts. In this talk we will take a look at how this infrastructure is configured and how it is being used to deliver packages from developers to users.</abstract>
                <slug>juliacon2024-44478-pkg-en-route-the-logistics-behind-the-package-manager</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47449'>Fredrik Ekre</person>
                </persons>
                <language>en</language>
                <description>When adding or updating a package using Pkg the first step is to *resolve* the package environment. The output of the resolver is the version of the package, and the versions of all dependencies, that should be installed. The next step is to make sure the required packages and artifacts are available on the users machine. Since installation directories of packages (`~/.julia/packages`) and artifacts (`~/.julia/artifacts`) are shared between all package environments it is quite likely that some of the required resources are already available, but the remaining ones must must be downloaded.

By default Pkg requests missing resources from package servers hosted by the JuliaLang organization at &lt;https://pkg.julialang.org&gt;: a global distribution network of over 50 servers spanning 10 server regions and 5 continents. Each server runs an instance of [PkgServer.jl](https://github.com/JuliaPackaging/PkgServer.jl) which is an open source reference implementation of a package server written in Julia.

In this talk we will take a detailed look at package server infrastructure. We will discuss how Pkg interacts with the servers (the simple *package server protocol*) and the implementation of PkgServer.jl. We will learn how new package releases are routed from developers to users. We will take a look at how &lt;https://pkg.julialang.org&gt; is designed and configured in order to minimize data transmission and latency, and show some interesting data and statistics gathered from the server network. Finally we will discuss how one can setup a custom package server for a company, a compute cluster, or simply for your local machine.

Slides: https://docs.google.com/presentation/d/1UgRIHlrc3C2Li3YL0kwnnbXMv31nXXLY1bR-Y2F0_sQ/edit?usp=sharing</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TKLH9U/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TKLH9U/feedback/</feedback_url>
            </event>
            <event guid='076d5e31-fe5d-56fe-ab79-52060710ef8e' id='44398' code='KGQ8KL'>
                <room>REPL (2, main stage)</room>
                <title>The `public` keyword and how public APIs work in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>A well defined public API enables users to update a package with confidence that their code will not break and lets IDEs and the REPL help users discover the public functionality of a package. This talk describes currently available mechanisms and community conventions for declaring a public API, highlights the new `public` keyword and its use in tooling, and discusses future work to help declare APIs more clearly and help folks respect APIs more easily.</abstract>
                <slug>juliacon2024-44398-the-public-keyword-and-how-public-apis-work-in-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47368'>Lilith Hafner</person>
                </persons>
                <language>en</language>
                <description>## Motivation for declaring a public API

- facilitates upgrading packages in conjunction with symver
- documents useful functionality (both to humans and to tooling)
- the existence of a well defined public API prevents folks from using an implicit definition like &quot;is it documented&quot; and therefore allows folks to document internals

## The `public` keyword and it&apos;s role in existing conventions

- &quot;if it&apos;s in the manual it&apos;s public&quot; and why that is problematic for REPL users
- syntax for marking a symbol public
- the current &quot;if it&apos;s marked public and documented&quot; convention that Julia itself follows
- what to do about behavior not tied to a specific symbol
- interfaces

## What exactly is marked public
- bindings are marked public
- publicity is recursive
- exports are automatically publicised

## Tooling support
- REPL helpmode warns displaying the docstring of a nonpublic binding
- REPL autocomplete (#51327)
- other tooling that is added or in progress by the time of the talk

## Future work

- marking fields of a struct public
- disabling internal access by default (#52314)
- formally specifying interfaces</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaLang/julia/pull/50105">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KGQ8KL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KGQ8KL/feedback/</feedback_url>
            </event>
            <event guid='1c29b058-567d-5bc4-81fe-4dfb6e395abf' id='45602' code='RDGSFV'>
                <room>REPL (2, main stage)</room>
                <title>Materials Modeling: Bonding across atoms, code, and people</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-10T17:40:00+02:00</date>
                <start>17:40</start>
                <duration>01:00</duration>
                <abstract>Current solutions to key 21st-century challenges are fundamentally limited by the functional properties of known materials. Designing new materials increasingly relies on computational modeling leading to research questions across multiple scales and scientific fields. While we believe Julia is well-poised to aid with tackling these challenges, Julia tools cannot simply duplicate the many well-established software solutions. We discuss challenges for Julia and outline opportunities going forward</abstract>
                <slug>juliacon2024-45602-materials-modeling-bonding-across-atoms-code-and-people</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46279'>Michael F. Herbst</person><person id='50805'>Rachel Kurchin</person>
                </persons>
                <language>en</language>
                <description>Current solutions to key 21st-century challenges (such as climate change, food insecurity, healthcare, and communications) are fundamentally limited by the functional properties of known materials. Designing new materials increasingly relies on computational modeling with state-of-the-art workflows frequently interweaving first-principles with empirical modeling as well as data-driven approaches. To make advances, we often must establish novel connections across fields such as physics, chemistry, computer science, and applied math. The Julia language and user community are well-poised to address these challenges. However, with many well-established software solutions and their respective user communities already in existence, Julia tools cannot just duplicate existing functionality. Rather, it is crucial to integrate and add value to existing (often monolithic) codebases and software ecosystems. In this talk, we will discuss existing efforts in this area --- both by ourselves as well as the broader JuliaMolSim community --- and outline remaining challenges and opportunities going forward.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://juliamolsim.org">Github</link>
                
                    <link href="https://michael-herbst.com/slides/juliacon2024">Slides (updated as we go along)</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RDGSFV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RDGSFV/feedback/</feedback_url>
            </event>
            <event guid='c587865f-7232-559a-9213-c51d6cfdcef0' id='53123' code='NGLEET'>
                <room>REPL (2, main stage)</room>
                <title>Closing Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-10T18:40:00+02:00</date>
                <start>18:40</start>
                <duration>00:05</duration>
                <abstract>Closing the first day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</abstract>
                <slug>juliacon2024-53123-closing-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>Closing the first day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NGLEET/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NGLEET/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='If (1.1)' guid='e430f2f2-8d07-5f24-97d4-9f303ac45cce'>
            <event guid='7f477fb7-0cd1-5001-a090-ed76dcae21d6' id='44356' code='RM9TMC'>
                <room>If (1.1)</room>
                <title>MIToS Evolution: Riding the Bioinformatics Wave</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:10</duration>
                <abstract>I will introduce the latest enhancements in MIToS. MIToS is a Julia package crucial in bioinformatics for analyzing protein sequences and structures. It has undergone several updates, including modernized Pfam, SIFTS, and PDB modules and advanced merging operations in the MSA module. A cookbook has also been introduced, offering practical insights into MIToS&apos; capabilities. Attendees can learn about the current state and exciting future of MIToS.</abstract>
                <slug>juliacon2024-44356-mitos-evolution-riding-the-bioinformatics-wave</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='47343'>Diego Javier Zea</person>
                </persons>
                <language>en</language>
                <description>In this presentation, I will explore the latest updates and future directions of MIToS, an essential Julia package for bioinformatics that focuses on protein sequences and structures. MIToS has undergone several updates to keep up with the rapidly changing landscape of bioinformatics, especially in this era of deep learning and big data.
The talk will begin with a brief introduction to the evolution of bioinformatics to understand the importance and impact of the recent MIToS updates. I will then focus on some of the most significant adaptations, highlighting the new concatenation capabilities of the MSA module. Next, I will present the MIToS Cookbook to demonstrate how attendees can effectively utilize MIToS for various bioinformatics tasks. Finally, I will conclude the talk with a future outlook for MIToS, discussing potential upcoming features and modifications. I will also discuss the planned integration with BioJulia, emphasizing the synergy between MIToS and other Julia community packages.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/diegozea/MIToS.jl">MIToS&apos; GitHub Repo</link>
                
                    <link href="https://github.com/diegozea/MIToS.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/RM9TMC/resources/MIToS_Evolution_E74PlIW.pdf">Talk Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/RM9TMC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RM9TMC/feedback/</feedback_url>
            </event>
            <event guid='d535794b-7ca0-57c8-92fe-9f7eb88585e8' id='43590' code='K7VK3D'>
                <room>If (1.1)</room>
                <title>Combined Stochastic Models for Cancer Patient Trajectories</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>This project addresses a critical challenge in clinical data analysis, particularly in oncology. We propose a mathematical model for cancer patients&apos; disease progression, merging stochastic dynamics from various data modalities. Utilizing Bayesian inference, we illustrate this with a simulated study on tumor growth, metastases, and patient survival. Leveraging Julia, our approach provides estimation of combined stochastic models, paving the way for comprehensive clinical trajectory analysis.</abstract>
                <slug>juliacon2024-43590-combined-stochastic-models-for-cancer-patient-trajectories</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='46632'>Vincent Wieland</person>
                </persons>
                <language>en</language>
                <description>One of today&apos;s foremost challenges in analyzing clinical data is the integration of different data modalities. Patients -- especially in oncology -- undergo a wide range of diagnostics which yield diverse measurement types including both discrete and continuous quantities, often in a longitudinal setting, as well as time-to-event data.
In this project, we develop a computational approach for combining the different stochastic dynamics underlying such measurements into one mathematical model describing cancer patients&apos; disease progression, and demonstrate the use of Bayesian inference for the resulting set of model parameters.
To illustrate this, we consider a simple example where one observes the size of a primary tumor, the number of different tissues affected by metastases, and the survival status of a patient. The first is growing continuously and modeled as an ordinary or stochastic differential equation, whereas the second and third are discrete events that are described as Poisson jump processes with intensities dependent on the other components. Additionally, we introduce measurement noise on the tumor growth observations. The resulting multidimensional process together with its discrete observations can be seen as a Hidden Markov Model whose parameters are to be estimated.
We examine various different models from this class, which mainly differ in the description of the continuous primary tumor growth, using simulated datasets. The first use deterministic growth laws through an ODE, the last uses a version of a geometric Brownian Motion to represent the tumor size. All models are further extendable via the parametrization of the transition rate parameters through different covariates.
For the simulation of the continuous processes modelling the tumor growth we use the functionalities of the SciML ecosystem in Julia. However, for the simulation of the two combined jump processes a self-implemented modified next reaction method algorithm showed the most accurate and reliable performance. Therefore, we couple the different simulation algorithms for robust creation of artificial data.
Model parameters are then learned using a likelihood-based Bayesian inference framework. In the simplest ODE case, it is possible to retrieve a closed form of the corresponding likelihood function, which can then be maximized. The posterior distribution of the parameters is then be obtained by the use of MCMC sampling methods. For the SDE case, we aim for the computation of a partly analytical and partly approximated likelihood function for the maximum-likelihood estimation and sampling. Furthermore, we will leverage advanced Particle filter algorithms, a class of Markov chain Monte Carlo methods targeting the posterior distribution by approximating the likelihood trough repeated sampling of a population of particles.
The performance of the model, including uncertainty quantification and robustness, is evaluated through an extensive simulation study. We showcase results obtained using an implementation solely in the Julia programming language. The SciML ecosystem provides us with a framework for expressing and solving continuous stochastic processes, whereas Julia&apos;s modularity makes it easy to combine these with our own simulation routines for jump processes. Additionally, it also allows a tidy integration of analytical and numerically approximated functions in the simulation-based inference scheme of particle filters. The latter benefits crucially from Julia&apos; speed and parallelization.
In summary, this newly proposed approach of combining different dynamics into one stochastic model creates valuable groundwork for clinical trajectory analysis, as it allows for a more holistic description of patient outcomes. Furthermore, it sheds light on the interplay of different stochastic processes joined into one single process and starts the development of efficient simulation and estimation methods for such classes of combined stochastic models using the Julia programming language.
In future work, this can be further extended to study the effect of different therapy choices on patients&apos; survival. Additionally, mixed effects can be included to better incorporate inter-individual variability.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/K7VK3D/resources/JuliaCon2024-Cancer_project_talk_d8bjLph.pdf">Talk Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/K7VK3D/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/K7VK3D/feedback/</feedback_url>
            </event>
            <event guid='8a519af7-478f-55a4-b3aa-bf7ad697e45c' id='44342' code='DFNXCK'>
                <room>If (1.1)</room>
                <title>Structural Bioinformatics with BiochemicalAlgorithms.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>BiochemicalAlgorithms.jl is a redesign of the popular **B**iochemical **Al**gorithms **L**ibrary (BALL), the largest open source C++-framework of its kind. We focused on three main design goals: efficiency, ease of use and **r**apid **a**pplication **d**evelopment (RAD). Our library provides functionality for file I/O, molecular modelling, molecular mechanics methods, and molecular visualization, and hence can serve as a foundation for developing applications within the Julia ecosystem.</abstract>
                <slug>juliacon2024-44342-structural-bioinformatics-with-biochemicalalgorithms-jl</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='47342'>Jennifer Leclaire</person>
                </persons>
                <language>en</language>
                <description>Development times play a crucial role in the process of implementing structural bioinformatics applications. Ideally, frameworks for molecular modelling and simulation are easy and intuitive to use without sacrificing too much computational efficiency or numerical stability. BiochemicalAlgorithms.jl is our attempt of providing such a framework. BiochemicalAlgorithms.jl is a complete Julia-centric redesign of the popular **B**iochemical **Al**gorithms **L**ibrary (BALL), the largest open source C++-framework for structural bioinformatics, created in 1996 [1,2].
 
Switching our development from C++ to Julia has greatly simplified conforming to our design goals in many ways. While setting up a development environment for BALL is a highly nontrivial task these days, installing BiochemicalAlgorithms.jl is trivial. The code in BiochemicalAlgorithms.jl is -- in our opinion -- often much more readable, with greatly reduced boilerplate, and much closer to the abstract algorithmic formulations. The availability of high-quality numerical code for many problems we face in structural bioinformatics also helps to greatly improve code quality and accelerates development.
 
While the port to Julia is not yet feature-complete, BiochemicalAlgorithms.jl already provides well documented core data structures for typical molecular entities such as atoms, bonds, molecules, etc. These core data structures are accompanied by a selection of molecular modelling and mechanics techniques. Software packages in structural bioinformatics often focus on one or two specific tasks such as the implementation of a force field. In contrast, BiochemialAlgorithms.jl, accompanied by the visualization counterpart BiochemicalVisualization.jl, attempts to cover the full molecular modelling pipeline, containing building blocks such as file import and export of several molecular file formats, methods for inferring missing atoms, bond building algorithms, molecular force fields, structural optimization, and docking algorithms.
 
BiochemicalAlgorithms.jl&apos;s structured interface enables the rapid prototyping of ideas, such as the implementation of new energy functions or docking algorithms, as well as fully featured applications, and is suited for the interoperability with other Julia packages for molecular modelling like Molly.jl [3]. Together with Julia&apos;s excellent ecosystem for scientific machine learning, it can form the basis for novel applications of deep learning techniques (using, e.g.,  Flux.jl[5]) in the context of molecular modelling and simulations, or of Bayesian optimization techniques  (using Turing.jl[4]) for molecular docking.
 
In our talk, we will show how to perform common tasks in structural bioinformatics, such as reading molecular structures from files, preprocessing them to add missing atoms and bonds, inferring atom types, performing structural optimization, and run a docking algorithm. Further, we will demonstrate how our framework can be used to easily implement new methods and algorithms.
 
 
### References
[1] Hildebrandt, A. et al. BALL - biochemical algorithms library 1.3. BMC Bioinformatics 11, 531 (2010).  
[2] Kohlbacher, O. &amp; Lenhof, H.-P. BALL&#8212;rapid software prototyping in computational molecular biology. Bioinformatics 16, 815&#8211;824 (2000).  
[3] Greener, J. G. Differentiable simulation to develop molecular dynamics force fields for disordered proteins. 2023.08.29.555352 Preprint at https://doi.org/10.1101/2023.08.29.555352 (2023).  
[4] Innes, M. et al. Fashionable Modelling with Flux. Preprint at https://doi.org/10.48550/arXiv.1811.01457 (2018).  
[5] Ge, H., Xu, K. &amp; Ghahramani, Z. Turing: A Language for Flexible Probabilistic Inference. in Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics 1682&#8211;1690 (PMLR, 2018).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/hildebrandtlab/BiochemicalAlgorithms.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DFNXCK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DFNXCK/feedback/</feedback_url>
            </event>
            <event guid='2716fe6a-36ea-5ec9-bbb1-916ec0c379d1' id='44353' code='RGCLVE'>
                <room>If (1.1)</room>
                <title>The personalisation of cardiovascuar models using Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Personalised computational models of cardiovascular physiology have the potential to revolutionise patient-specific diagnosis and prediction. This study introduces a novel workflow that efficiently identifies the optimal bio-markers for cardiovascular personalisation, leveraging ModellingToolKit.jl, GlobalSensitivity.jl and QuasiMonteCarlo.jl. The outcome of our research is a more reliable and more practically focused personalisation of complex cardiovascular models.</abstract>
                <slug>juliacon2024-44353-the-personalisation-of-cardiovascuar-models-using-julia</slug>
                <track>Biology &amp; Life Sciences</track>
                <logo>/media/juliacon2024/submissions/RGCLVE/Workflow_Harry_fLOs0DQ.png</logo>
                <persons>
                    <person id='47339'>Harry Saxton</person>
                </persons>
                <language>en</language>
                <description>1 - Background and the Problem

Cardiovascular diseases stand as the foremost cause of death globally. Surgeries and treatments aimed at cardiovascular issues carry inherent risks and may not achieve desired clinical outcomes, influenced by patients&apos; specific physical conditions. In the operating theatre, interventional cardiologists have access to increasingly sophisticated measurements for assessing patient vasculature. However, certain physiological quantities remain either indirectly measurable or are prone to measurement noises. Mathematical and computational models play a crucial role in supporting clinical diagnosis and decision-making through in silico Decision Support Systems. Yet, the integration of these in silico models into clinical practice is hindered by the challenge of personalisation - determining the required values for individual patients&apos; model input parameters, some of which are bio-markers, based on measured clinical data. This process involves solving an inverse problem, marked by its complexity, uncertainty, and computational intensity.

2 - Methods

Recent advancements in computational data assimilation have led to the development of various cardiovascular models, utilising hemodynamics and other low-order models to quantitatively establish the interdependence of a patient&#8217;s systemic and pulmonary vasculature properties. We employ Zero-dimensional (0D) models, mapping physiological variables, such as pressure, volume, and flow, to electrical counterparts like voltage, charge, and current.

Each physiological compartment has a distinct representation with mechanical parameters portraying the &quot;true&quot; physiology of a patient. Structural identifiability analysis is employed to ascertain the estimability of parameters and necessary measurements for personalisation. Sensitivity analysis uncovers the most influential parameters affecting model outputs, while parameter orthogonality analysis examines the independent effects of individual parameters. Through a combination of sensitivity and orthogonality investigations, we identify a set of unique input parameters optimisable to a patient&#8217;s data using powerful techniques like the Unscented Kalman Filter (UKF). This comprehensive approach, as illustrated in the attached figure, enhances the precision of personalising complex cardiovascular models, advancing their clinical utility and effectiveness.

3 - The Julia Aspect

While the research conducted is incredibly applied, there is a computational workflow enabling the intersection between clinical practices and in-silico investigations. In the talk, we examine the different stages of the proposed personalisation workflow and highlight how Julia aids us at each stage. From utilising ModellingToolKit.jl to create cardiovascular models to using GlobalSensitivityAnalysis.jl for studying model uncertainty, along with other packages enabling the generation of personalised cardiovascular models.

We will spotlight some of the main challenges encountered in this process and how we&apos;ve overcome them, such as performing parallel simulations on varying data types and accessing observed variables from MTK. This talk outlines a workflow for those interested in model analysis and emphasises how Julia can be utilised to produce clinically impactful work.

4 - Achievements and Impact

This study introduces a novel workflow efficiently identifying optimal bio-markers for cardiovascular personalisation, incorporating practical and structural identifiability, sensitivity analysis, orthogonality, and Kalman-based optimisation methods to determine the most informative and clinically usable model inputs. The outcome of our research is a more reliable and practically focused personalisation of complex cardiovascular models, empowering clinicians to provide tailored patient-specific treatments. This advancement has significant potential in enhancing cardiovascular diagnosis and ultimately improving patient outcomes. This talk aims to provide others with a workflow on utilising extensive model analysis packages to create a reliable interpretation of any model.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RGCLVE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RGCLVE/feedback/</feedback_url>
            </event>
            <event guid='2ba1f55a-f88c-5636-adf3-d88f67ed7ef3' id='44147' code='ZR9VRZ'>
                <room>If (1.1)</room>
                <title>Tools for agent-based modelling in developmental biology</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Agent-based modeling is a common tool to explore cell migration and morphogenesis. Faced with biology&apos;s complexity, such models bring several implementation challenges that require many different tools. 

In this talk, I want to present several packages that support agent-based modeling, such as **SpatialHashTables.jl**, **BoundedDegreeGraphs.jl**, and **AgentTools.jl**. I will also briefly discuss a numerical method (PBD) suitable for non-overlap conditions.</abstract>
                <slug>juliacon2024-44147-tools-for-agent-based-modelling-in-developmental-biology</slug>
                <track>Biology &amp; Life Sciences</track>
                <logo>/media/juliacon2024/submissions/ZR9VRZ/bitmap_QLJOvlW.png</logo>
                <persons>
                    <person id='47939'>Steffen Plunder</person>
                </persons>
                <language>en</language>
                <description>Agent-based models (ABM) come in a large variety of different forms and structures, which makes their unified handling challenging and requires a language like Julia, where developers of new models can implement high-performance functions. With [Agents.jl](https://github.com/JuliaDynamics/Agents.jl), Julia already has a great platform for agent-based modeling, which integrates well with the ecosystem.  Due to the vast scope of agent-based modeling, it is clear that the fundamental logic of some models requires further tools for their efficient implementation. In my talk, I will present a couple of complementary tools that attempt to solve particular challenges that are present, for example, in applications in biology. The packages are:
- [SpatialHashTables.jl](https://github.com/SteffenPL/SpatialHashTables.jl), for neighbor detection in unbounded domains with an ABM-friendly interface. A future aim of this package is, in particular, to allow execution on GPUs or even webassembly. 
- [BoundedDegreeGraphs.jl](https://github.com/SteffenPL/BoundedDegreeGraphs.jl), for allocation-free graphs which allow efficient interaction networks among agents.
- [AgentTools.jl](https://github.com/SteffenPL/AgentTools.jl), a small assortment of functions for dealing with JSON or XLSX files to define heterogeneous and dynamic parameters.

I will also briefly show the numerical method called Position-Based Dynamics (PBD) in Julia, which is one of NVIDIA&apos;s primary methods for particle simulations in computer graphics applications. As it has not gained much attention in the mathematical modeling community yet, I want to demonstrate how to use PBD in the context of agent-based modeling to avoid overlap and contact between agents in a simple but effective manner.

Finally, the talk will show example applications for cell migration, limb bud formation, and epithelial tissue growth to highlight particular challenges for modeling in developmental biology.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/SteffenPL/SpatialHashTables.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZR9VRZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZR9VRZ/feedback/</feedback_url>
            </event>
            <event guid='8b4b0b99-bf48-52d0-b18d-97b4f8944644' id='43080' code='LBU8QU'>
                <room>If (1.1)</room>
                <title>NetSurvival.jl: A glimpse into relative survival analysis</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>The NetSurvival.jl package brings standard relative survival analysis modeling routines in Julia. Relative survival analysis is a branch of survival analysis where individuals are subject to two competing risks, but the cause of death is unknown, often for data quality reasons. In these circumstances, standard competing risks approaches are unusable and specific estimators and methods are used (e.g. Pohar-Perme net survival estimator, Graffeo&apos;s log-rank-type test among others).</abstract>
                <slug>juliacon2024-43080-netsurvival-jl-a-glimpse-into-relative-survival-analysis</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='46165'>Oskar Laverny</person><person id='50051'>Rim Alhajal</person>
                </persons>
                <language>en</language>
                <description>Data arising from large cancer studies often lack reliable information about the cause of death (supposed binary: death from the studied cancer or from other causes) for each individual. Relative survival analysis is a subfield of survival analysis specifically targeted at this particular type of datasets. The field&apos;s goal is to extract survival curves that only takes into account the deaths from cancer, the so-called net survival curves, for comparison purposes between different groups or directly for diagnostic purposes. For that, a few standard estimators were established in the last 50 years, backed by a wide literature.

Standard tools nowadays are composed of R packages, with underlying C and C++ routines, that are hard to read, maintain, and globally use. This package is an attempt to provide a fast, reliable, but most importantly easily maintainable package to implement standard estimators and routines from the field onto the `StatsModels.jl` API. Our hope is that the junction with classical modeling API in Julia will allow later extensions of the existing modeling methods, with a simple interface for the practitioners. 

In this talk, we present the current state of the implementation: the few tools and methods that were implemented, their integration into the Julian ecosystem, and we showcase the functionalities and performance of the implemented methods. We particularly note that the use of native Julia allows for concision and readability of the code.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/LBU8QU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LBU8QU/feedback/</feedback_url>
            </event>
            <event guid='de1cd012-bc18-53c9-8e96-cbbcbed06027' id='44505' code='Z8MJK8'>
                <room>If (1.1)</room>
                <title>Cognitive computational modeling made easy with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Two packages are presented here for cognitive computational modeling. ActionModels.jl builds on Turing, and provides an easy interface for agent-based modeling and hierarchical Bayesian parameter estimation - including regressions, using TuringGLM - of action models of the kind used in computational psychiatry, cognitive modeling, and game theory. As an example, HierarchicalGaussianFiltering.jl then provides easy access to the HGF, a complex and generally applicable predictive processing model.</abstract>
                <slug>juliacon2024-44505-cognitive-computational-modeling-made-easy-with-julia</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='47462'>Peter Thestrup Waade</person>
                </persons>
                <language>en</language>
                <description>With the computational turn psychiatry, cognitive science and neuroscience, there has been an increase in demand for computational cognitive modeling; that is, building computational models of cognitive processes such as learning, perception, memory and decision making. These models can be used for simulation, providing theoretically founded empirical predictions. Often, they are also fitted to participant behaviour in order to estimate per-participant model parameters - used for assessing and building theories based on empirical data, and for finding differences between for example clinical populations, which may in turn be used for diagnostic purposes. The current gold-standard in the field is to use probabilistic languages for Markov Chain Monte Carlo sampling for Bayesian parameter estimation. Due to sparsity of data, and inherent hierarchical structures of many experimental designs, models benefit from hierarchical parameter estimation. The estimated parameters are then often used in regression analyses to test for correlations with experimental implementations and other predictors, but since this is done in a separate step, information is lost. The optimal strategy is therefore to have hierarchical regression and cognitive model in the same model. This is for many researchers, however, often not technically feasible, for it requires knowledge of specialized modeling languages like STAN, and to be able to specify custom regressions and hierarchical parameter structures by hand. Simultaneously, programming custom models can be complicated in itself, providing a technical barrier that is arguably among the greatest limitations for cognitive computational modeling. 
Leveraging Julia&apos;s powerful modeling library Turing, and exploiting the solution to the two-language problem present in other available software solutions, ActionsModels.jl provides a generally applicable and easy-to-use framework for cognitive and behavioural modeling. Needing only a simple input-output structure specified by the user - and containing an array of the most used cognitive models from the field - this package lets the user flexibly simulate from one or multiple models, and provides an easy, TuringGLM-based framework for including multilevel regressions (i.e., statistical models) and cognitive models (or, more generally, action models) in one framework. This should make cognitive computaitonal modeling available to the broader scientific community without sacrificing the customisability that high-end users will rely on. As an example of using the package for complex models, I also present HierarchicalGaussianFiltering.jl, which implements the generalized Hierarchical Gaussian Filter (HGF), a generally applicable variational Bayesian predictive processing based computational model of learning and perception. In its new, generalized form, the HGF can be used to create cognitive models for a variety of tasks and contexts - and can, due to its close relation to the Kalman Filter, also be used for signal processing in volatile and noisy environments.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/ilabcode/ActionModels.jl">Github page for ActionModels.jl</link>
                
                    <link href="https://github.com/ilabcode/HierarchicalGaussianFiltering.jl">Github page for HierarchicalGaussianFiltering.jl</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/Z8MJK8/resources/JuliaCon2024_Software_eMWKFeb.pptx">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/Z8MJK8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/Z8MJK8/feedback/</feedback_url>
            </event>
            <event guid='4b50f40f-465e-5bb9-b7b7-8b161cb9a590' id='44486' code='E77Z9D'>
                <room>If (1.1)</room>
                <title>NeuroDynamics.jl: Next generation models in neuroscience</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Today, neuroscience is generating data more than ever before. A central challenge is how to effectively leverage this unprecented data deluge while embracing existing and emerging domain knowedge. We discuss how emerging developments happening in scientific machine learning present untapped opportunities to advance the field. To harness this potential, we present the first version of NeuroDynamics.jl which aims to provide the building blocks towards next generation modelling in neuroscience.</abstract>
                <slug>juliacon2024-44486-neurodynamics-jl-next-generation-models-in-neuroscience</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='47453'>Ahmed ElGazzar</person>
                </persons>
                <language>en</language>
                <description>While the causes of single neuron spikes have been understood for decades, the processes that support collective neural behavior in large-scale cortical systems are less clear. Understanding such large-scale processes is essential to uncover the neural basis underlying cognitive and behavioral functions and dysfunction. Thus, modeling neural dynamics across different scales of organization and levels of abstraction has been an area of great interest in neuroscience.

In our work, we aim to develop a framework to enable the integration of different modeling techniques under a common language. NeuroDynamics.jl provides a suite of well-established and emerging models used in neuroscience. These range from biophysical, phenomenological, data-driven, and, most importantly, hybrid models. These hybrid models capitalize on recent developments in the scientific machine learning community to tackle long-standing challenges that exist with current models. We provide tutorials to show how these hybrid models can be used to understand the neural computation underlying cognitive and behavioral tasks, system identification for neural control, neural decoding, as well as normative modeling of neural function.

The long-term vision of NeuroDynamics.jl is to be a one-stop shop for modeling, simulation, analysis, and control of any neural system.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/E77Z9D/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/E77Z9D/feedback/</feedback_url>
            </event>
            <event guid='87b2b8cf-d7ac-56ac-b9c5-333901960462' id='43439' code='PER87K'>
                <room>If (1.1)</room>
                <title>Integrative Stochastic Modeling of Infectious Disease with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>This project leverages the Julia programming language to construct a robust mechanistic model for understanding infectious disease transmission and reporting. Integrating diverse data sources, i.e. officially reported case counts and wastewater measurements, we address the inherent limitations of delayed reports, underascertainment and high stochasticity of observations. The efficiency and modularity of Julia empower us to tackle this complex modeling and estimation task effectively.</abstract>
                <slug>juliacon2024-43439-integrative-stochastic-modeling-of-infectious-disease-with-julia</slug>
                <track>Biology &amp; Life Sciences</track>
                <logo>/media/juliacon2024/submissions/PER87K/image_mR5QhaJ.png</logo>
                <persons>
                    <person id='46632'>Vincent Wieland</person>
                </persons>
                <language>en</language>
                <description>The global spread of the COVID-19 pandemic has highlighted the importance of monitoring the real-time spread and predicting future disease dynamics to inform intervention policies. Mathematical modeling of infectious disease dynamics - including the estimation of relevant parameters - have become a key objective of this effort.
However, basing the inference approach solely on confirmed infections yields several challenges. The foremost is the problem of underascertainment of infections. Individuals who do not experience symptoms after being infected are not likely to seek testing. Additionally, insufficient testing capacities and a lack of public awareness may cause underascertainment.
Therefore, our approach proposes a mathematical model combining case count data with wastewater-based surveillance data, which reports the viral concentration in the wastewater from fecal shedding of the infected individuals. Wastewater-based surveillance is a promising tool for monitoring public health, but still in its infancy. One of its major challenges is the inherently high stochasticity of the observations in the low-cases regime. Furthermore, quantitative links to disease dynamics and reliable predictions are still under development. The combination of these two data sources may help to overcome the numerous challenges inherent to each of them.
The proposed mathematical model consists of a multi-level epidemic model for the dynamics on the population level that jointly models the number of new infections, infection-confirmation lag times and ascertainment probabilities utilizing case count data. This is expanded by an simple advection-dispersion-decay model for the RNA transport in the wastewater. With this, the transmission model can be informed by viral concentration measurements. The resulting multi-hierarchical model is well interpretable due to its mechanistic nature, while taking care of measurement errors and uncertainty in the data using a probabilistic description of the modeled quantities.
Parameters shall then be learned using a Bayesian inference framework based on the likelihood function, which is partly analytically available and partly approximated by sampling schemes. 
After parameter estimation, we want to conduct simulation studies to evaluate the performance of the model, including uncertainty quantification and robustness. Furthermore, we then aim to apply the model to publicly available data from Canadian cities.
In summary, we employ the Julia programming language to simulate the dynamics of an infectious disease by incorporating diverse real-world data sources. Julia&apos;s modularity allows a neat integration of the different processes included in the model, while its clear syntax makes it easy to resemble the mathematical formulas needed and reduce code complexity. Especially, the simulation intensive inference framework benefits from Julia&apos;s speed and possibility for parallelized computation. With our talk we aim to contribute not only insights into integrative modeling of serious infectious disease, but also provide an overview of our considerations and experiences when solving models with hierarchical random variables using the Julia programming language.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PER87K/resources/Integrative_Stochastic_Modelling_XblMCyj.pdf">Talk Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PER87K/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PER87K/feedback/</feedback_url>
            </event>
            <event guid='948e2771-711d-5ef8-8b1b-13bbb2ac1e3e' id='43293' code='AYASGT'>
                <room>If (1.1)</room>
                <title>Fast, Elegant, Set-oriented Numerical Analysis using GAIO.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>GAIO (Global Analysis of Invariant Objects) is a package for set oriented numerics in dynamical systems. It provides algorithms for discretisation of the Koopman operator among other uses. The Koopman operator has been of much interest in the last decade, since it can be used in order to compute, e.g., almost invariant, cyclic and coherent sets (to name just some uses). Originally written in the 90s in C, GAIO has been redesigned in Julia and is concise, while outperforming the original.</abstract>
                <slug>juliacon2024-43293-fast-elegant-set-oriented-numerical-analysis-using-gaio-jl</slug>
                <track>Math(s)</track>
                <logo>/media/juliacon2024/submissions/AYASGT/logo_s3ures1.png</logo>
                <persons>
                    <person id='46354'>April Herwig</person>
                </persons>
                <language>en</language>
                <description>In this talk, we present a Julia version of GAIO. The data structures and the
algorithmic interface have been completely redesigned such that the code of the algorithms is very concise and close to their mathematical pseudocode. At the same time, the performance is equal or better than the one of the C version. 

This is illustrated through an example: an algorithm for computing attractors is devised and implemented. It is tested on a classical example of a strange
attractor from dynamical systems literature. 

GAIO makes extensive use of multiple dispatch to construct various discretisation techniques for cell mapping, as well as to interact with the established scientific computing ecosystem (DynamicalSystems, DifferentialEquations, Makie, etc.). Thanks to Julia&apos;s CUDA package, GPU acceleration is as easy as setting a keyword argument during initialisation. This is shown at the end of the talk. 

Code:
https://github.com/gaioguys/GAIO.jl

Documentation:
https://gaioguys.github.io/GAIO.jl/</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/AYASGT/resources/juliacon_GAIO_EpBXnDn.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/AYASGT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AYASGT/feedback/</feedback_url>
            </event>
            <event guid='e9020664-d65d-58ae-acf2-a8b1fda8046e' id='44312' code='DVHRYL'>
                <room>If (1.1)</room>
                <title>Real Time ODEs for Sound Synthesis and Parameter Exploration</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>In this talk we will present a simple library for rendering audible in real time (audification) the
numerical solutions of systems of ordinary equations (continuous dynamical systems). This
library can be used as a pedagogical tool for gaining insight on the different kinds of
bifurcations in dynamical systems and also as a resource for creating new sound synthesizers or
the simulation of musical instruments.</abstract>
                <slug>juliacon2024-44312-real-time-odes-for-sound-synthesis-and-parameter-exploration</slug>
                <track>Math(s)</track>
                <logo>/media/juliacon2024/submissions/DVHRYL/Screenshot_2024-07-09_115715_qJs20Sp.png</logo>
                <persons>
                    <person id='47293'>Manuel Camilo Eguia</person>
                </persons>
                <language>en</language>
                <description>The qualitative description of continuous dynamical systems relies mainly on the study of the
topological changes in the organization of the flux in the phase space formed by the variables of
the system. Here we present a tool that complements the more common visual representation
taking the variables as a multichannel audio output, after proper time scaling, rendering audible
the behavior of the system. This is done by streaming the solutions obtained by the
DifferentialEquations.jl package through a wrapper of the PortAudio library. We will
present some prototypical examples of dynamical systems and show how their audification can
be used to unveil in a fast way the role played by their control parameters. We will end showing
an example of a saxophone model that can be played in real time through a Pluto interface.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/antonioortegabrook/RealTimeAudioDiffEq.jl">Real Time Audio Differential Equation Package</link>
                
                    <link href="https://github.com/meguia/JuliaCon2024">Pluto Presentation of the Talk</link>
                
                    <link href="https://github.com/meguia/RTADiffEqExamples">Examples of Interactive Pluto Notebooks using RealTimeAudioDiffEq.jl</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DVHRYL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DVHRYL/feedback/</feedback_url>
            </event>
            <event guid='9aa171f2-9914-57b7-93fb-e2fe00af2263' id='43342' code='ZLG9BB'>
                <room>If (1.1)</room>
                <title>Solve Fractional Differential Equation with FractionalDiffEq.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>Julia&apos;s ecosystem excels in Differential equation solving but lacks tools for fractional differential equations where  FractionalDiffEq.jl, a package for solving these equations, can bridge this gap. At JuliaCon 2024, we&apos;ll discuss its architecture and use in solving complex fractional differential equations, and outline its future development within the SciML ecosystem. **Recent advances in BVP solving will also be presented, mainly focusing on new solvers and future plans.**</abstract>
                <slug>juliacon2024-43342-solve-fractional-differential-equation-with-fractionaldiffeq-jl</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='46410'>Qingyu Qu</person>
                </persons>
                <language>en</language>
                <description>Fractional-order differential equations have increasingly gained attention as a compelling subject, particularly in recent decades, offering more nuanced representations in natural models from a fractional-order perspective. Tracing back to the origins of &apos;non-integer&apos; calculus, a concept first contemplated by Leibniz and L&apos;H&#244;pital, numerous scientific luminaries have contributed tirelessly to the advancement of fractional calculus. This field has proven particularly instrumental in accurately describing phenomena in diverse areas such as viscoelasticity, acoustics, rheology, and polymeric chemistry. Additionally, the application of fractional derivatives has emerged as an exceptionally fitting approach for characterizing the memory and hereditary properties inherent in a variety of materials and processes.

The SciML organization has achieved remarkable success in developing numerical solvers for differential equations. However, there are certain types of differential equations that [SciML has not yet supported](https://github.com/SciML/DifferentialEquations.jl/issues/461). Since the 20th century, fractional calculus and fractional differential equations have emerged as significant areas of interest in science and engineering, extending the principles of integer-order differential equations. Historically, most numerical software for these equations has been developed in MATLAB and suffered from a lack of consistent maintenance, leaving a gap for unified, user-friendly tools.

Addressing this need, FractionalDiffEq.jl is an innovative package within the SciML ecosystem, integrating efficient algorithms specifically designed for fractional differential equations (FDEs). Leveraging the common interface of SciML, FractionalDiffEq.jl not only simplifies user interaction but also ensures seamless integration with other SciML packages. Currently, FractionalDiffEq.jl adeptly handles fractional order ordinary differential equations and delayed differential equations, representing a significant stride forward in computational science and engineering tools.

The [FractionalDiffEq.jl](https://github.com/SciFracX/FractionalDiffEq.jl) package follows the design pattern of DifferentialEquations.jl. To solve a fractional differential equation problem, we first define a ```FDEProblem``` according to our model, use ```FODEProblem``` for common fractional ordinary differential equations, use ```FDDEProblem``` for delay fractional differential equations etc. Then pass the defined problem to ```solve``` function and choose an algorithm to solve our problem.

```julia
prob = FDEProblem(fun, order, u0, tspan)
sol = solve(prob, alg(), dt)
```

```julia
prob = FDDEProblem(fun, phi, order, u0, constant_lags=[tau], tspan)
sol = solve(prob, alg(), dt)
```

There is still a long way to go for FractionalDiffEq.jl to become a mature package. We are working hard to improve the performance of the package and add more algorithms. The future plans included but not limited to:

* Keep adding more high performance algorithms.
* Make the usage of API more simple and elegant.
* Write more illustrative documents for usability. 
* Integrate with the SciML ecosystem to provide users more useful features.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZLG9BB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZLG9BB/feedback/</feedback_url>
            </event>
            <event guid='0f04b0d9-3944-58bf-8cce-eb42640f2f2c' id='44141' code='HGML7Z'>
                <room>If (1.1)</room>
                <title>Few-body integrator with time-reversible adaptivity in Julia</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>Time-reversible or symplectic methods are very useful for long-term integration of planetary systems with a constant step size. However, in the case of n-body problems involving close encounters, adaptive time-stepping is required. We present a SIMD-vectorized integrator for few-body problems which incorporates a robust time-reversible adaptivity mechanism that makes it highly performant for the long-term numerical integration of problems with close-encounters.</abstract>
                <slug>juliacon2024-44141-few-body-integrator-with-time-reversible-adaptivity-in-julia</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47137'>Mikel</person><person id='47143'>Ander Murua</person>
                </persons>
                <language>en</language>
                <description>Time-reversible or symplectic methods are very useful for long-term integration of planetary systems with a constant step size. The 16th order method implemented in our package SciML/IRKGaussLegendre.jl is both time-reversible and symplectic, and includes a SIMD-vectorized version IRKGL16-SIMD (presented in Juliacon2020) that is particularly efficient for problems without close encounters. However, numerical precision degrades greatly during close encounters if constant step size is employed. Close encounters are common, for instance, in simulations of the orbital evolution of the Solar System when some asteroids or comets are included in the model. Hence, a robust numerical integrator of few-body problems must include some adaptive mechanism to deal with close encounters.&#160;Unfortunately, with conventional time-step adaptivity strategies the advantages of symplectic methods is lost. 

We present an integrator for few-body problems, which based on IRKGL16-SIMD, that incorporates a robust time-reversible adaptivity mechanism that makes it highly performant for the long-term numerical integration of problems with close-encounters. Fortunately, time-stepping strategies that preserve the reversible structure of the n-body problem are possible, for instance, by applying reversible stepsize strategies introduced in [1], which require an explicitly given expression of the stepsize as a function of the positions and velocities. In our code, we make use of an appropriate step-size function for the n-problem proposed in our previous work [2,3].

We show some numerical experiments with few-body problems that demonstrates the efficiency and robustness of our code.

Repository: https://github.com/mikelehu/NbodyIRKGL16.jl


References

- [1] Reversible Long-Term Integration with Variable Stepsizes,  E.Hairer and  D. Stoffer.
SIAM Journal on Scientific Computing (1997).
https://doi.org/10.1137/S1064827595285494

- [2] Global Time-Renormalization of the Gravitational N-body Problem, M. Anto&#241;ana, P. Chartier, J. Makazaga and A. Murua. SIAM Journal on Applied Dynamical System (2020). https://doi.org/10.1137/20M1314719.

- [3] Majorant series for the N-body problem,   M. Anto&#241;ana, P. Chartier and A. Murua.
Iternational Journal of Computer Mathematics (2021).
https://doi.org/10.1080/00207160.2021.1962848</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HGML7Z/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HGML7Z/feedback/</feedback_url>
            </event>
            <event guid='36cc3fa8-1d61-58fe-807b-c2991b2f7126' id='44475' code='YB8CJQ'>
                <room>If (1.1)</room>
                <title>How I created a hosted notebook service for Pluto</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>As many of you may know, I am the creator of cloud.jolin.io, a hosted notebook service for Pluto notebooks.

I am going to give you background insights about how it works and where it should go.</abstract>
                <slug>juliacon2024-44475-how-i-created-a-hosted-notebook-service-for-pluto</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47441'>Stephan Sahm</person>
                </persons>
                <language>en</language>
                <description>The hosted Pluto service is really Pluto-first at its core.
I want to show you, that this brings crucial advantages which are yet unseen in other ecosystems. The biggest one: It enables simplicity for DevOps.

Further, you will hear details about Pluto, Kubernetes, Distributed, HTTP, React, etc.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YB8CJQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YB8CJQ/feedback/</feedback_url>
            </event>
            <event guid='7a72fad5-7c52-5933-a8eb-565117e4ca64' id='44408' code='X8EKWF'>
                <room>If (1.1)</room>
                <title>DataToFunctions.jl: Representing transformed data as a function</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>This package wraps (measured) data into a function which supports coordinate transformation parameters. Upon calling this returned function, the data is interpolated according to the transformation into an array. Currently supported N-dimensional transformations are shift and zoom, or an affine transformation. It also supports automatic differentiation over its transform parameters, enabling its use in fitting and inverse modeling problems.</abstract>
                <slug>juliacon2024-44408-datatofunctions-jl-representing-transformed-data-as-a-function</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47385'>Hossein Zarei Oshtolagh</person>
                </persons>
                <language>en</language>
                <description>It is sometimes useful to fit measured data (e.g. an image of a star) with a functional representation of the image of a star (the point spread function) parameterized by position, zoom and rotation. However, sometimes such functional model representations are hard to come by. Therefore, high-quality measurements of a star can serve as an example of such a point spread function. 
Rather than first fitting this example data with another parameterized function (e.g. a polynomial representation) and implementing the required transformation parameters, we simply wrapped the data into a functional representation using `Interpolations.jl`.
For a fast application of this scheme, it is essential that no memory is allocated for each individual interpolation event. In the current version of `DataToFunctions.jl` we support different coordinate transformations, which are all free of memory allocations during coordinate calculations (using the `StaticArrays.jl` toolbox).
One coordinate transformation supports shifting and scaling. Another more general one supports an N-dimensional affine transformation based on homogeneous coordinates (i.e. adding one extra dimension of value 1 to each coordinate vector and using an (N+1)x(N+1) matrix for the transformation). For two-dimensions (N=2), there is also an easy-to-use form of the affine transformation, spelling out shift, shear, rotation and scaling as individual parameters.
Returned is a function encapsulating the underlying data to be used for further work, like fitting the new data. The advantage of this method is that we do not fit any function to the measured data. So, we do not approximate the data used for fitting, but use it directly for fitting via interpolation.
We provide a few examples to showcase possible use-cases of our toolbox.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/X8EKWF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/X8EKWF/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Else (1.3)' guid='4bf3eb99-fea3-5d57-a632-0b5d9a5a54c2'>
            <event guid='eb179d79-40b9-5d19-962b-ab56141d0acf' id='44490' code='ULXMLY'>
                <room>Else (1.3)</room>
                <title>Raising the Ki of a SciML model</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:10</duration>
                <abstract>In this talk we will show you how to boost your latent SciML model, significantly increasing its performance and data efficiency.

In particular, we will present GOKU-UI, an evolution of the continuous-time generative model GOKU-net, which incorporates attention mechanisms and a novel multiple shooting training strategy in the latent space. On both simulated and empirical brain data, it achieves enhanced performance in reconstruction and forecast tasks while effectively capturing brain dynamics.</abstract>
                <slug>juliacon2024-44490-raising-the-ki-of-a-sciml-model</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47360'>Germ&#225;n Abrevaya</person>
                </persons>
                <language>en</language>
                <description>Scientific Machine Learning (SciML) is a burgeoning field that synergistically combines domain-aware and interpretable models with agnostic machine learning techniques, often yielding increased interpretability, generalizability, and data efficiency [1, 2, 3]. Latent Ordinary Differential Equations (Latent ODEs)[4, 5] are VAE-like generative models that encode time series data into a latent space ruled by a differential equation which is parametrized by a neural network. Building on Latent ODEs, Linial et al. [6] introduced GOKU-nets (Generative ODE Modeling with Known Unknowns), which fundamental difference with the former is the inclusion of a predefined differential equation structure as a prior for the latent dynamics. Compared to LSTM and Latent-ODE on pendulum videos and cardiovascular system modeling, GOKU-net excelled in reconstruction, forecasting, reduced training data needs, and offered better interpretability.

While leveraging the power of the Julia SciML Ecosystem and Flux, we not only implemented the GOKU-nets in Julia, broadening the original model&apos;s spectrum to incorporate other classes of differential equations, but also introduced two key enhancements: (1) the addition of attention mechanisms to the main part of the model that infers the parameters of the differential equations and (2) a novel training strategy based on the multiple shooting technique [7, 8] in the latent space.

These modifications have led to a significant increase in its performance in both reconstruction and forecast tasks, as demonstrated by our evaluation on simulated and empirical data. Our _GOKU-nets with Ubiquitous Inference_ (GOKU-UI) outperformed all baseline models on synthetic datasets even with a training set 16-fold smaller, underscoring its remarkable data efficiency. Furthermore, when applied to empirical human brain data, while incorporating stochastic Stuart-Landau oscillators into its dynamical core, our proposed enhancements markedly increased the model&apos;s effectiveness in capturing complex brain dynamics. GOKU-UI demonstrated a reconstruction error five times lower than other baselines, and the multiple shooting method reduced the GOKU-nets prediction error for future brain activity up to 15 seconds ahead. By training GOKU-UI on resting state fMRI data, we encoded whole-brain dynamics into a latent representation, learning a low-dimensional dynamical system model that could offer insights into brain functionality and open avenues for practical applications such as the classification of mental states or psychiatric conditions. Ultimately, our research provides further impetus for the field of Scientific Machine Learning, showcasing the potential for advancements when established scientific insights are interwoven with modern machine learning.

During this presentation, attendees will develop a comprehensive understanding of both the foundational GOKU-net model and its advanced iteration, GOKU-UI. We will showcase through experimental evidence the performance improvements these advancements bring, while also explaining the rationale and specific details behind the enhancements. We hope that attendees will learn from our experience, enabling them to implement similar strategies to rise the Ki of their own SciML models.
&lt;br/&gt;&lt;br/&gt;
Paper: https://openreview.net/forum?id=uxNfN2PU1W
Codes: https://github.com/gabrevaya/TMLR_GOKU-UI
&lt;br/&gt;&lt;br/&gt;

[1] Baker, Nathan, et al. Workshop report on basic research needs for scientific machine learning: Core technologies for artificial intelligence. USDOE Office of Science (SC), Washington, DC (United States), 2019.

[2] Rackauckas, Christopher, et al. &quot;Universal differential equations for scientific machine learning.&quot; arXiv preprint arXiv:2001.04385 (2020).

[3] Shen, Chaopeng, et al. &quot;Differentiable modelling to unify machine learning and physical models for geosciences.&quot; Nature Reviews Earth &amp; Environment 4.8 (2023): 552-567.

[4] Chen, Ricky TQ, et al. &quot;Neural ordinary differential equations.&quot; Advances in neural information processing systems 31 (2018).

[5] Rubanova, Yulia, Ricky TQ Chen, and David K. Duvenaud. &quot;Latent ordinary differential equations for irregularly-sampled time series.&quot; Advances in neural information processing systems 32 (2019).

[6] Linial, Ori, et al. &quot;Generative ode modeling with known unknowns.&quot; Proceedings of the Conference on Health, Inference, and Learning. 2021.

[7] Ribeiro, Ant&#244;nio H., et al. &quot;On the smoothness of nonlinear system identification.&quot; Automatica 121 (2020): 109158.

[8] Turan, Evren Mert, and Johannes J&#228;schke. &quot;Multiple shooting for training neural differential equations on time series.&quot; IEEE Control Systems Letters 6 (2021): 1897-1902.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/gabrevaya/TMLR_GOKU-UI">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ULXMLY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ULXMLY/feedback/</feedback_url>
            </event>
            <event guid='d222039b-c770-52ea-be14-ea9622546d23' id='43285' code='RCXMYX'>
                <room>Else (1.3)</room>
                <title>SymbolicIndexingInterface.jl: Symbolic Indexing for Everyone</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>What&apos;s the point of a DSL for modeling if the solution can&apos;t be accessed using the model&apos;s variables? No one remembers what `sol[1]` is.
SymbolicIndexingInterface.jl is a new package in the SciML ecosystem. It defines an interface to allow symbolically defined systems and their solutions to be efficiently indexed using symbolic variables. Any DSL implementing the common interface will automatically support symbolically indexing the relevant data structures.</abstract>
                <slug>juliacon2024-43285-symbolicindexinginterface-jl-symbolic-indexing-for-everyone</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46346'>Aayush Sabharwal</person>
                </persons>
                <language>en</language>
                <description>DSLs such as ModelingToolkit allow creating models using symbolic variables and writing the relevant equations similar to how they&apos;re written mathematically. SymbolicIndexingInterface was created to allow accessing the values of these symbolic variables without having to dig through internals of the relevant libraries. The intent of `sol[x]` is much more obvious than `sol[1]`. Not to mention, the order of variables is not guaranteed and may be changed by the modeling library.

Most notably, SymbolicIndexingInterface is designed to be independent of the modeling DSL and symbolic framework, providing access to powerful indexing capabilities if a data structure implements its interface. Any type implementing the interface can be queried for the values of it&apos;s symbolic variables. Multiple variables can be queried at once using (arbitrarily nested) tuples and arrays, and the result is type-inferred if the queried collection of variables is completely concretely typed. SymbolicIndexingInterface can create functions that cache the metadata needed to access a particular symbolic quantity, allowing for efficient queries/updates to the same quantity repeatedly.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RCXMYX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RCXMYX/feedback/</feedback_url>
            </event>
            <event guid='6c757b23-af69-5742-b99e-8ceb33c12b18' id='43441' code='HEFX3B'>
                <room>Else (1.3)</room>
                <title>JuliaSim Modeling Language: Composing Complex Systems with MTK</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>The idea behind the JuliaSim Modeling Language (JSML) was to rethink how we describe the composition of complex system models in ModelingToolkit.jl (MTK).  JSML takes a strictly declarative approach and focuses on encapsulating behavior into reusable component models and then composing them into complex hierarchical system models.  All imperative aspects of the modeling and still handled via Julia.</abstract>
                <slug>juliacon2024-43441-juliasim-modeling-language-composing-complex-systems-with-mtk</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46490'>Michael Tiller</person>
                </persons>
                <language>en</language>
                <description>There are several methods for creating models for ModelingToolkit.  The simplest way is to declare whatever variables or parameters the model includes along with the equations used to describe the systems behavior.  From here, ModelingToolkit finds the most efficient approach for solving that system.  It is also possible to use a collection of Julia macros to describe reusable component models and systems composed of these reusable component models.

The JuliaSim Modeling Language (JSML) approach adds yet another way of composing ModelingToolkit models.  Instead of building on top of Julia imperative semantics to describe and construct models, JSML takes a declarative approach.  It provides a domain specific language (DSL) for defining reusable component models (their equations, parameters, connectors) and how these components are connected in order to define systems.  The hope is that this DSL provides a very focused way of describing the behavior and composition of models that makes for an easier learning curve, better diagnostics, static analysis and a greater ability to reason about such models.  These components will leverage Julia functions for any imperative semantics they require.

JSML models are fully compatible with both ModelingToolkit.jl as well as the JuliaSim modeling environment.  In practice this means that JSML defines not just how the components behave, but also how they are rendered in a graphical environment.  Model libraries leverage the Julia package manager and can therefore be fully versioned and dependent on other model libraries.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://668e50e9b3ffaf12da68de01--superb-rugelach-3c1024.netlify.app">Slides (no video)</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HEFX3B/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HEFX3B/feedback/</feedback_url>
            </event>
            <event guid='8fc4b1a8-898b-50b7-a85c-10d06601c380' id='44241' code='ZFD78L'>
                <room>Else (1.3)</room>
                <title>Updates to Standard Library &amp; The Native DSL of ModelingToolkit</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>ModelingToolkit Standard Library has adopted several conventions to standardize model definition across Julia. And it has amassed new model libraries.
The new DSL interface for ModelingToolkit now supports arrays, branching and looping statements and more for building complicated models.
This talk showcases these.</abstract>
                <slug>juliacon2024-44241-updates-to-standard-library-the-native-dsl-of-modelingtoolkit</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46489'>Bradley Carman</person><person id='47224'>Venkatesh Prasad</person>
                </persons>
                <language>en</language>
                <description>New sub-libraries and additional components are added to the ModelingToolkitStandardLibrary (MSL). And the library has adopted sign convention for input components with through variables.  These updates will be showcased here.

The ModelingToolkit now has a new DSL, @mtkmodel, which greatly simplifies defining models. While simple models are straightforward to define, with branching and looping statements, complicated components can be modeled too. This talk gives more insight into defining such models and interpreting the metadata, including understanding the internal representations of user inputs.  This talk will also discuss best practices and conventions in defining components and models, and the interpretation of common error messages.

Additionally, this talk will introduce the macro @mtkbuild to assemble a ModelingToolkit model for solving.

This talk will be a short guide on all one has to know to use this DSL-based modeling. And it will be a discussion on using and contributing to the ModelingToolkitStandardLibrary.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/SciML/ModelingToolkit.jl">Github</link>
                
                    <link href="https://github.com/SciML/ModelingToolkitStandardLibrary.jl">Github</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZFD78L/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZFD78L/feedback/</feedback_url>
            </event>
            <event guid='3e8f9142-be15-58b6-b08a-f1e48fadd4f7' id='43198' code='QKU8BE'>
                <room>Else (1.3)</room>
                <title>State of Julia&apos;s SciML Ecosystem</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Julia&apos;s SciML represents nearly a hundred of some of the most widely used Julia packages. How&apos;s it doing? In this talk we will discuss many of the latest improvements, where we are lacking, and the near future roadmap. This is made to be a celebration of our wins and an appreciation of our lingering challenges, highlighting to the community what to be proud of but also what needs more time to cook.</abstract>
                <slug>juliacon2024-43198-state-of-julia-s-sciml-ecosystem</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person>
                </persons>
                <language>en</language>
                <description>SciML is huge. If I say &quot;I am using a SciML package&quot;, that could mean DifferentialEquations.jl, but it could also mean NonlinearSolve.jl, or ExponentialUtilities.jl, MuladdMacro.jl, or anything in the long tail. Yet it is treated, maintained, and documented as a cohesive whole. But in terms of maturity, that is definitely not the case. This talk will highlight and put firm grading on the maturity of different parts of the project, where pieces like the ODE solvers are highly mature while other aspects like GPU-based optimizers or high index DAEs have a medium level of maturity, while other promising and popular libraries such as MethodOfLines.jl have a lot Discourse discussion but are knowingly at an immature stage. Part of this talk is to paint in broad strokes a picture of the current state of the ecosystem to help the general user base better understand the current state of the project.

But I think another major point is really, what&apos;s next? Some pieces that are immature are the main focus of the current development, especially aspects like boundary value problems, complementary problems, and parallelism in nonlinear optimization. Other areas such as uncertainty quantification schemes have been progressing but comparatively lack the team activity in comparison to some of the other focus areas. We hope to outline the lay of the land but also provide some perspective on the driving forces behind this progression to both highlight our near future goals but also indicate the road blocks that potential contributors can use as a starting point for helping the project themselves.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QKU8BE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QKU8BE/feedback/</feedback_url>
            </event>
            <event guid='2e9f066b-5ce7-53e7-a8d5-74f4b8cea88c' id='43391' code='NY8P98'>
                <room>Else (1.3)</room>
                <title>PEtab.jl - Efficient parameter estimation for dynamic models</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Dynamic models via ordinary differential equations (ODEs) are often used to model biological processes. However, ODE models often have unknown parameters that must be estimated from data. This corresponds to minimizing an objective function. PEtab.jl is a Julia package for setting up parameter estimation problems for dynamic models in Julia. Here, I will introduce PEtab.jl, and benchmark results on how PEtab compares against non-Julia tools for parameter estimation.</abstract>
                <slug>juliacon2024-43391-petab-jl-efficient-parameter-estimation-for-dynamic-models</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='45971'>Sebastian Persson</person>
                </persons>
                <language>en</language>
                <description>Dynamic model in biology and in the pharmaceutical industry often have unknown model parameter, such as reaction rates, that must be estimated from experimental time-series data. This parameter estimation problem involves formulating a likelihood function, which subsequently is minimized via numerical methods. For simple cases, the likelihood function can easily be coded by using the SciML ecosystem in Julia. However, for more complex cases, like when the model includes events, data is collected under various simulation conditions, or the model should be at a steady state at time zero, correctly coding a likelihood function is a time-consuming and error-prone process. 

[PEtab.jl](https://github.com/sebapersson/PEtab.jl) is a Julia package that makes it easy to create parameter estimation problems in Julia. This by leveraging various features from the SciML ecosystem. In this talk I will cover: 

* How to import problems specified in the [PEtab](https://github.com/PEtab-dev/PEtab) standard format for parameter estimation problems.  
* How to import SBML models with [SBMLImporter.jl](https://github.com/sebapersson/SBMLImporter.jl) - the importer used by PEtab to import dynamic models in the SBML standard format. 
* How to easily setup parameter estimation problems directly in Julia, where the dynamic models can be provided as either a [Catalyst.jl](https://github.com/SciML/Catalyst.jl) `ReactionSystem` or a [ModelingToolkit.jl](https://github.com/SciML/ModelingToolkit.jl) `ODESystem`. 
* Which gradient computation methods to use. PEtab.jl integrates with ForwardDiff and SciMLSensitivity, allowing gradient computations through both forward and adjoint approaches, however, selecting the best method can be non-trivial. 

Lastly, I will address the question: *Should Julia be used for parameter estimating dynamic models in biology and pharmaceutical research?* There already exist excellent tools for dynamic modelling in biology, such as [pyPESTO](https://github.com/ICB-DCM/pyPESTO), which utilizes [AMICI](https://github.com/AMICI-dev/AMICI) as simulation engine. To evaluate how PEtab.jl compares against AMICI we conducted an extensive benchmark on real models with real data.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/NY8P98/resources/PEtab_JuliaCon_SP_sVMXBOT.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/NY8P98/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NY8P98/feedback/</feedback_url>
            </event>
            <event guid='e3d924c2-a0c7-54fa-aacf-5f1cf11a5021' id='43121' code='99QN9H'>
                <room>Else (1.3)</room>
                <title>Docs, CI Tests, Error Messages, and Interfaces in Julia&apos;s SciML</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Julia&apos;s SciML is a large ecosystem of numerical solvers, modeling tools, utility libraries, and much more. What are the guiding principles of what makes &quot;a SciML library&quot;? In this talk we will go into detail about the contribution and code practices of the SciML organization. We will highlight how we&apos;ve made the interfaces more concrete, the continuous benchmarking practices, high-level error messages, and other improvements seen throughout the last few years.</abstract>
                <slug>juliacon2024-43121-docs-ci-tests-error-messages-and-interfaces-in-julia-s-sciml</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person>
                </persons>
                <language>en</language>
                <description>The focus of this talk is not on speed and numerics but on infrastructure: how is it done and why. SciML&apos;s contribution format is codified in the SciML Style and COLPRAC which specify a repeatable format for large-scale reproducible numerical ecosystems in the Julia ecosystem. We want to share our processes and practices so that other Julia organizations can adopt the policies and procedures we are using to scale.

The first discussion is on documentation. The [SciML documentation](https://docs.sciml.ai/Overview/stable/) greatly differs from a standard Julia package documentation because it&apos;s documenting hundreds of packages and attempting to not silo them but emphasize how they should be used together. We will discuss some of the high-level design principles involved, how Multidocumenter.jl is used to piece it all together, some of the major wins seen with this approach, and some of the downsides.

Next we will focus on the testing infrastructure of the SciML organization. The SciML organization might have some of the most expensive and comprehensive testing on Github for open source projects in general, and we will discuss why this is required for detailed studies of numerical solvers. We will discuss the various kinds of tests that are used, including ones not standard in other repos like downstream testing and downgrade testing, all to build a more stable system. All of this discussion is easily repeatable by audience members by simply going to one of the repos and copying the .github/workflows scripts! 

Next we will talk about error messages and interfaces. But Julia doesn&apos;t have interfaces? Well with SciML we have over the years built many interface packages to thoroughly document our interfaces and requirements in order to make it easy to statically check for high level correctness directly from type definitions. We will describe why ArrayInterface.jl, StaticArrayInterface.jl, and RecursiveArrayTools.jl exist, the interesting questions like &quot;if you have an array A, how do you make the best Jacobian matrix for it?&quot;, and the new and improved error messages that SciML throws if interface incompatibility is detected. You will likely learn a lot about the edge cases of generic programming and how the SciML libraries have been made to support &quot;any wild inputs&quot;, but importantly, understand how that has evolved from the wild west into a maintainable and testable system with strong guarantees on generic behavior.

Finally, we will discuss the continuous benchmarking practices of the SciML ecosystem. We believe benchmarks are never complete, they are always evolving, and they are not a tool to win arguments but to improve code. Thus what really matters is making benchmarks that evolve over time to continue help you learn more about what the right strategies should be. We will describe how the SciML generic interfaces facilitate easier benchmarking and where we are currently lacking.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/99QN9H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/99QN9H/feedback/</feedback_url>
            </event>
            <event guid='c430559f-a1e6-5c28-af48-2f0469fb245b' id='44453' code='WR9WPA'>
                <room>Else (1.3)</room>
                <title>Model reparametrization with StructuralIdentifiability.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Structural identifiability is a property of a dynamical model that determines if the model parameters can be inferred uniquely in the absence of noise. StructuralIdentifiability.jl allows to assess the identifiability of dynamical models described by ODEs. In this talk, we will present new functionality in StructuralIdentifiability.jl, which allows one to find all identifiable combinations in the model under consideration and automatically reparametrize the model to make it fully identifiable.</abstract>
                <slug>juliacon2024-44453-model-reparametrization-with-structuralidentifiability-jl</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47424'>Alexander Demin</person>
                </persons>
                <language>en</language>
                <description>As a result of recent work, new functionality has been implemented in StructuralIdentifiability.jl. We would like to introduce this functionality in our talk. This new functionality allows the user to find, in a matter of seconds, all rational functions of parameters and states that are identifiable in the model of consideration and, possibly, reparametrize it. To the best of our knowledge, other open-source state of the art software cannot do that.

Identifiability analysis and reparametrization is an important step of model design, so we expect that the topic of the talk would be of interest to practitioners in modeling and control.

During the presentation, we will try to avoid the technicalities, and instead focus on simple but meaningful examples. We plan to include a short demo to demonstrate the package capabilities.

For further details, one can consult the relevant tutorial pages from the package documentation:
https://docs.sciml.ai/StructuralIdentifiability/v0.5.2/tutorials/identifiable_functions/
https://docs.sciml.ai/StructuralIdentifiability/v0.5.2/tutorials/reparametrization/

This work is a joint result by Alexander Demin, Gleb Pogudin, and Chris Rackauckas.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/SciML/StructuralIdentifiability.jl">https://github.com/SciML/StructuralIdentifiability.jl</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WR9WPA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WR9WPA/feedback/</feedback_url>
            </event>
            <event guid='12ba6dc1-4b66-5f2c-bca9-dbc407e627a8' id='42686' code='SWG7QE'>
                <room>Else (1.3)</room>
                <title>Personalising Models of Human Blood Sugar using SciML</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>To improve our understanding of biological processes, dynamic models are built that describe the human blood glucose after a meal. However, these models are typically built based on population averages and therefore cannot capture the full scope of individual dynamics. Using SciML to incorporate machine learning techniques into these models, we aim to improve model personalisability.</abstract>
                <slug>juliacon2024-42686-personalising-models-of-human-blood-sugar-using-sciml</slug>
                <track>SciML</track>
                <logo>/media/juliacon2024/submissions/SWG7QE/juliacon_talk_tXGVg5y.png</logo>
                <persons>
                    <person id='46030'>Max de Rooij</person>
                </persons>
                <language>en</language>
                <description>Precision nutrition aims to provide personalised dietary recommendations in order to improve overall metabolic health, opposed to general dietary recommendations. By using the Eindhoven Diabetes Simulator (EDeS), a mechanistic model of human response of blood glucose and insulin to standardised meals, we aim to capture relevant and biologically interpretable parameters of current metabolic health. However, this model was built to describe population average responses and fails to describe the full extent of inter-individual variability.

To improve the model&apos;s ability to capture personalised meal responses, and to improve the relevance of individual model parameter values, the framework of neural universal differential equations was used. By incorporating a neural network into targeted components of the model, we can specifically increase the model&apos;s flexibility, without compromising strong biological bias that enables parameter estimation on limited data. 

In this talk, we present results on training universal differential equations on sparsely sampled human data using physiology-informed regularisation and the recovery of personalised glucose-driven insulin production using conditional neural networks in universal differential equation models. 

In this way, the hybrid model enables us to improve our understanding of individual variation in blood sugar responses to meals, and provides interpretable measures to aid in the design of personalised dietary recommendations.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SWG7QE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SWG7QE/feedback/</feedback_url>
            </event>
            <event guid='09ccab6a-fa09-59ea-b0a7-e6aac71137d6' id='44340' code='DLVCHS'>
                <room>Else (1.3)</room>
                <title>JuliaSim HVAC: Composing thermo-fluid modeling with SciML</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:10</duration>
                <abstract>JuliaSim HVAC provides a comprehensive suite (based upon ModelingToolkit.jl) for the modeling and simulation of complex thermofluid systems via a library of pre-built component and refrigerant models that connect to advanced solvers that are customized to system behavior and are composable with the SciML ecosystem. We demonstrate typical workflows of the HVAC engineer: Parameter Estimation, Design Optimization, Control and Machine-Learning based acceleration.</abstract>
                <slug>juliacon2024-44340-juliasim-hvac-composing-thermo-fluid-modeling-with-sciml</slug>
                <track>SciML</track>
                <logo>/media/juliacon2024/submissions/DLVCHS/Screenshot_from_2024-01-31_11-27-21_Ccs4isG.png</logo>
                <persons>
                    <person id='46491'>Avinash Subramanian</person>
                </persons>
                <language>en</language>
                <description>Currently, industrial HVAC modelers use disparate tools for each step such as modeling and simulation, calibration, design optimization, control design, and machine learning. We provide an alternative approach leveraging the JuliaSim platform that enables all of these and more activities to be completed in one environment. The JuliaSim HVAC package provides the following features: 

1. Industry-grade pre-built components:
&#8226;  Configurable components for Tube-Fin Heat Exchangers, Compressors, Valves,
Fans, Conditioned spaces and Pipes
&#8226; Drag and drop in GUI for rapid prototyping

2. Thermodynamic property models:
&#8226; Spline-based thermodynamic property models for several refrigerants
(such as R32, R1234YF, R290, R152a, R134a, R410A, R717)
&#8226; Dry Air and Moist Air

3. Robust Solvers: 
&#8226; Robust solvers that handle stiff nonlinear discontinuous dynamics
&#8226; Specialized DAE Initialization routines for large-scale models.

4. Composability with Machine Learning Workflows: 
&#8226; Integrate with the Model Optimizer tool for automated model calibration unleashing the power of
automatic differentiation of the simulator
&#8226; Leverage the Digital Echo tool for model acceleration and smoothing out of irrelevant dynamics using neural surrogates.

5. Connect to Controls: 
&#8226; Integrate with the Control packages for PID, Linear and Nonlinear Model Predictive Control (MPC). 

We demonstrate some of these workflows highlighting the advantages of performing these in a Julia environment versus the current state-of-the-art.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DLVCHS/resources/HVAC_JuliaCon2024_tPPLFet.pdf">v5</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DLVCHS/resources/v5_JETQrdm.html">demo</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DLVCHS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DLVCHS/feedback/</feedback_url>
            </event>
            <event guid='7bafcdcb-7583-5157-81f1-b9c15eac0e0b' id='44343' code='LP3XAL'>
                <room>Else (1.3)</room>
                <title>ProcessSimulator.jl: A Differentiable Chemical Process Simulator</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:10:00+02:00</date>
                <start>16:10</start>
                <duration>00:10</duration>
                <abstract>ProcessSimulator.jl provides a tool for chemical process modeling - a key workflow in chemical engineering. Built upon ModelingToolkit.jl that enables writing compact representations of physical phenomena occurring in the unit operations, it supports steady-state (with NonlinearSolve.jl) and dynamic simulation (with DifferentialEquations.jl). It interfaces with Clapeyron.jl and various automatic differentiation packages. ProcessSimulator will be made open-source through the SciML organization.</abstract>
                <slug>juliacon2024-44343-processsimulator-jl-a-differentiable-chemical-process-simulator</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47341'>Andr&#233;s Riedemann</person><person id='46491'>Avinash Subramanian</person><person id='47329'>Vinicius Viena</person>
                </persons>
                <language>en</language>
                <description>Process simulation involves connecting multiple unit operation models (such as reactors, separation units, heat exchangers, mixers and splitters etc.) that in sum are involved in the conversion of a feed chemical stream to a product stream. Current commercial tools tend to be siloed, operate as blackboxes and do not provide the functionality of a full-fledged programming language. In addition, supporting next generation workflows requires leveraging recent advances in symbolic-numeric programming and scientific machine learning. ProcessSimulator.jl provides the functionality of both dynamic and steady-state process simulation (process flowsheeting) by making use of the flexibility of
ModelingToolkit.jl (MTK) to allow seamless transition between these two modes. While this package is still under active development, the following unique features are highlighted: 

1. Robust process flowsheeting leveraging symbolic transformations and automatic differentiation (AD)
- Process flowsheeting involves the construction and solution of a nonlinear equation system put together by combining descriptive equation models of each of the unit operations involved. Declarative symbolic modeling languages such as MTK allow library developers and users to write compact high-level representations and let the compiler do the work of simplifying and translating these to efficient numerical routines.
- In addition, the generation of exact derivatives for instance by making use of existing AD packages (ForwardDiff.jl, ReverseDiff.jl, Zygote.jl, Enzyme.jl)  is key to robust, fast and accurate process simulation.

2. Interface with Clapeyron.jl - an open-source and extensible thermodynamic property package

3. System-level Superstructure Optimization
- The package provides an interface to the Julia Math Programming ecosystem (MathOptInterface.jl and JuMP.jl) to provide a large suite of tools for mixed-integer and nonlinear optimization.

4. Interface with the SciML and DifferentialEquations.jl for dynamic simulation.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/LP3XAL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LP3XAL/feedback/</feedback_url>
            </event>
            <event guid='ab0d75ce-c5d5-5e65-83f7-8237fac43bf7' id='44314' code='LSCYQJ'>
                <room>Else (1.3)</room>
                <title>Fast parameter estimation with PhysicsInformedRegression.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:20:00+02:00</date>
                <start>16:20</start>
                <duration>00:10</duration>
                <abstract>In this talk, we present a fast method for estimating parameters from data, when modeling with differential equations.
PhysicsInformedRegression.jl works as an extension to the [SciML](https://sciml.ai/) ecosystem, specifically for symbolic models. It&apos;ll be shown how to apply the provided method on simulated data for certain examples (SIR, enzyme reactions, lotka-volterra and lorenz attractor).</abstract>
                <slug>juliacon2024-44314-fast-parameter-estimation-with-physicsinformedregression-jl</slug>
                <track>SciML</track>
                <logo>/media/juliacon2024/submissions/LSCYQJ/lotka_volterra_kZVtRUj.png</logo>
                <persons>
                    <person id='47130'>Marcus Galea Jacobsen</person><person id='47310'>Jonas Nielsen</person><person id='47389'>Albert Brincker Olson</person>
                </persons>
                <language>en</language>
                <description>[PhysicsInformedRegression.jl](https://github.com/MarcusGalea/PhysicsInformedRegression.jl) is a package which allows the use of [Ordinary Least Squares](https://en.wikipedia.org/wiki/Ordinary_least_squares) to solve the inverse problem for models based on non-linear differential equations. This method has been tested and compared against non-linear optimization methods on Physics Informed Neural Networks, which is an alternative strategy for solving the same problem.  Although both methods manage to successfully estimate target parameters, Physics Informed Regression has been shown to outperform in terms of accuracy and speed. Especially for larger and more complicated models. In theory, the method could outperform all non-linear optimization strategies, assuming state derivatives can be computed from data with high accuracy. In our examples we use an implementation of finite differences (`finite_diff`) to compute these derivatives, but in practice alternative methods should be explored, especially for noisy data sampled at a low rate.

The method `physics_informed_regression` has been implemented using the [ModelingToolkit](https://docs.sciml.ai/ModelingToolkit/stable/) framework, such that it applies seemlessly to generic models, using only few lines of code. This also implies compatibility with other modules within the ecosystem, such as [Catalyst.jl](https://docs.sciml.ai/Catalyst/stable/) (see enyzyme-reaction example in the repository).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/LSCYQJ/resources/PhysicsInformedRegression.jl_FVSyF9L.pptx">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/LSCYQJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LSCYQJ/feedback/</feedback_url>
            </event>
            <event guid='28939799-3b69-5dfb-aa3c-db06a82319f9' id='44278' code='PUXBCN'>
                <room>Else (1.3)</room>
                <title>Interpretable Hierarchical Calibration of Agent-Based Models</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Scientific machine learning methods that balance mechanist equations with data-driven inference provide novel surrogates that decompose global from local behaviors inherent to high-fidelity stochastic models. This novel approach to surrogate modeling is pioneering advancements in hierarchal calibration of agent-based models that preserve foundational scientific knowledge.</abstract>
                <slug>juliacon2024-44278-interpretable-hierarchical-calibration-of-agent-based-models</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47265'>Erin Acquesta</person>
                </persons>
                <language>en</language>
                <description>Machine-learned models are increasingly being used in lieu of, to complement, or as surrogates for classic computational models. The emerging field of scientific machine learning (SciML) seeks to fuse traditional mathematical modeling with advances in machine learning to handle challenges such as the implementation of numerical solvers, model-form error estimations, and the computational expense of high-fidelity models. SciML models balance mechanist equations with data-driven inference, resulting in computational models that preserve scientific knowledge while readily adapting to the unknown through data-driven discovery. These advancements are setting the foundation for which SciML is providing novel surrogates that decompose global and local behavior inherent to high fidelity stochastic models. This presentation will introduce neural network (NN) function approximations of model-form error to close the gap between ordinary differential equations (ODE) compartmental model to an epidemiological agent-based model (ABM). This universal differential equations surrogate to the ABM allows us to preserve the foundational ODE that represents the global disease dynamics and couples it the NN model-form errors that isolate function approximations for the local behaviors of the ABM. We will then further discussion on using this UDE surrogate to automate hierarchical calibration of ABMs where we decompose global parameter estimations from local parameter influence.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PUXBCN/resources/__SAND2024-08366C_JuliaCon_2024_Acquesta_v2_FqYQ6ha.pdf">Presentation - PDF version</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PUXBCN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PUXBCN/feedback/</feedback_url>
            </event>
            <event guid='e7acc9d5-30f1-5993-a953-8cabdd3a1be6' id='43402' code='HDGJMJ'>
                <room>Else (1.3)</room>
                <title>MeshGraphNets.jl - Adaptation of MeshGraphNets as NeuralODE</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>We introduce `MeshGraphNets.jl`, an open-source library that provides the neural network architecture of *MeshGraphNets* by Google DeepMind in the context of NeuralODEs. It supports full computation on the GPU for accelerated training and evaluation of the system and provide an interface for customizing *MeshGraphNets* for your own use case. We show that the network has an improved understanding of the underlying phenomena on a network derived from a real world hydraulic brake system.</abstract>
                <slug>juliacon2024-43402-meshgraphnets-jl-adaptation-of-meshgraphnets-as-neuralode</slug>
                <track>SciML</track>
                <logo>/media/juliacon2024/submissions/HDGJMJ/meshgraphnetsjl_logo_klPxdsj.png</logo>
                <persons>
                    <person id='47373'>Lars Mikelsons</person><person id='46179'>Julian Trommer</person>
                </persons>
                <language>en</language>
                <description>Simulating physical systems with a spatially distributed domain, such as those encountered in fluid dynamics or structural mechanics, requires solving intricate and computationally demanding differential equations. By taking advantage of the mesh-like structure of these methods and incorporating machine learning methods in place of the equations we can significantly improve the computation time during system evaluation. This is the core concept of *MeshGraphNets* and will be discussed in the first part of the talk.

The second part will continue with the specific details of the design choices of the Julia packages `MeshGraphNets.jl` and its underlying core package `GraphNetCore.jl`. Designing *MeshGraphNets* as a NeuralODE allows you to incorporate the full suite of ODE solvers from `DifferentialEquations.jl` into both the training and the evaluation process. For example, you can easily switch from a derivative-based collocation training to a solver training to enable the network to more accurately learn the actual physics behind the modeled system. In order to efficiently train the NeuralODE we designed our packages with full compatibility and optimised execution on the GPU in mind.

We will conclude our talk by presenting the improvements of a NeuralODE based design in the context of an industrial application in the form of a hydraulic brake system.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/una-auxme/MeshGraphNets.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HDGJMJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HDGJMJ/feedback/</feedback_url>
            </event>
            <event guid='c4baa2aa-7af1-5e00-af0f-63bc21d603c6' id='43302' code='N8UDQS'>
                <room>Else (1.3)</room>
                <title>&#43612; Coil.jl - Lifting Julia array operations to MLIR.</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>Deep Learning models are often composed of a few building blocks operating on tensors with relatively little control flow compared to more traditional code. Coil proposes a mechanism to extract the tensor subprogram from the model call graph and lift its operations to the MLIR representation. By leveraging the IREE compiler stack, Coil is able to fuse and optimize operations across Julia function calls since the whole model can be observed.</abstract>
                <slug>juliacon2024-43302-coil-jl-lifting-julia-array-operations-to-mlir</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='46375'>Paul Berg</person>
                </persons>
                <language>en</language>
                <description>Deep Learning models are often composed of a few building blocks operating on tensors with relatively little control flow compared to more traditional code. Coil proposes a mechanism to extract the tensor subprogram from the model call graph and lift its operations to the MLIR representation. By leveraging the IREE compiler stack, Coil is able to fuse and optimize operations across Julia function calls since the whole model can be observed.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/N8UDQS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/N8UDQS/feedback/</feedback_url>
            </event>
            <event guid='3de32838-6293-5011-9c83-a49319db1f63' id='44469' code='MTLQYA'>
                <room>Else (1.3)</room>
                <title>A Deferred Acceptance propensity score package in Julia</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>The deferred acceptance (DA) propensity score approach is a highly credible causal inference method due to its ability to approximate a randomized control trial (RCT) closely. However, this method is typically very complicated and computationally expensive to run, with no published package available in any programming language ecosystem. We developed a package in Julia to run the DA propensity score approach that will be easy for applied researchers in education to use and implement.</abstract>
                <slug>juliacon2024-44469-a-deferred-acceptance-propensity-score-package-in-julia</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47440'>August Guang</person><person id='52309'>Jordan Lawson</person>
                </persons>
                <language>en</language>
                <description>The deferred acceptance (DA) propensity score approach is a highly credible causal inference method often used in education research due to its ability to approximate a randomized control trial (RCT) closely. However, this method is typically very complicated and computationally expensive to run due to the requirement of specialized knowledge about intricate school assignment systems with a lot of iterative steps and the need for a large number of simulations, i.e., assignment runs. No published package is available in any programming language ecosystem that implements and runs the method, although ad hoc code exists in SAS and R. We developed a package in Julia to run the DA propensity score approach that will be easy for applied researchers in education and impact evaluation research to use and implement and that automatically parallelizes tasks. We plan to benchmark our package against the previous ad hoc implementations to assess package performance. Future work will include incorporating other causal inference methods for a more complete package that allows users to test their own causal inference methods against the DA propensity score approach, all with an eye towards reducing the computational burden of these tests while providing credible causal inference.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MTLQYA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MTLQYA/feedback/</feedback_url>
            </event>
            <event guid='864e8574-425a-584d-97c8-22b22276099d' id='44363' code='RJEPZY'>
                <room>Else (1.3)</room>
                <title>Julia meets Field Programmable Gate Array (FPGA)</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>Julia has achieved strong result in heterogeneous compilation such as GPU or IPU. But little work has been carried out for Field Programmable Gate Array (FPGA). Although Julia language with its type system, readability and libraries is an excellent fit for High-Level Synthesis (HLS). The idea is to used Julia IR as a MLIR frontend, develop a new toolchain which can generate representation usable by MLIR HLS tools such as ScaleHLS.</abstract>
                <slug>juliacon2024-44363-julia-meets-field-programmable-gate-array-fpga</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47255'>Ga&#235;tan LOUNES</person>
                </persons>
                <language>en</language>
                <description>Julia has achieved excellent results in the field of heterogeneous compilation, attributed to the flexibility of the compilation toolchain. This is further enhanced by the extension of the compiler through GPUCompiler.jl, enabling smooth targeting of GPU or IPU. Each target defines a new LLVM pipeline tailored to its specific requirements, generating specialized LLVM Intermediate Representation (IR). Field Programmable Gate Arrays (FPGA) are other interesting targets [1], as they focus on energy efficiency and high-throughput contexts.

Programming FPGAs traditionally involves using Hardware Description Language (HDL), but this approach is suboptimal due to its reliance on solid hardware knowledge and unwieldy algorithm development. High-Level Synthesis (HLS) has been introduced to address these limitations. State-of-the-art HLS tools, such as Vitis from AMD, employ a Design-Specific Language (DSL) based on C, which is then transformed into LLVM IR using a custom Clang frontend. The LLVM IR contains hardware semantics in the form of various annotations, utilized and transformed by the HLS backend to generate HDL code, such as Verilog or VHDL.

While the approach leveraging the Vitis design suite is interesting, it has limitations, particularly due to the closed-source nature of the LLVM IR usage, making integration with new frontends cumbersome. An alternative method employed by many HLS users avoids the direct use of DSL or LLVM IR; instead, they introduce a new toolchain using Multi-Layer IR (MLIR) [2]. MLIR generalizes the concept of IR and its manipulation, introducing new IRs (referred to as dialects in MLIR terminology), which are analyzed and transformed to fit an IR sent to HLS tools.

In a manner similar to the &lt;a href=&quot;https://github.com/JuliaLabs/brutus&quot;&gt;Brutus&lt;/a&gt; prototype tool, we propose using Julia IR as an MLIR frontend. The key distinction with Brutus lies in the application of MLIR not to enhance backend compilation but to integrate with state-of-the-art HLS MLIR toolchains such as ScaleHLS [3]. Notably, we aim to leverage Julia IR singularities, such as typed IR or compactness, and incorporate these semantics into MLIR. To achieve this goal, several mandatory changes to the Julia compiler are necessary, including modifying the inliner policy and developing a new toolchain using MLIR with an original dialect. The toolchain for translating Julia IR to MLIR standard dialects is actively being developed, and the compilation stack will be &lt;a href=&quot;https://gitlab.inria.fr/glounes/judias.jl&quot;&gt;open-sourced&lt;/a&gt; and proposed as a tool to the community. This enables the possibility to write Julia application that will run on specific FPGA target.

References:

[1] B. Biggs, I. McInerney, E. C. Kerrigan, and G. A. Constantinides, High-level Synthesis using the Julia
Language, Feb. 2022. arXiv: 2201.11522 [cs].
[2] C. Lattner, M. Amini, U. Bondhugula, et al., MLIR: A Compiler Infrastructure for the End of Moore&#8217;s
Law, Feb. 2020. arXiv: 2002.11054 [cs].
[3] H. Ye, C. Hao, J. Cheng, et al., ScaleHLS: A New Scalable High-Level Synthesis Framework on Multi-Level
Intermediate Representation, Dec. 2021. arXiv: 2107.11673 [cs].</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RJEPZY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RJEPZY/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Struct (1.4)' guid='6307780f-c982-5d06-a25e-7461874db936'>
            <event guid='324896d4-05c6-50ae-8bb0-172e5205f622' id='52825' code='8LQNZL'>
                <room>Struct (1.4)</room>
                <title>Model-based Design for System Product Development</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:40</duration>
                <abstract>JuliaHub has been developing JuliaSim - a modern modeling and simulation tool that leverages Julia and ModelingToolkit.jl&#8217;s unique capabilities. In this talk, we will show how JulaSim&#8217;s capabilities are being used across industrial, automotive and aviation firms. Gary Mansouri, Chief Architect of Systems MBE at Boeing, will join us for a conversation on the process of model based design.</abstract>
                <slug>juliacon2024-52825-model-based-design-for-system-product-development</slug>
                <track>General</track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person><person id='53734'>Viral B. Shah</person><person id='54983'>Gary Mansouri</person>
                </persons>
                <language>en</language>
                <description>This Birds of a Feather will discuss how JuliaHub and Boeing work together to build tools and Julia libraries for aviation and on the process of model based design and digital engineering related to systems product development.
This session will be lead by Gary Mansouri, Chief Architect of Systems MBE at Boeing and moderated by Chris Rackauckas and Viral Shah. Boeing is a leading global aerospace company and is committed to innovating for the future, leading with sustainability, and cultivating a culture based on the company&#8217;s core values of safety, quality and integrity.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8LQNZL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8LQNZL/feedback/</feedback_url>
            </event>
            <event guid='1d4c6fe9-bdf2-5698-b0a3-d919d0009140' id='44381' code='AAHKS7'>
                <room>Struct (1.4)</room>
                <title>JuliaGeo BoF: shared interfaces and plans for geospatial julia</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>01:00</duration>
                <abstract>The Julia ecosystem for handling geospatial data and analysis is growing and improving. This is a session for anyone interested in geo in Julia to meet package contributors and users to discuss future direction and collaboration efforts.  

In this community building session we aim to:

- Hear what people are doing in Julia and Geo
- Develop group goals and common understanding for ecosystem coherence 
- Uncover gaps and rough edges in the ecosystem
- Lower the barrier to getting involved</abstract>
                <slug>juliacon2024-44381-juliageo-bof-shared-interfaces-and-plans-for-geospatial-julia</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/AAHKS7/juliageo_llm2D2H.svg</logo>
                <persons>
                    <person id='47364'>Rafael Schouten</person><person id='47367'>Maarten Pronk</person><person id='46521'>Felix Cremer</person>
                </persons>
                <language>en</language>
                <description>A rough program:
- Introductions: what are you using Julia for, in three words
- Show and tell: share your geo packages and projects that don&apos;t have their own JuliaCon talks
- The good, the bad and the ugly in Julia geospatial: a constructive session of gripe-driven development
- Slido poll with questions on datasets, pain points, nice things, integrations, major wishes for the ecosystem</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/AAHKS7/resources/JuliaGeo_BoF_PzfkKuI.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/AAHKS7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AAHKS7/feedback/</feedback_url>
            </event>
            <event guid='92c9b4d6-08e5-5f79-9d5c-83c985f32067' id='44491' code='GLMKTM'>
                <room>Struct (1.4)</room>
                <title>Reactive Programmer Support Group</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>01:00</duration>
                <abstract>Being reactive is often considered a bad trait. Taking a reactive approach to the design of systems involving asynchronous behavior, i.a. user interaction through UIs, coordinating long-running jobs, can often be beneficial and result in clean and robust architectures.

This session aims to bring together a group of people to share approaches, experiences, challenges and wins in designing and building these types of systems in Julia.</abstract>
                <slug>juliacon2024-44491-reactive-programmer-support-group</slug>
                <track>General</track>
                
                <persons>
                    <person id='47043'>Joris Kraak</person>
                </persons>
                <language>en</language>
                <description>Taking a reactive approach to the design of systems involving asynchronous behavior can often be beneficial and result in clean and robust architectures. The Julia ecosystem provides many libraries and frameworks to support building reactive systems, for instance, Observables, Pluto, ReactiveGraphs, Rocket, Signals, Stipple, just to name a few.

Designing reactive systems requires a bit of a shift in thinking due to the uncertain nature of asynchronicity, which can take a fair bit of practice, especially when moving beyond mapping simple UI elements onto data structures.

This session aims to bring together a group of people to share approaches, experiences, challenges and wins in designing and building these types of systems in Julia. Which packages they prefer for which types of tasks and why, what types of issues are common and how they are solved, etc.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GLMKTM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GLMKTM/feedback/</feedback_url>
            </event>
            <event guid='c69fb7d2-d998-5606-8d0f-2dc8726b72da' id='43949' code='ZYLDA7'>
                <room>Struct (1.4)</room>
                <title>&#127880; Pluto - Teaching with Pluto</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-10T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:00</duration>
                <abstract>We would like to have an open discussion on &quot;How to use Pluto for teaching&quot; to discuss best didactic practise for teaching with Pluto for supervised and self-learning experience
The aim is to raise awareness for good teaching practise (design and instructions) to improve learning experience.</abstract>
                <slug>juliacon2024-43949-pluto-teaching-with-pluto</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47024'>Luca Ferranti</person><person id='47106'>Gerhard Dorn</person>
                </persons>
                <language>en</language>
                <description>Open space, everyone welcome, spontaneous contributions welcome

Focus on users&apos; learning experience in different setups:
1) guided in class (as homework, additional material and so on)
2) self-study (stumbled over the notebook in the web - MOOC like)

Discuss some sample notebooks from a didactic point of view (like 2).

Design and instructions for good learning experience depending on following factors:
- the setup (self or supervised)
- the audience
- expectation of passive reading or active coding

Agenda:
- Introduction of participants round (2 minutes each)
- Frame the two learning setups (and collect feedback) and the learner&apos;s journey
- Brainstorm Dos and Don&apos;s for each setup
- Review two sample notebooks together
- Harvest insights of good design and instructions</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://miro.com/app/board/uXjVK0TG15I=/?share_link_id=528038057724">Miro Board to share your Pluto lectures and notebooks</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZYLDA7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZYLDA7/feedback/</feedback_url>
            </event>
            <event guid='09201d3d-a37b-515b-aa7a-0592dfc58bdf' id='44367' code='SQWJ7G'>
                <room>Struct (1.4)</room>
                <title>Discussing (Gender) Diversity in the Julia Community</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>01:00</duration>
                <abstract>Julia Gender Inclusive is an initiative that aims to provide a supportive space for all gender minorities in the Julia community. In this BoF session we hope to discuss the status of (gender) diversity in the community, plan initiatives, and engage supportive allies. While we focus on gender diversity, we would like to open the discussion up to all facets of diversity to connect organizers of different diversity initiatives and start new initiatives. We invite everyone to get involved!</abstract>
                <slug>juliacon2024-44367-discussing-gender-diversity-in-the-julia-community</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47512'>Xuan (Tan Zhi Xuan)</person><person id='47346'>Let&#237;cia Madureira</person><person id='44316'>Skylar Gering</person><person id='47352'>Julia Gender Inclusive</person><person id='47422'>Kim Louisa Auth</person>
                </persons>
                <language>en</language>
                <description>The objective of this BoF is to create space for discussion and community building among people who feel their gender is underrepresented within the Julia community, as well as allies who want to support us. We aim to create a safe and fruitful discussion about gender diversity, increase awareness of our current initiatives such as the Julia Gender Inclusive Community Hours, receive input on new actions we can take as Julia Gender Inclusive, and reach out to others who want to get involved.
This year, we want to further enhance the contact between different diversity initiatives in the community and open the discussion up to different aspects of diversity.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/SQWJ7G/resources/BoF_8SdBV6Z.pdf">Diversity BoF slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/SQWJ7G/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SQWJ7G/feedback/</feedback_url>
            </event>
            <event guid='d6b57e59-c8dd-5a60-953a-72e55786b505' id='43509' code='R8L3AE'>
                <room>Struct (1.4)</room>
                <title>Tsetlin.jl &#8211; Tsetlin Machines in Julia</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>We present Tsetlin.jl, a Julia implementation of Tsetlin Machines, which are interpretable machine learning models based on propositional logic. Tsetlin Machines have gained prominence by achieving high accuracy on a variety of problems, while also being efficient in terms of speed, memory use and energy consumption. While the original Tsetlin Machine works on binary data, later extensions can handle continuous and categorical data, and have found applications to images, text and speech. Tsetlin</abstract>
                <slug>juliacon2024-43509-tsetlin-jl-tsetlin-machines-in-julia</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='46557'>Darshana Abeyrathna Kuruge</person><person id='46565'>Andreas Hafver</person>
                </persons>
                <language>en</language>
                <description>In 2018, Prof. Ole Christoffer Granmo introduced the Tsetlin Machine and named it after Michael Lvovitch Tsetlin, who invented the Tsetlin automaton. Tsetlin automata are binary state machines that make decisions based on a reward and penalty scheme, and the Tsetlin Machine recognizes patterns by collaboratively organizing these automata into teams. The Tsetlin automata within a team vote whether a pattern is present or not in the input, and the collective decision determines the output.

Some advantages of Tsetlin Machines include their interpretability and inherent parallelizability. They have a low energy and memory footprint, yet they have equaled or outperformed state-of-the-art methods on various benchmarks. 

The algorithms contained in Tsetlin.jl are mostly adapted from the Python versions in https://github.com/cair/TsetlinMachine/. As we get more experienced with Julia, we will try to make use of the strengths of the language to improve the efficiency and flexibility of the models.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/R8L3AE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/R8L3AE/feedback/</feedback_url>
            </event>
            <event guid='19596ee0-93a3-5976-a2a1-eef2ab02aa70' id='43249' code='ZWVPGG'>
                <room>Struct (1.4)</room>
                <title>&#127880; Pluto.jl &#8211; is scientific computing accessible?</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>A poster about accessibility in Pluto and in scientific-computing-world. How can Pluto make scientific computing more accessible, and how can Pluto be more accessible? Also free stickers!! and you can meet the Pluto devs!</abstract>
                <slug>juliacon2024-43249-pluto-jl-is-scientific-computing-accessible</slug>
                <track>Posters</track>
                <logo>/media/juliacon2024/submissions/ZWVPGG/cutebanner_l9vFsgO.png</logo>
                <persons>
                    <person id='46314'>Fons van der Plas</person>
                </persons>
                <language>en</language>
                <description>Pluto&apos;s mission statement is to *make scientific computing more accessible and fun*! We all know that computers are fun, but what does it mean for computing to be accessible?

This poster highlights different areas of accessibility in scientific computing:
- Taking skills into account: easy installation, simple API.
- Taking learning backgrounds into account: documentation like &quot;Julia for Matlab users&quot; or &quot;Pluto for Excel users&quot;.
- Web accessibility: screen reader support, high-contrast mode.
- Availability: free and open source, easy to find.

The Pluto developers are excited to meet you and discuss the topic at this poster! Come visit us and get a free Pluto sticker :)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZWVPGG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZWVPGG/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Method (1.5)' guid='b0079e1b-0c12-5b12-b0b5-0dc1f3cd563e'>
            <event guid='2121126b-22bf-588c-af32-333ca8e823d4' id='44462' code='GCNMNT'>
                <room>Method (1.5)</room>
                <title>Teaching Structural Bioinformatics with BiochemicalAlgorithms.jl</title>
                <subtitle></subtitle>
                <type>Experience</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:03</duration>
                <abstract>Teaching a structural bioinformatics course is challenging as the audience typically consists of diverse academic backgrounds. Here, we describe our experience on teaching a course based on our framework **BiochemicalAlgorithms.jl**, which is a redesign of the open source C++-framework Biochemical Algorithms Library (BALL). The use of Julia allowed to focus more on the actual teaching goals, while the students of the former C++-based course were distracted by complex development cycles.</abstract>
                <slug>juliacon2024-44462-teaching-structural-bioinformatics-with-biochemicalalgorithms-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='47342'>Jennifer Leclaire</person><person id='51308'>Andreas Hildebrandt</person>
                </persons>
                <language>en</language>
                <description>Structural Bioinformatics is a highly interdisciplinary research area. A teaching course in this field typically covers topics from various disciplines such as physics(e.g., Newtonian mechanics), mathematics(numerical optimization) and biochemistry (molecular entities like atoms, molecules,...) etc. In order to run and develop applications successfully a profound knowledge of programming and software development is required. 
In our course, the switch from C++ to Julia enabled the students to focus on learning the algorithms and data structures implemented in BiochemicalAlgorithms.jl.  The usage of C++ often impeded learning progress starting already at the level of setting up a development environment for BALL, which is a nontrivial task. In contrast, using Julia  resulted in accelerated development times for applications -- based on students feedback -- in more fun.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/hildebrandtlab/BiochemicalAlgorithms.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GCNMNT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GCNMNT/feedback/</feedback_url>
            </event>
            <event guid='e380dd25-6b15-5655-b770-cc1d9b6a74ba' id='43871' code='VJ9VQJ'>
                <room>Method (1.5)</room>
                <title>Notes from an All-Julia Honours Thesis</title>
                <subtitle></subtitle>
                <type>Experience</type>
                <date>2024-07-10T10:53:00+02:00</date>
                <start>10:53</start>
                <duration>00:03</duration>
                <abstract>For my Honours thesis, I extended Udell et al.&apos;s work in Generalised Low-Rank Models (GLRMs), making GLRMs a tool for projecting data sets to a &quot;fair&quot; space according to various definitions of fairness. This enables the identifying of features that may act as proxy discriminators for protected characteristics such as gender and age. In this talk, I will share my experience of completing a year-long thesis, using Julia as the primary programming language, from zero Julia knowledge.</abstract>
                <slug>juliacon2024-43871-notes-from-an-all-julia-honours-thesis</slug>
                <track>General</track>
                
                <persons>
                    <person id='47836'>Vikram Sondergaard</person>
                </persons>
                <language>en</language>
                <description>I will spend most of the three minutes talking about my journey learning Julia, from first encountering it in Udell et al.&apos;s code to submitting an artifact written entirely in Julia. Because my thesis is in machine learning/computational humanities, I would like to highlight the differences, and in particular the advantages, of programming in Julia where most people would program in Python. It would also be nice to garner interest in making libraries for fair machine learning in Julia, which, as far as I know, do not currently exist.

Two major benefits of working with Julia were its performance advantages and intuitive benchmarking suite. As a result, programming in Julia has impacted the outcome of my thesis, especially in particularly tight deadlines. A major moment in my thesis was identifying that my quadratic-time loss function was too computationally expensive to get any meaningful results in time for a major deadline, which I only identified as a result of Julia&apos;s benchmarking tools. Being able to compare heap allocations between different algorithms was a major step in my developing a linear-time approximation of my loss function. 

Another major advantage I found is that Julia is a new language, and the community is tight-knit and supportive. In particular, there was one academic at my home university who is involved in the Julia community, who took the time out to have a meeting with me discussing using distributed programming in Julia to speed up my quadratic-time loss function.

Finally, I would like to briefly mention some of the challenges I encountered in programming my thesis artifact in Julia. One particular issue I encountered was an incompatibility between Julia&apos;s CUDA library and the matrix inverse function in its LinearAlgebra library, which I only managed to solve by closely following the stack trace and reading more deeply about array programming in CUDA.jl.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VJ9VQJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VJ9VQJ/feedback/</feedback_url>
            </event>
            <event guid='57774099-e5e8-5444-b44f-15a9b325839e' id='44465' code='NVFAVL'>
                <room>Method (1.5)</room>
                <title>My Experience With Deep Learning Research in Julia.</title>
                <subtitle></subtitle>
                <type>Experience</type>
                <date>2024-07-10T10:56:00+02:00</date>
                <start>10:56</start>
                <duration>00:03</duration>
                <abstract>I spent about one year leveraging Julia for DL research in Computer Vision, including using `Flux.jl`, `FastAI.jl`, `Metalhead.jl`, and loading python models through `PyChainCall.jl`. Happy to discuss my experience.</abstract>
                <slug>juliacon2024-44465-my-experience-with-deep-learning-research-in-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47435'>Romeo Valentin</person>
                </persons>
                <language>en</language>
                <description>I spent about one year leveraging Julia for DL research in Computer Vision, including using `Flux.jl`, `FastAI.jl`, `Metalhead.jl`, and loading python models through `PyChainCall.jl`. 
Happy to discuss my experience, including the good (flexibililty, hacking packages, fast custom kernels), the bad (missing models, difficulty to collaborate), and the ugly (gradient bugs, precompile time).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NVFAVL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NVFAVL/feedback/</feedback_url>
            </event>
            <event guid='3f11ba8c-f87f-59c3-bc62-b4434d8c746a' id='43486' code='PFAA8M'>
                <room>Method (1.5)</room>
                <title>MaxEntropyGraphs.jl: Random Graphs with JuliaGraphs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>MaxEntropyGraphs.jl introduces robust graph randomization to Julia using maximum entropy models. It enables the generation of unbiased null models from real networks for hypothesis testing. The package is completely integrated with JuliaGraphs ecosystem and enables researchers to generate random graphs that preserve specific properties, facilitates hypothesis testing and the exploration of network metrics, making it a valuable tool for network scientists.</abstract>
                <slug>juliacon2024-43486-maxentropygraphs-jl-random-graphs-with-juliagraphs</slug>
                <track>Graphs</track>
                
                <persons>
                    <person id='46535'>Bart De Clerck</person>
                </persons>
                <language>en</language>
                <description>Network analysis is a powerful tool for understanding the structure and function of complex systems, such as social networks, ecological networks, and biological networks. By examining the connections and interactions between nodes in a network, researchers can gain insights into the underlying processes and patterns that govern these systems. These real-world systems or networks can be represented by the mathematical object that is a graph.

Graph randomization is a method commonly used in network analysis to establish null hypotheses and compare an observed graph against random expectations within an ensemble of graphs. For example, graph randomization can be used to investigate whether a particular network exhibits a higher level of clustering than expected by chance, which can provide insights into the presence of community structures within the network. There are many ways to do graph randomization, but maximum entropy null models are specifically useful due to their unbiased parameter estimation, incorporation of constraints, flexibility, statistical robustness, and mathematical simplicity.

The MaxEntropyGraphs.jl package can be used to compute the likelihood-maximizing parameters for different null models for a variety of graphs (directed, undirected, bipartite, weighted etc.). It enables users to sample graphs from the ensemble and to compute the expected value of a graph metric directly from the ensemble.

The package uses the JuliaGraphs ecosystems for everything graph related, makes us of well-established Julia optimization tools (Optimization.jl) and numerical solvers (NLsolve.jl) to obtain the graph&#8217;s likelihood maximizing parameters; leverages the JuliaDiff ecosystem for automatic differentiation and groups the different null models in a single framework.

Currently, there are no existing Julia packages offering this functionality. In Python, there are some packages that provide similar functionality (NEMtropy, BiCM, etc.), but these do not always integrate directly with an established Python ecosystem for graphs, use a custom implementation for the numerical solver(s), and do not offer the possibility of using automatic differentiation. Performance testing has shown that the Julia implementation is typically faster than the equivalent Python packages for networks of different sizes and densities. The way forward for this package is to include additional null models that might be relevant for more advanced concepts such as higher-order or multilayer graphs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PFAA8M/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PFAA8M/feedback/</feedback_url>
            </event>
            <event guid='3659a121-2d31-53b1-aeec-15d6837b6658' id='43300' code='LPWA8D'>
                <room>Method (1.5)</room>
                <title>Fast and generic Hidden Markov Models</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>HMMs are a very useful statistical framework, but existing implementations often limit user creativity. With Julia, we can have it all: custom probability distributions, arbitrary types, numerical stability, automatic differentiation, exogenous controls... without giving up on performance!
This talk will introduce the package `HiddenMarkovModels.jl` and its main features, but also share useful lessons about leveraging abstraction in scientific software.</abstract>
                <slug>juliacon2024-43300-fast-and-generic-hidden-markov-models</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/LPWA8D/logo_onLeGcP.png</logo>
                <persons>
                    <person id='46362'>Guillaume Dalle</person>
                </persons>
                <language>en</language>
                <description>A Hidden Markov Model is composed of a hidden state sequence and a visible observation sequence. The current state only depends on the previous state, and the current observation only depends on the current state. These assumptions give rise to simple and efficient algorithms for tasks like state inference and parameter estimation. As a result, HMMs are popular in many fields ranging from bioinformatics to speech processing or industrial maintenance.

For lack of imagination (or implementations), people often stick to Gaussian HMMs, where each observation follows a normal distribution whose mean depends on the latent state. But if you are willing to think outside the box, you can ask interesting questions:

- what if I want to write a custom observation distribution?
- can I use arbitrary number types for increased precision?
- my transition matrix is sparse, will it break things?
- how do I compute gradients of the loglikelihood?
- the dynamics depend on external control variables, is that even allowed?

All of these demands (and more) are met by `HiddenMarkovModels.jl`, which is the topic of the present talk. We will embark on a tour of the main design ideas, and find that each layer of abstraction unlocks new features without sacrificing speed. The end result is one of the fastest and most flexible HMM packages out there, suitable for a variety of industrial or academic applications.

Package repository: &lt;https://github.com/gdalle/HiddenMarkovModels.jl&gt;
Documentation and tutorials: &lt;https://gdalle.github.io/HiddenMarkovModels.jl/dev/&gt;
Presentation slides: &lt;https://gdalle.github.io/JuliaCon2024-HMM/&gt;
Video: &lt;https://www.youtube.com/live/1c4TTosBzzY?feature=shared&amp;t=9672&gt;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/gdalle/HiddenMarkovModels.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/LPWA8D/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LPWA8D/feedback/</feedback_url>
            </event>
            <event guid='e372bcdb-fa7c-5958-81b4-6b26d3df72ae' id='43568' code='HTCDFD'>
                <room>Method (1.5)</room>
                <title>Probabilistic inference using contraction of tensor networks</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>TensorInference, a package for exact probabilistic inference in discrete graphical models, capitalizes on recent tensor network advancements. Its tensor-based engine features optimized contraction ordering methods, an aspect vital to computational performance. Additionally, it incorporates optimized BLAS routines and GPU technology for enhanced efficiency. In a comparative evaluation with similar libraries, TensorInference demonstrates superior scalability for models of increasing complexity.</abstract>
                <slug>juliacon2024-43568-probabilistic-inference-using-contraction-of-tensor-networks</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/HTCDFD/logo_CASno7I.svg</logo>
                <persons>
                    <person id='46615'>Martin Roa-Villescas</person>
                </persons>
                <language>en</language>
                <description>GitHub repo: https://github.com/TensorBFS/TensorInference.jl
JOSS publication: https://joss.theoj.org/papers/10.21105/joss.05700

Reasoning under uncertainty is a key challenge in fields like AI, medical diagnosis, computer vision, and natural language processing. Probabilistic graphical models (PGMs) are crucial for this, representing complex systems&apos; joint probability distributions efficiently.

Despite PGMs&apos; utility, probabilistic inference remains a complex task due to the high-dimensional combinatorial optimization involved. To address this, we introduce TensorInference.jl, a Julia package that combines PGMs with tensor network computational power to improve probabilistic inference performance for complex models.

Probabilistic inference calculates probabilities from observed data using probability theory axioms. Inference methods are categorized into exact and approximate. Exact methods face NP-hard computational challenges related to the model&apos;s treewidth. In contrast, approximate methods like Markov chain Monte Carlo and variational inference, implemented in packages like Stan and PyMC3, offer scalability but lack formal accuracy guarantees. Thus, exact methods are resurging for their accuracy potential.

TensorInference.jl utilizes recent tensor network advances to provide exact high-performance solutions for inference problems. It enables tasks like calculating partition functions, computing marginal probabilities, finding likely variable assignments, and drawing posterior samples.

Tensor networks, like PGMs, are adept at representing complex system states. Computational efficiency in tensor networks hinges on the contraction sequence; hence, optimizing this order is vital.

TensorInference.jl enhances computational tasks using differentiable programming, supports generic element types, and allows for hyper-optimized contraction order settings. It includes advanced contraction methods including a local search-based method, denoted as TreeSA, two methods based on min-cut algorithms, denoted as SABipartite and KaHyParBipartite, as well as a greedy algorithm, denoted as GreedyMethod. Additionally, it incorporates BLAS routines and GPU technology for improved performance.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HTCDFD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HTCDFD/feedback/</feedback_url>
            </event>
            <event guid='74e159ae-20ec-5f57-a676-7229ba80fb34' id='43193' code='FVRB7X'>
                <room>Method (1.5)</room>
                <title>OpenAPI.jl for easy HTTP APIs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>The OpenAPI Specification is a machine-readable interface definition language for HTTP APIs. The Julia package OpenAPI.jl along with Julia code generator plugins to OpenAPI Generator help use OpenAPI in Julia projects. This talk will focus on giving a broad overview of OpenAPI and will demonstrate end-to-end examples of using it in Julia - begin with a specification file, generate both server and client side code, generate docs, publish, and use a service.</abstract>
                <slug>juliacon2024-43193-openapi-jl-for-easy-http-apis</slug>
                <track>General</track>
                
                <persons>
                    <person id='46262'>Tanmay Mohapatra</person>
                </persons>
                <language>en</language>
                <description>OpenAPI is a popular specification language for HTTP APIs. Many popular HTTP services publish specifications for their APIs in the OpenAPI format. It is useful in defining, versioning, and managing APIs for applications architected with HTTP based services. The Julia package OpenAPI.jl, along with its corresponding plugin to the `openapi-generator` project provides a way to leverage that in Julia applications.

This talk will aim to give a quick introduction of OpenAPI, and demonstrate how to use the OpenAPI.jl package in Julia. It would demonstrate how to generate a Julia client quickly to consume a third party service that has published an OpenAPI specification, which is probably a common need. It would also walk through the complete process of defining a spec and generating both server and client side code in Julia.

During the talk, at various points, we shall touch upon some internals of the package and code generator, and also some opportunities for improvements.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FVRB7X/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FVRB7X/feedback/</feedback_url>
            </event>
            <event guid='7365bb32-9550-53f9-abdf-c315e9519938' id='43403' code='R7MV7U'>
                <room>Method (1.5)</room>
                <title>A retrospect on Julia web services: HTTP, performance and memory</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>A year ago we demoed a Julia-based web application to 50 concurrent users - it failed catastrophically. We launched a team-wide effort to find the root cause of it. Was it Julia or was it our code? Turns out, it was both.</abstract>
                <slug>juliacon2024-43403-a-retrospect-on-julia-web-services-http-performance-and-memory</slug>
                <track>General</track>
                
                <persons>
                    <person id='46520'>Krystian Guli&#324;ski</person><person id='46478'>Panagiotis Georgakopoulos</person>
                </persons>
                <language>en</language>
                <description>Julia based web services are nothing new, but running and scaling them in production was surely going to cause us some issues. After 6 months of investigation and fixes we&#8217;re ready to share results and the knowledge acquired. In this talk we&#8217;re going to discuss:

1. Tools &amp; Observability primitives to identify bottlenecks and root causes
2. Findings and mitigations for the issues that included:
    1. Blocking/sync code paths
    2. Memory Leaks/GC performance
    3. HTTPS
    4. Common performance pitfalls
    5. Database performance (connection pooling &amp; non-blocking approach)
3. HTTP.jl performance analysis &amp; pitfalls [1]
4. How to structure HTTP services with performance in mind
5. Beyond HTTP.jl [2]

[1] https://discourse.julialang.org/t/julia-can-be-better-at-doing-web-a-benchmark/103300
[2] https://github.com/nginx/unit, https://github.com/JuliaWeb/HTTP2.jl and other up &amp; coming approaches</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/R7MV7U/resources/A_retrospect_on_Julia_web_services__HTTP_perfo_P80tLvN.pdf">slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/R7MV7U/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/R7MV7U/feedback/</feedback_url>
            </event>
            <event guid='8c04aa11-f8e0-5c2f-8be0-f4d46bff181d' id='44199' code='PV7EPE'>
                <room>Method (1.5)</room>
                <title>SpatialDependence.jl: exploratory spatial data analysis</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>SpatialDependence.jl is a Julia package for exploratory spatial data analysis (ESDA), spatial weight creation, and testing for spatial dependence (spatial autocorrelation). The package contains functions to create and handle spatial weights matrices from polygon and point geometries. It also has functions for calculating spatial lags, testing for global and local spatial autocorrelation, and plotting choropleth maps.</abstract>
                <slug>juliacon2024-44199-spatialdependence-jl-exploratory-spatial-data-analysis</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='47192'>Javier Barbero</person>
                </persons>
                <language>en</language>
                <description>The package SpatialDependence.jl contains functions to create and handle spatial weights matrices from polygon and point geometries. It also has functions for calculating spatial lags, testing for spatial autocorrelation, and plotting choropleth maps.

The talk will show how the SpatialDependence.jl package introduces an architecture for handling spatial weight matrices representing the observation&apos;s spatial relationship. The integration with GeoInterface.jl allows the creation of spatial weight matrices from polygons and points geometry obtained from different data sources.

We present how to plot choropleth maps using different algorithms to classify observations. In addition, global and local spatial autocorrelation statistics can tell us if geographically close observations have similar or dissimilar values and help us to identify clusters.

During the talk, we will briefly describe the package&apos;s capabilities in a non-technical language, and how was the experience in developing it in the Julia language.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/javierbarbero/SpatialDependence.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PV7EPE/resources/Slides_SpatialDependence_Vkb7HZ7.pdf">Presentation Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PV7EPE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PV7EPE/feedback/</feedback_url>
            </event>
            <event guid='3fbee86f-5344-5501-9cb7-68dbb31ac9b0' id='39350' code='PSEQNH'>
                <room>Method (1.5)</room>
                <title>Curling with Julia: A brief overview of CurlHTTP.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>We have a Julia application that communicates with other services over REST APIs. These services use mutual TLS for authentication, which in turn requires the use of client side TLS certificates. We found that LibCURL was the best way to do HTTPS with client certificates, but with a very C like interface, it was hard for Julia developers to use.

This led us to build CurlHTTP, which is a very Julia like interface for doing HTTP(S) with LibCURL.</abstract>
                <slug>juliacon2024-39350-curling-with-julia-a-brief-overview-of-curlhttp-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='43274'>Philip Tellis</person>
                </persons>
                <language>en</language>
                <description>LibCURL.jl and HTTP.jl are the two primary ways to write HTTP clients in Julia. They both have their pros and cons.

##### HTTP.jl
While HTTP.jl has a very easy to use interface to access the majority of features, including cookie handling and streaming, it suddenly becomes very complicated when you try to use TLS client certificates. HTTP.jl also doesn&apos;t have the ability to do multiple downloads in parallel on a single execution thread.

##### LibCURL.jl
LibCURL makes it very easy to do mutual TLS, supporting client and server TLS certificates with well documented APIs, and has a well documented multiple download interface, but it provides a fairly low level API, and is primarily suited to developers familiar with writing applications in C.

For our use case, we decided to build a higher level Julia wrapper around LibCURL&apos;s HTTP functionality (similar to what SMTPClient.jl does for SMTP over LibCURL), while making some of curl&apos;s more complicated features easy to use in a Julian way.

##### CurlHTTP.jl
The result is `CurlHTTP.jl`, which provides a high level HTTP interface to LibCURL, supporting single and multiple downloads, mutual TLS, and data streaming.

#### Talk Structure
This talk will first briefly cover the features of `CurlHTTP` and how to use it.
We will then spend a little more time going into some of the nuances and gotchas we faced while developing this library, particularly with passing Julian data types through the C interface and back to our callbacks, and with dealing with memory management in a clean way.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://docs.google.com/presentation/d/14boXsFdlHFz2FcXcXXLpj4j3dcMvd2m0Qbb3JjemzWI/edit?usp=sharing">Live Presentation</link>
                
                    <link href="https://speakerdeck.com/bluesmoon/curling-with-julia-juliacon-2024">Online Presentation</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PSEQNH/resources/Curling_with_Julia_1_FlQUfoF.pdf">Downloadable Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PSEQNH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PSEQNH/feedback/</feedback_url>
            </event>
            <event guid='9202f73a-0e8b-5666-8c6b-b5dc79543e47' id='44297' code='ZGPPW7'>
                <room>Method (1.5)</room>
                <title>EditBoundary.jl - a quest to revive structured quad meshes</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>We published a paper to help Geospatial data scientists when dealing with large noisy contours like electoral maps, water bodies or digital contours. We developed EditBoundary.jl, a Julia native semi-manual technique to reduce noise and points while respecting fidelity with 2 new algorithms.

We are excited to apply this method to bring structured quad meshes back into the mainstream - they deserve better!</abstract>
                <slug>juliacon2024-44297-editboundary-jl-a-quest-to-revive-structured-quad-meshes</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='47281'>Miguel Raz Guzm&#225;n Macedo</person><person id='47282'>Ivan M&#233;ndez</person>
                </persons>
                <language>en</language>
                <description>In some problems of cartography and hydrology the contours of water bodies and coastlines are represented by polygonal curves with a high level of detail and thus require a large number of points. The visualization and processing of these contours may have an enormous computing demand on Geographic Information Systems due to such data scales; therefore shape preserving contours with fewer points are needed to deal with these issues. Our overarching research project, UNAMALLA, relies on EditBoundary.jl to carry out this task.

We developed algorithms in Julia for such polygonal approximation. In our experiments, they handle 90% point elimination adequately, and at interactive speeds, even for highly detailed and noisy polygons.

This work will become part of Meshes.jl and the GeoStats.jl ecosystem for the benefit of all, and is 100% written in Julia.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/miguelraz/EditBoundary.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZGPPW7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZGPPW7/feedback/</feedback_url>
            </event>
            <event guid='2eceae5a-f7c1-5479-b3b3-724114b5fbba' id='44076' code='J39XGJ'>
                <room>Method (1.5)</room>
                <title>Improving the life-cycle of tensor algorithm development</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>In this talk we showcase the advancements of the low-level implementation of ITensors. These advancements seek to tighten the gap between rapid algorithmic development and efficient exascale implementations. Advancements were attained through the generic redevelopment of the backend NDTensors module. We showcase our work via acceleration of the DMRG optimization of the one- and two-dimensional model Hamiltonian problems with controllable accuracy using GPU accelerators.</abstract>
                <slug>juliacon2024-44076-improving-the-life-cycle-of-tensor-algorithm-development</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='49076'>karl pierce</person>
                </persons>
                <language>en</language>
                <description>As the accessibility to advanced computational resources, such as CPU, GPU, and QPU, becomes common to researchers across theoretical and computational disciplines, it is more important than ever to construct robust and generic software frameworks that can facilitate rapid algorithmic development on such resources. One of the biggest challenges researchers have faced in algorithmic development is the complexity of exascale and heterogeneous computer architectures. Some challenges are quite complex, such as constructing efficient memory-distributed algorithms, while others are simple yet cumbersome, such as the syntactic differences in vendor-developed, processor-specific languages. In our most recent efforts in the ITensors software suite, we are attempting to tackle these issues head-on using generic programming. 
The goal of the ITensors package is to create a domain-specific language for tensor arithmetic and tensor algebra built from the ground up using Julia&apos;s robust features in coordination with thoughtful generic programming practices. ITensors is the meeting point between the lower-level tensor implementation and the higher-level, problem-specific algorithm development. In this talk, I will focus on the low-level implementation in the NDTensors module where we are developing generic practices to handle implementation complexities such as dense and sparse tensor arithmetic, buffered memory management, linear and multilinear algebra, GPU implementations, task-management and scheduling, and beyond. We underscore the power of our generic programming strategy by showing multiple methods for accelerating the DMRG optimization of the one- and two-dimensional Hubbard and Heisenberg models, which require only a small number of changes to existing ITensor code and can take advantage of GPU accelerators.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/J39XGJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/J39XGJ/feedback/</feedback_url>
            </event>
            <event guid='283c8a0b-e3cf-5f6a-ae0d-b6fc1b95a196' id='44049' code='X8J38K'>
                <room>Method (1.5)</room>
                <title>Large-Scale Mechanistic Modeling of Immune Pathway in Julia</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>In this poster, a large-scale mathematical model of the JAK-STAT pathway was implemented in Julia to explore IFN-I ligand discrimination. Model fitting, often time-consuming in large-scale models, was performed to different temporal IFN-I inputs. Julia&#8217;s efficiency significantly accelerated this process by expediting sensitivity analysis, parameter estimation and identifiability analysis. The resulting model facilitates investigation into the mechanisms underlying ligand discrimination.</abstract>
                <slug>juliacon2024-44049-large-scale-mechanistic-modeling-of-immune-pathway-in-julia</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47045'>Michelle van Haften</person>
                </persons>
                <language>en</language>
                <description>Type I interferons (IFN-I) play a crucial role in the cell&apos;s antiviral, antiproliferative, and immunomodulatory functions. Although multiple IFN-I subtypes activate the JAK-STAT pathway through the same receptor, they induce distinct downstream activation patterns. The mechanisms responsible for this ligand discrimination remain largely unclear. Hence, we employed the Julia Language to adapt the ODE model of the JAK-STAT pathway developed by Kok et al. to investigate IFN-I discrimination, focusing on IFN&#945; and IFN&#946;. This model, consisting of 41 state variables and 73 parameters, was directly imported into Julia from SBML.  

Various temporal inputs of IFN-I, including sustained, single-pulse and double-pulse stimuli, were used to calibrate the model. Parameter estimation was performed to improve model fitting to this temporal data, both local and global sensitivity analysis were employed to acquire candidate parameters. Next, the optimal parameter set was determined based on the Akaike Information Criteria. Finally, Profile Likelihood Analysis was employed to assess the identifiability of these parameters. The utilization of the Julia language significantly expedited these computational processes. The resulting model provides a tool for exploring the mechanisms underlying the ligand discrimination of IFN-I.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/X8J38K/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/X8J38K/feedback/</feedback_url>
            </event>
            <event guid='42cf9f60-73a9-54e6-a911-e18578638498' id='44471' code='VJEVSJ'>
                <room>Method (1.5)</room>
                <title>ThreadedDenseSparseMul.jl: Multi-threaded Dense-Sparse Matmul.</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>We present `ThreadedDenseSparseMul.jl`, a library that efficiently computes dense-sparse multiplications and outperform competing packages (and `Base.SparseArrays`) in about 20 lines of code (for the basic functionality) by leveraging `Polyester.jl`. We further discuss the effect of Julia&apos;s memory layout on the performance and analyze the influence of different threading models.</abstract>
                <slug>juliacon2024-44471-threadeddensesparsemul-jl-multi-threaded-dense-sparse-matmul</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47435'>Romeo Valentin</person>
                </persons>
                <language>en</language>
                <description>Several Julia packages have been implemented to deal with multi-threaded multiplication of sparse and dense matrices, including

-   `IntelMKL.jl`
-   `ThreadedSparseCSR.jl`
-   `ThreadedSparseArrays.jl`
-   `SparseArrays.jl` (no threading)

However, typically these libraries focus on sparse-times-dense multiplications, which are sub-optimal due to Julia&apos;s row-major memory layout.
We present theory and benchmarks how we can outperform these libraries, as well as existing C/C++ libraries, by 2 to 16x specifically for the dense-times-sparse case by focusing on optimizing cache-locality and `Polyester.jl` for a low-overhead threading model.
We will also provide additional comments on the influence of the CPU architecture (cache size etc) on the theoretical and practical performance.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/VJEVSJ/resources/poster_GrOPMIh.pdf">The poster &#128526;</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/VJEVSJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VJEVSJ/feedback/</feedback_url>
            </event>
            <event guid='a98c8ebd-007e-5032-a74c-3707c3e865ba' id='43105' code='PJT3HT'>
                <room>Method (1.5)</room>
                <title>Hestia.jl - Modeling and Control of Heat Conduction</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>In many engineering tasks like semiconductor fabrication or laser welding, we face the problem of simulating and controlling the heat conduction. To tackle this issue, we developed Hestia.jl - a Julia library to simply create heat conduction simulations for up to three dimensional models. It offers several options to specify material properties, boundary conditions and actuator configurations for realistic simulation scenarios. This enables us to simulate and control a thermal dynamics at once.</abstract>
                <slug>juliacon2024-43105-hestia-jl-modeling-and-control-of-heat-conduction</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='46205'>Stephan Scholz</person>
                </persons>
                <language>en</language>
                <description>Heat conduction is a fundamental physical phenomena and an important research field in process engineering, production technology and material science. Thermal processes must be understood perfectly for example in semiconductor fabrication to produce high-quality microelectronics. Many general purpose solvers like FEniCS or Trixi.jl are used to simulate complex physical problems, but these software libraries often require deep knowledge of the mathematical models and their numerical approximations. In contrast, Hestia only focuses on heat conduction models and offers a toolkit for engineers to simply specify the desired physical behavior.

In this talk, we introduce [Hestia.jl](https://github.com/stephans3/Hestia.jl) and we create step-by-step heat conduction simulations from small to large scale. In particular, we explain the choice of material properties and boundary conditions.  For example, material properties can be defined as isotropic or anisotropic, and boundary conditions can be specified as heat transfer and heat radiation for each boundary side individually. Furthermore, we show how actuators like heating elements can be included in the simulation to steer the heat conduction and we describe briefly how to design the (optimal) control strategy. As Hestia.jl uses the high-class numerical methods of the SciML ecosystem, we also discuss the interaction between both toolkits. Finally, we evaluate the recent state of Hestia.jl and give an outlook on possible future developments.

**Key features:**
- Temperature-dependent material properties
- Anisotropic heat conduction
- Configuration of actuator and sensor characteristics</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PJT3HT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PJT3HT/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='For Loop (3.2)' guid='8c116ae7-f15d-5d19-ba00-c5a85442d1b8'>
            <event guid='9f9b9b53-b04e-53eb-a299-c9f84a45dda4' id='44419' code='TEPSRM'>
                <room>For Loop (3.2)</room>
                <title>Accelerate Insights: Code -&gt; Slides, Faster!</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:10</duration>
                <abstract>&quot;Love Julia but hate PowerPoint? This is your solution!&quot;

Discover how to effortlessly transform your lightning-fast Julia findings into easily shareable and reproducible insights. Despite Julia&apos;s speed, the process of turning results into compelling reports can be a headache with traditional tools like PowerPoint.

Hate turning your Julia findings into PowerPoint reports? I&apos;ll show you how Quarto and Literate.jl makes it easy to transform Julia code into polished reports in seconds!</abstract>
                <slug>juliacon2024-44419-accelerate-insights-code-slides-faster</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47393'>Jack Diamond</person>
                </persons>
                <language>en</language>
                <description>&quot;Love Julia but Hate PowerPoint? This talk is your solution!&quot;
 
Discover how to effortlessly transform your lightning-fast Julia findings into easily shareable and reproducible insights. Despite Julia&apos;s speed, the process of turning results into compelling reports can be a headache with traditional tools like PowerPoint. And it&apos;s beginner friendly! 
 
Enter Quarto &#8211; a brief overview reveals its potential for painless report creation. Learn how combining Quarto with Julia becomes a game-changer. Leveraging Literate.jl, we&apos;ll demonstrate how to supercharge your workflow, making the transition from raw code to polished report seamless.
 
The talk features a quick demo showcasing Quarto&apos;s features, emphasizing the simplicity of transforming Julia code into a polished, reproducible report in seconds. Join us and revolutionize the way you share and communicate your Julia-powered insights. No more PowerPoint headaches &#8211; just fast, shareable, and easily reproducible results.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/TEPSRM/resources/demo-slides_YB3H1fd.html">Slides with Links/tasks</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/TEPSRM/resources/demo_0F3SvRD.html">HTML report with Links/tasks</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/TEPSRM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TEPSRM/feedback/</feedback_url>
            </event>
            <event guid='8979c75a-25c6-5897-916b-5ddb64fe43b6' id='44152' code='X8RYLT'>
                <room>For Loop (3.2)</room>
                <title>Solving integral equations with Inti.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>While partial differential equations dominate the computational modeling
landscape, integral equations provide a powerful and often overlooked
alternative for addressing a diverse array of physical phenomena. In this talk
we introduce Inti.jl, a new package to accurately and efficiently
solve integral equations in two- and three-dimensions. Inti.jl is designed
to be user-friendly and extensible, and provides tools for the discretization,
solution, and post-processing of integral equations.</abstract>
                <slug>juliacon2024-44152-solving-integral-equations-with-inti-jl</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='47147'>Luiz M. Faria</person>
                </persons>
                <language>en</language>
                <description>Despite their potential, integral equation methods face underutilization
compared to popular methods like finite elements and finite differences. This is
largely attributed to the challenges associated with the discretization of the
integral operators ---which usually contain singular kernels---, and to the
difficulties related to the efficient approximation of the dense linear systems
that arise. We believe such challenges have hindered the development of
user-friendly and extensible libraries for integral equations, further limiting
their adoption.

In this presentation, we introduce *Inti.jl*, a Julia package crafted to solve
volume and boundary integral equations. *Inti.jl* provides the fundamental
building blocks for discretizing and manipulating various commonly used integral
operators appearing in mathematical physics, such as the single- and
double-layer operators, as well as volume potentials, for a variety of problems
of physical interest (e.g. acoustic scattering, Stokes flow, linear elasticity).

*Inti.jl* is designed to be user-friendly and extensible, and at present it
already offers a wide range of functionalities, including:

- Integration with *Gmsh* for the pre- and post-processing capabilities
- A unified *API* for the use of modern acceleration techniques such as *Fast
  Multipole Method* and *&#8459;-matrices* by wrapping external packages
- Specialized integration routines to handle the singular kernels often
  appearing in integral equation methods

Our main goal with this package is to bridge the gap between researchers who
develop efficient methods for solving integral equations, and the potential
users of such methods who may not have the necessary mathematical or
computational background to implement the methods themselves.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/X8RYLT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/X8RYLT/feedback/</feedback_url>
            </event>
            <event guid='0e774087-87b4-5651-b0aa-b6e3e70e55ca' id='44378' code='PY8KAH'>
                <room>For Loop (3.2)</room>
                <title>Building Confidently in Julia with Interface Driven Design</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>By solving the two-language problem, Julia makes highly performant systems easier to develop. One trade-off we accept is no static language guarantees, which can yield difficulties and runtime errors in production. We explore tools and techniques to assuage these concerns. The cornerstone of our toolbox is interface-driven design, formalizing the &quot;verbs&quot; our types obey. We show how formalizing interfaces can simplify development, improve robustness, and help productionize Julia code.</abstract>
                <slug>juliacon2024-44378-building-confidently-in-julia-with-interface-driven-design</slug>
                <track>General</track>
                
                <persons>
                    <person id='47960'>Sam Buercklin</person>
                </persons>
                <language>en</language>
                <description>Julia confers great potential performance to users. However, the path from performant prototype to reliable-but-still performant system in deployment is paved with a growing list of methods to implement, function signatures that may need updating across many methods, and types where some method always seems to be missing but only fails when the code is run. Building large, composable, inter-operable systems in any language is difficult, and Julia is no exception. However, these problems may be especially frustrating within Julia as entire classes of problems may not be caught until runtime, potentially in production.

Often, an exhaustive test suite is seen as a panacea to production or robustness woes. Yet, without some standardization of how tests are performed, these tests can be the subject of almost as much maintenance time as the core code itself. For large projects where the size of the test suite grows, so too does the time to encounter failing tests from interface and method signature changes, rather than underlying correctness issues. As the maintenance burden and time to test increases, so too does the likelihood of missing a test and accidentally shipping broken code. 

This talk proposes that focusing on the interfaces which comprise systems allows us to improve our confidence that code is correct, at least from the perspective of the type and dispatch system. We observe that numerical and algorithmic correctness is often not a rate-limiting problem the Julia community tends to face given its scientific and academic roots, but test suites can often overfit to this style of correctness. Crucially, the highly composable nature of Julia often leads to many implicit or accidental assumptions being held by developers which may not hold in general, resulting in runtime failure when types do not compose as expected or fully satisfy implicit interfaces.

Our thesis is that by leveraging tools to implement and enforce interfaces, a functional codestyle to ensure conformity, and building a uniform testing structure, we can more easily manage complexity in a large and growing codebase. These techniques improve productivity by informing developers of what a type implementation needs, simplifying refactor efforts, and catching interface violations which otherwise may slip through the cracks of an incomplete test suite.

We explore the idea of managing complexity through interface-driven design via two lenses: the theoretical approach of design patterns and processes with associated tooling, as well as a study of existing packages which showcase interface best practices.

From the design perspective, we highlight the existence of packages such as RequiredInterfaces.jl, BinaryTraits.jl, or Interfaces.jl to define, check, and potentially dispatch on interfaces or traits. We will discuss the implications of these packages on developer productivity as documentation and &quot;onboarding&quot; tools, as well as tools to improve trust in our Julia code to be better-behaved in production by reducing runtime errors strictly to logical errors. A discussion of functional codestyle, how it interoperates with interface-driven design, and advantages of a functional approach to logical correctness will be included. Traits and interfaces will be compared and contrasted, viewing traits as a dispatch tool relying on an interface specification. We will discuss the process that goes into developing good interfaces to capture the essence of a problem, chiefly separating the &quot;what&quot; from the &quot;how&quot; of functions.

For exemplar packages, we focus on two different approaches:

1. Implementing robust interface testers, such as ChainRulesTestUtils.jl which provides a tester function for rrules and frules
2. Implementing a powerful common &quot;language&quot; and interface for packages to inter-operate, as demonstrated by GeoInterface.jl

The implications of these packages and their offerings to improving the developer experience will be emphasized. ChainRulesTestUtils.jl not only verifies an interface implementation, but also checks for the numerical correctness as well. GeoInterface.jl utilizes interfaces to facilitate easy interoperability between packages which satisfy its interface specification.

We conclude by reiterating that while the performance of Julia the language is remarkable, the developer experience of building large and robust systems is fraught with difficulties. Yet, taking an interface-driven design approach to Julia leverages the strengths of the Julia language (multiple dispatch, specializing methods, composition of types) to arrive at code which avoids easy but subtle mistakes when working on projects of increasing complexity. By designing projects to prioritize managing complexity as a codebase grows, we hope to ease difficult parts of productionizing Julia codebases.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PY8KAH/resources/Building_Confidently_in_Julia_with_Interface-D_qNweSwg.pdf">Slides for presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PY8KAH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PY8KAH/feedback/</feedback_url>
            </event>
            <event guid='cc71592a-b220-5aa1-9f4e-9cd8794a3627' id='43533' code='MH9JZN'>
                <room>For Loop (3.2)</room>
                <title>AppBundler.jl - Bundle your Julia GUI Application</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>AppBundler is a versatile tool that simplifies the bundling of Julia GUI applications across different desktop platforms, including Linux, MacOS, and Windows. This talk discusses its capabilities and showcases the bundling and post-processing steps required to create a double-click installer for each platform.</abstract>
                <slug>juliacon2024-43533-appbundler-jl-bundle-your-julia-gui-application</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/MH9JZN/appbundler_HMvRpTU.png</logo>
                <persons>
                    <person id='46577'>Janis Erdmanis</person>
                </persons>
                <language>en</language>
                <description>Julia&apos;s ecosystem has a comprehensive range of GUI framework bindings, remarkably compatible across all major desktop platforms. Deploying Julia applications is straightforward for those with technical know-how, particularly in terms of instantiating the project&apos;s manifest file. However, the average user typically anticipates a more streamlined installation process. This includes a double-click installer, with easy access from the system menu, complete with an icon. They also expect a clean uninstallation process that doesn&apos;t leave residual files and returns the system to its prior state.

In the current digital landscape, major desktop platforms have adopted the concept of self-contained applications running in confined environments. For instance, Windows utilizes the MSIX package format, Linux employs flatpacks and snaps, while MacOS favors app bundles. Each format has unique organizational requirements for application directories, configuration files, and inherent functionalities. This poses a challenge to beginners aiming to package their Julia GUI applications.

The introduction of AppBundler marks a significant advancement in simplifying desktop application bundling for Julia. It relies on `main.jl` as the entry point and the project&apos;s `Manifest.toml` file to encapsulate all the necessary dependencies, including Julia itself. AppBundler uses a scratch space for caching artifacts, which streamlines the bundling process. It makes it quick, predictable, and convenient for rapid iteration. While it offers cross-platform bundling support for MacOS and Linux, AppBundler necessitates additional postprocessing for Windows and MacOS bundles. However, this is simplified through bundled helper scripts, accompanied by comprehensive documentation to assist developers. Additionally, AppBundler facilitates platform-specific customisation via a recipe system.

During the hands-on portion of the talk, we will explore application packaging strategies for Linux, MacOS, and Windows. For Linux, I will demonstrate creating a snap package, showcasing installation, user data storage, and debugging techniques. In MacOS, the focus will be on post-installation procedures, including precompilation, launcher creation, code signing, and `.dmg` file packaging, supplemented by a demonstration video. For Windows, we&apos;ll delve into the intricacies of packaging, such as precompilation, the `makemsix` command, and debugging, also accompanied by a video demonstration.

The talk will also cover customization options, starting with `Project.toml` variables under the `[bundle]` section. Here, application display names, summaries, and descriptions are defined for user visibility upon installation. We&apos;ll then discuss individual bundle configurations using the `meta` directory as the primary source for overriding the bundle recipe. A practical example will feature a GTK application bundled with strict confinement, detailing the specification of plugs in the `snap.yaml` file. We&apos;ll include the inclusion of a custom icon, and the redirection of standard output using `init.jl`, along with a custom `precompile.jl` file. Furthermore, we will explore the AppBundler.jl recipe system, demonstrating its utility in creating bundling recipes for uncovered platforms and packaging formats.

Finally, the talk will conclude with a discussion on the future directions of `AppBundler.jl`. The session will briefly address the current state of application confinement issues, which are crucial for being able to distribute applications in marketplaces, which I have stumbled upon. Finally, I will propose potential hackathon projects, such as developing a GitHub action script and integrating `PackageCompiler.jl` into the bundling pipeline.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JanisErdmanis/JuliaCon2024-AppBundler-Demo">AppBundler Demo Repo</link>
                
                    <link href="https://github.com/PeaceFounder/AppBundler.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/MH9JZN/resources/AppBundler_DGkmMdC.pdf">AppBundler Presentation Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/MH9JZN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MH9JZN/feedback/</feedback_url>
            </event>
            <event guid='d6130488-cbd7-5470-9750-031652c5d214' id='43263' code='7ZJ3SQ'>
                <room>For Loop (3.2)</room>
                <title>Unlocking lightning speed of Julia&apos;s Dict with Robinhood Hashing</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:10</duration>
                <abstract>Rooted in Google&apos;s Swiss Tables brilliance, the current implementation flaunts 1-byte metadata, elevating successful lookups to unprecedented efficiency. However, this leads to inefficient performance for unsuccessful queries. Enter the paradigm shift: the fusion of metadata intricacies and the precision of Robinhood hashing. Visualize this &#8211; rehashing without redundant hash recalculations and lightning fast querying time (both success and failure scenarios). Brace for a `Dict` metamorphosis!</abstract>
                <slug>juliacon2024-43263-unlocking-lightning-speed-of-julia-s-dict-with-robinhood-hashing</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46446'>Koustav Chowdhury</person>
                </persons>
                <language>en</language>
                <description>`Problems with Julia&apos;s Dict`

Julia&apos;s Dict is currently using a variation of Swiss Tables which is an open addressing based linearly probed dictionary, but it has certain shortcomings.
1. For each key, value pair in the Dict, we store a byte where 7 bit is hash and 1 bit indicates validity. Storing this metadata allows us to improve the performance of successful lookups but unsuccessful lookups do not benefit from this.
2. During rehashing of the hash table, we have to recompute the hash again for inserting the elements into its proper location and it might be an expensive operation to compute the hash for complex data types. We can make use of metadata to get rid of this shortcoming and improve Dict&#8217;s performance during rehash.

`Proposed Solution`

We can do all of this using a simple concept called RobinHood hashing. We can use metadata to effectively improve rehash performance and time taken for unsuccessful lookups, at the same time not compromising on the lightning speed that we all crave.

Blatantly speaking, Robin Hood hashing technique is a variation of linear probing technique which improves over certain shortcomings of the linear probing. The basic idea is to take normal open addressing, and then use one clever trick in order to drastically reduce the variance of the expected average and maximum probe lengths. Shorter expected probe length leads to faster insert, delete and lookup operation on the hash table. 

The way to do this is: when you probe for a position to insert a new element, if the probe length for the existing element is less than the current probe length for the element being inserted, swap the two elements and keep going. This small operation leads to drastic change in expected probe lengths and we can use this fact to improve the time of unsuccessful lookups. How? Intuitively, this simple swapping operation leads to non-decreasing probe lengths among keys which suffer from &quot;hash collision&quot;. During search of a particular key, we can use this fact to terminate our search &quot;early&quot; if our current probe length is greater than the element that we are currently hovering over. 

Keeping all of the above in mind, the idea that I am proposing is to use 4 byte of metadata per hash table entry and store 3 byte for hash and 1 byte for storing probe sequence length. Storing 3 bytes of hash allows us to save on the time needed to rehash the hash table. 1 byte for storing the probe length allows us to compute the &#8220;cost&#8221; of occupying a particular location cheaply, thus allowing us to terminate the lookups faster.

Another important aspect to discuss with respect to hash tables is the Load Factor. Load factor is often expressed as % and determines the max capacity of the hash table until it has to rehash again. So, a load factor of 90% means that the table can be 90% full before it needs to rehash again. This takes into account both valid keys and &#8220;tombstone&#8221; entries. Tombstone entries are dummy entries for keys which have been recently deleted. Having these entries results in improving performance of deletions but they contribute adversely to load factor.

I experimented with the backward shift deletion technique, which does not keep tombstone entries, but removes the entry from the table and then proceeds to shift back all the neighboring entries to fill the &#8220;void&#8221; created on deletion. On one hand, this helps to simplify branch conditions for insertions and lookups (because you don&#8217;t have to bother about &#8220;missing&#8221; entries), but on the other hand, this operation of backward shift on the adjacent entries increases the time for deletion.

```Benchmarks```

1. Although the mean probe length of Dict and RobinDict both stays close to 1 for 10K entries, the variance of RobinDict is much less compared to Dict. For 10K entries, it&#8217;s almost one-third of the variance shown by Dict. We see ~3x improvement in the max probe length of RobinDict for 10K entries. For Dict, max probe length can go up to 50 entries, whereas in RobinDict never crosses more than 15.

2. While inserting an entry into Dict, we would see large spikes in the time as we inserted more and more (key, value) pairs. It happens during the time the table rehashes. With the usage of metadata, that &#8220;spike&#8221; while insertion has completely disappeared.

3. For deleting entries from RobinDict, it&#8217;s a tradeoff - while lower probe length would lead to small lookup time, but backward shifting deletion would lead to increase in time. From my benchmarks, ~60% of the time RobinDict outperforms Dict in terms of deletion.

4. For successful lookups, 80% of the time RobinDict outperforms current Dict implementation, while for unsuccessful lookups it outperforms about 60% of the time. To be honest, I expected this value to be slightly on the higher side (like 90%), but there is an extra branch condition introduced (as compared to Dict) in lookup code flow which is causing the increase in time.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7ZJ3SQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7ZJ3SQ/feedback/</feedback_url>
            </event>
            <event guid='b265c6b4-127f-5a59-9800-d1622eb1f392' id='43297' code='MSSGKF'>
                <room>For Loop (3.2)</room>
                <title>Simulating nano-particle trajectories using CMInject.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T14:10:00+02:00</date>
                <start>14:10</start>
                <duration>00:10</duration>
                <abstract>CMInject.jl is a numerical simulation framework that simulates nano-particle trajectories through aerosol injectors and their expansion into a vacuum chamber, e.g., single particle diffractive imaging (SPI) experiments.  The background gas flow around the particles is simulated using computational fluid dynamics tools and the particles are tracked using a Lagrangian based tool built with Julia. This simulation tool is used to evaluate performance of various aerosol injector designs.</abstract>
                <slug>juliacon2024-43297-simulating-nano-particle-trajectories-using-cminject-jl</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/MSSGKF/jcon24_sample_2rdGSBQ.png</logo>
                <persons>
                    <person id='46361'>Surya Kiran Peravali</person>
                </persons>
                <language>en</language>
                <description>Single-particle diffractive imaging (SPI) is a technique employed to capture the atomic-scale structures and dynamics of (bio-) nano-particles. The complete three-dimensional structure of a nano-particle is reconstructed through a series of two-dimensional diffraction patterns from randomly oriented particles. In SPI experiments, an aerosol injection system is utilized to transfer particles into the gas phase, capturing a collimated particle stream in a vacuum. The design of these injection systems must be continuously optimized  to obtain very high density particle streams with less background gas in order to increase X-ray interactions with the particles for generating high-quality diffraction patterns. However, this requires investigating a large parameter space such as operating pressures, geometrical shapes of the injector, size of the particle etc., making experimental characterization and optimization impractical. A numerical framework capable of simulating the flow of the carrier gas in the injection system and the particle trajectories is set up. The fluid flow inside aerosol injector and the vacuum chamber is simulated using a multiscale computational fluid dynamics approach (e.g., OpenFoam/SPARTA-DSMC). Subsequently, the particle trajectories are computed using the forces (e.g., Stokes drag) obtained from interpolated velocity fields along with the Brownian motion of the particles. This framework provides a quick and efficient way to search the experimental parameter space for optimization and also to further understand the physical phenomena (e.g., flow and particle interaction) inside the injection systems.  

The particle trajectory calculator in this framework was initially programmed and benchmarked in Python. In order to improve the computational performance, it is currently being converted to Julia. Furthermore, the ease of using Julia and the code alignment with the mathematical notations enhances clarity in understanding of the code for potential future contributors. In this presentation, we present the initial bechmarking results of the simulation tool, validate it based on experimental data and evaluate the computational performance by comparing with the former Python version.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MSSGKF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MSSGKF/feedback/</feedback_url>
            </event>
            <event guid='f7838905-7553-5692-b766-7fdc54a55d2a' id='44266' code='BCKDFL'>
                <room>For Loop (3.2)</room>
                <title>Natural Science, Computer Modeling and Literate Programming</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T14:20:00+02:00</date>
                <start>14:20</start>
                <duration>00:10</duration>
                <abstract>We present [Entangled](https://entangled.github.io), a generic tool for maintainable literate programming. Entangled works together with Markdown based documentation tools like `Documenter.jl`, and ships with a build system for running longer computations. We show an example from the Earth Sciences in a package called [`CarboKitten.jl`](https://mindthegap-erc.github.io/CarboKitten.jl), simulating the formation of carbonate reef platforms and their produced limestone stratigraphy.</abstract>
                <slug>juliacon2024-44266-natural-science-computer-modeling-and-literate-programming</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/BCKDFL/entangled-logo-export_c6Z9URc.svg</logo>
                <persons>
                    <person id='47252'>Johan Hidding</person>
                </persons>
                <language>en</language>
                <description>Computer modeling is a vital tool in the natural sciences. However, often the software packages and scripts used in producing scientific output, live a separate life from the published research output. This is a major concern when it comes to reproducibility of results. There are many techniques for literate programming, mixing computer code and literary prose, that try to address this issue. Examples are Jupyter, RMarkdown and in the case of Julia, `Literate.jl` and `Pluto.jl`. None of these solve the issue of code complexity, and their use often results in code that is not well designed, unmaintainable and not reusable.
[Entangled](https://entangled.github.io) is a system for literate programming, based on Markdown, that synchronizes code blocks and plain executable code in two directions. Executable code is *tangled* from any number of code blocks and code blocks can be *stitched* back into the markdown when some of the code was edited. This way, the executable code is always the same as which is presented in documentation and we retain the use of IDE features when editing code. Because code is treated like plain text, Entangled is completely agnostic to the used programming language. The resulting code can be reused as any other module.
Because Markdown can be exported to HTML using standard documentation tools (e.g. `Documenter.jl`) as well as LaTeX/PDF (using Pandoc), Entangled can be used to write documentation, but also completely self-evaluating journal papers.
We show an example from the Earth Sciences in a package called [`CarboKitten.jl`](https://mindthegap-erc.github.io/CarboKitten.jl), simulating the formation of carbonate reef platforms and their produced limestone stratigraphy. Though the Entangled tool is written in Python, the focus of the talk will be on how Literate Programming in general can help disseminate superior tools like Julia in the Matlab dominated world of geoscience.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BCKDFL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BCKDFL/feedback/</feedback_url>
            </event>
            <event guid='a7152635-8f73-5d35-a59d-eb976058ee8a' id='44418' code='CMT7PR'>
                <room>For Loop (3.2)</room>
                <title>FUSE.jl: the power of Julia for the fusion industry</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>FUSE.jl is a framework developed in Julia that integrates first-principle, machine-learning, and reduced models to enable comprehensive self-consistent simulations for fusion power plant design. Multi-objective high performance computing (HPC) optimization is used to identify designs that minimize cost while maximizing several physics, engineering, and control performance metrics. Accessible via a web portal and API, attendees learn about FUSE&apos;s and Julia&apos;s innovative role in fusion energy.</abstract>
                <slug>juliacon2024-44418-fuse-jl-the-power-of-julia-for-the-fusion-industry</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/CMT7PR/FUSE_picture_xOUzFCO.png</logo>
                <persons>
                    <person id='47392'>Tim Slendebroek</person>
                </persons>
                <language>en</language>
                <description>Delivering fusion energy, with its promise of providing a clean and virtually limitless power source, is one of the most compelling scientific and engineering challenges of our time. Julia has enabled a transformation in integrated modeling for fusion device design from a disconnected multi-language approach to a unified framework called the FUsion Synthesis Engine (FUSE). 

In this talk we introduce FUSE, a framework developed to support General Atomics&#8217; and others&#8217; fusion power plant designs. FUSE has been developed with the purpose of going beyond traditional low dimensionality methods by integrating first-principle, machine-learning, and reduced models in comprehensive self-consistent simulations. FUSE was developed from the ground up exclusively in Julia, with a focus on computational efficiency and scalability

Traditional fusion device design methods start with low-fidelity simplified analytical models to identify an operational point that is then further refined with high-fidelity iterative analyses. This approach inevitably leads to design modifications that are hard to integrate in a unified framework because the design process is slow, costly and only allows for the in-depth study of one design at the time. The fusion community typically relies on loosely-coupled, file-based models from various scales and languages. Transitioning to Julia creates a unified ecosystem, enhancing model and data structure retention in memory. This shift results in a 1000-fold speed increase compared to earlier integrated modeling frameworks. Beyond accelerated simulations, adopting Julia significantly improves maintenance, documentation, testing, and deployment of FUSE.

FUSE leverages the ITER IMAS data structure standard to facilitate effective data exchange among its various models. This approach not only enables the framework to be modular, allowing for the execution of models of varying fidelity across a broad range of domains, but also ensures its direct applicability to ITER and numerous other tokamak fusion experiments that have adopted the IMAS standard.

One of the most prominent features of FUSE lies in its capability to run both stationary and time-dependent simulations. Dynamics are efficiently modeled by coupling physics models that take into consideration the separation of time and spatial scales that naturally occur in a fusion plasma. Other processes, like the dynamics of the thermal conversion systems, which include a network of heat exchangers, turbines, compressors, and generators, rely on the ModelingToolkit.jl package.

&#8195;
When used for fusion power plant design, a multi-objective optimization approach is utilized to efficiently explore designs that meet the stringent requirements of fusion energy generation but also adhere to economic and practical constraints. This optimization process identifies solutions that strike the best balance between cost and performance, covering the diverse domains of physics, engineering, and control systems.

FUSE is currently a proprietary framework and outside of the development team, access to the tool is granted via a web portal and REST API, also written in Julia. This approach eases the barrier to entry for engineers looking to optimize a fusion power plant design, as well as to developers interested in including some of the leading-edge features of FUSE in their own software via its API.

Attendees at JuliaCon will delve into FUSE&apos;s architecture and understand its practical applications in fusion power plant design via technical demonstrations. The session will also cover how developers and users can leverage and build upon FUSE.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CMT7PR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CMT7PR/feedback/</feedback_url>
            </event>
            <event guid='8a63afb9-c53e-51e6-9ccc-500db3f8d71d' id='44372' code='RGM3GL'>
                <room>For Loop (3.2)</room>
                <title>Geant4.jl - Particle transport in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Discover the Julia wrappers for Geant4 simulation, a vital C++ toolkit in particle physics, also used in nuclear and medical physics, and space science. Our focus is on a new, user-friendly interface for developers, improving ergonomics while preserving high performance. Explore the enhanced usability, a great advantage over the intricate C++ interface for occasional users developing custom simulations. Join us to explore Julia&apos;s empowering role in streamlining particle physics simulations.</abstract>
                <slug>juliacon2024-44372-geant4-jl-particle-transport-in-julia</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47358'>Pere Mato</person>
                </persons>
                <language>en</language>
                <description>We present the [Geant4.jl](https://github.com/JuliaHEP/Geant4.jl) package, which provides a wrapper to the [Geant4](https://geant4.web.cern.ch) toolkit for the simulation of the passage of elementary particles through matter,  which is widely used in high-energy physics as well as in other domains such as nuclear physics, medical physics, and space science. The toolkit is rather large with several thousands of C++ classes.  Given the pivotal role of simulation in contemporary high-energy physics experiments, our focus is on unveiling a new, more user-friendly interface tailored for simulation application developers. This interface not only improves ergonomics but also maintains high computational performance, in particular fully exploiting multi-threading. We emphasise the significant advantages this enhanced toolkit usability provides, particularly when compared to the complexity of the C++ interface that occasional users need to use for their customised simulations.
The wrappers are based on [CxxWrap.jl](https://github.com/JuliaInterop/CxxWrap.jl) and they are generated automatically using the [WrapIt](https://github.com/grasph/wrapit) tool. This helps enormously on the sustainability, in particular taking into account the size of the Geant4 project.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaHEP/Geant4.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/RGM3GL/resources/Geant4.jl-20240710_gKGanhr.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/RGM3GL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RGM3GL/feedback/</feedback_url>
            </event>
            <event guid='5d53310a-a285-5882-a050-8098e00e3b04' id='44468' code='QU3SPL'>
                <room>For Loop (3.2)</room>
                <title>Lyotropic Liquid Crystals: Thermodynamics &amp; Numerical methods</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>We first present the hydrodynamic equations for lyotropic (concentration-dependent) Liquid Crystals (LCs), derived via the thermodynamic GENERIC framework. Next, we showcase the development of a .jl package to solve these equations, combining 1) finite differences (inspired by DiffEqOperators.jl) and 2) the Lattice Boltzmann method (found in Trixi.jl). Solving in 2D and 3D at equilibrium and under different flows, we demonstrate that our methodology allows the prediction of experimental LC data.</abstract>
                <slug>juliacon2024-44468-lyotropic-liquid-crystals-thermodynamics-numerical-methods</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47436'>Pablo Zubieta</person><person id='47438'>Jonathan Salmer&#243;n-Hern&#225;ndez</person>
                </persons>
                <language>en</language>
                <description>Experimental data found in active lyotropic Liquid Crystals (LCs), typically a nematic phase coexisting with an isotropic fluid and molecular motors, have displayed complex patterns that remain unexplained. These studies raise questions about the effective parameters transforming such chaotic dynamics into coherent motion. To tackle this challenging problem, we use the GENERIC framework to construct a thermodynamically consistent model. In this framework, the time-evolution equations of out-of-equilibrium systems are naturally described by the sum of energy and entropy contributions. With this, we systematically formulate a set of equations, describing the behavior of concentration-dependent (lyotropic) LCs. We solved our equations by using a hybrid lattice Boltzmann code written in Julia that combines 1) finite differences (inspired by DiffEqOperators.jl) and 2) the Lattice Boltzmann method (found in Trixi.jl); the time evolution is integrated using DifferentialEquations.jl. We show that, in 2D, two passive isotropic droplets within a nematic environment can form stable defect cores with topological charges of +1/2 and -1/2, as observed in chromonic LC data. In 3D, the simulations predict the evolution of an axial droplet configuration, as seen in experiments with surfactants. Additionally, we numerically study the effect of our solutions under different type of flows (passive or active). Our findings demonstrate that experimental results can be quantitatively predicted by the proposed GENERIC equations and by this numerical approach.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QU3SPL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QU3SPL/feedback/</feedback_url>
            </event>
            <event guid='dea90126-f570-53a9-8e84-a0011edbc28b' id='42902' code='A88DR9'>
                <room>For Loop (3.2)</room>
                <title>Efficient, composable solver for non-equilibrium flows</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Employing a tree-based Cartesian mesh, our project presents a distributed parallel solver for kinetic equations, focusing on multi-scale complex flow across a wide range of regimes.</abstract>
                <slug>juliacon2024-42902-efficient-composable-solver-for-non-equilibrium-flows</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46018'>Longqing Ge</person><person id='46051'>Tianbai Xiao</person>
                </persons>
                <language>en</language>
                <description>As a physical field can exhibit significant inhomogeneity in space and time, a static mesh may lead to computational inefficiencies or inaccurate numerical results. Adaptive Mesh Refinement (AMR) addresses this challenge by redistributing computational resources based on the evolving features of the solution, resulting in a balance between efficiency and accuracy. Besides, the tree-based Cartesian enables a versatile description of boundaries of the computational domain and discontinuous solutions therein[1].
The ongoing project focuses on the numerical solution of kinetic equations. The high concentration of solution and the associated steep slopes highlight the necessity of adaptive discretization[2]. Based on P4est.jl[3] and MPI.jl[4], we develop the distributed quadtree/octree-based solver for multi-scale complex flows across a wide range of regimes. The lightning talk will first introduce the theoretical underpinnings and then showcase the applicability of the solver through comprehensive benchmarks. The pros and cons of the implementation using Julia will be discussed.
References
[1] Wang, Zhi Jian. &#8220;A Quadtree-based adaptive Cartesian/Quad grid flow solver for Navier-Stokes equations.&#8221; Computers &amp; Fluids 27 (1998): 529-549. 
[2] Chen, Songze et al. &#8220;A unified gas kinetic scheme with moving mesh and velocity space adaptation.&#8221; J. Comput. Phys. 231 (2012): 6643-6664.
[3] J. Lampert, M. Schlottke-Lakemper, H. Ranocha. https://github.com/trixi-framework/P4est.jl
[4] Byrne, Simon, Lucas C. Wilcox, and Valentin Churavy. &quot;MPI. jl: Julia bindings for the Message Passing Interface.&quot; Proceedings of the JuliaCon Conferences. Vol. 1. No. 1. 2021.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/CFDML/KitAMR.jl.git">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/A88DR9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/A88DR9/feedback/</feedback_url>
            </event>
            <event guid='0341420e-3242-5a6d-826f-b012dc281de0' id='44373' code='LJMZ9W'>
                <room>For Loop (3.2)</room>
                <title>Jet Reconstruction in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Jets in high energy physics are sprays of particles resulting from one parent particle produced in a collision at colliders. Clustering the energy deposits of these final particles is vital for reconstructing the properties of the original parent. We present a new Julia package, `JetReconstruction.jl`, which does just that. We discuss the performance compared to existing solutions, particularly in C++, and demonstrate the ergonomics and extensibility we have achieved in Julia.</abstract>
                <slug>juliacon2024-44373-jet-reconstruction-in-julia</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47359'>Graeme A Stewart</person>
                </persons>
                <language>en</language>
                <description>Jet physics is one of the key areas where we can advance our knowledge of the interactions of fundamental particles. In collider physics, e.g., at CERN&apos;s Large Hadron Collider, two beams of counter-rotating energetic particles are impacted head on. This results in the production of new, highly energetic, heavy particles, which are unstable. These decay rapidly into other particles, forming a cascade of many final state stable particles. These particles are detected in high energy physics experiments, particularly in calorimeters, designed to stop and measure the energy of incident particles.

The task of grouping these energy deposits is one of the key tasks in high-energy physics event reconstruction. Jets are formed from clustering energy deposits, based on different momentum and geometric criteria. Various desirable properties are stability against small amounts of additional energy (infrared safety) or against a single input splitting into two aligned deposits (collinear safety).

As a mature area of study, there is a well known &quot;standard&quot; C++ package, FastJet, which is widely used. However, as Julia becomes more popular in the field, doing reconstruction natively in Julia is desirable. To this end, we have developed the [`JetReconstruction.jl`](https://github.com/JuliaHEP/JetReconstruction.jl) package, with the aim of offering performant and ergonomic interfaces to the problem.

We describe the algorithms implemented in the package, including Anti-kT, Cambridge-Achen and Inclusive-kT as well as various pruning and cleaning options. We compare its feature set and performance with FastJet and discuss its potential evolution to become a more general clustering tool.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaHEP/JetReconstruction.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/LJMZ9W/resources/jet-finding-juliacon2024_0KN9daM.pdf">Talk (PDF)</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/LJMZ9W/resources/reconstruction-animation-antikt_VneSZio.mp4">Reconstruction Animation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/LJMZ9W/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LJMZ9W/feedback/</feedback_url>
            </event>
            <event guid='ac99ac46-3dd2-5716-91b1-d42fbd7e5845' id='44383' code='VHFAQ8'>
                <room>For Loop (3.2)</room>
                <title>FastIce.jl: a massively parallel ice flow model running on GPUs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>We introduce [FastIce.jl](https://github.com/PTsolvers/FastIce.jl), a novel ice flow model for massively parallel architectures, written in Julia. Leveraging GPUs (Nvidia, AMD) and supporting distributed computing through MPI.jl, FastIce.jl includes a thermo-mechanically coupled Full-Stokes ice flow model. We present the performance testing of FastIce.jl in single-node and distributed scaling benchmarks on LUMI, the largest European supercomputer.</abstract>
                <slug>juliacon2024-44383-fastice-jl-a-massively-parallel-ice-flow-model-running-on-gpus</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='46673'>Ludovic R&#228;ss</person><person id='47405'>Samuel Omlin</person><person id='47132'>Mauro Werder</person><person id='46679'>Ivan Utkin</person>
                </persons>
                <language>en</language>
                <description>Efficient modeling of ice sheets involves considering multiple coupled physical processes, including thermo-mechanical interactions. While using a Full-Stokes model to resolve ice flow in Greenland and Antarctica provides most accurate results, it can be cost-prohibitive on a large scale with existing software, necessitating the use of high-performance computing (HPC).

We introduce [FastIce.jl](https://github.com/PTsolvers/FastIce.jl), a novel ice flow model for massively parallel architectures, written in Julia. Leveraging GPUs (Nvidia, AMD) and supporting distributed computing through [MPI.jl](https://github.com/JuliaParallel/MPI.jl), [FastIce.jl](https://github.com/PTsolvers/FastIce.jl) includes a thermo-mechanically coupled Stokes ice flow model. [FastIce.jl](https://github.com/PTsolvers/FastIce.jl) is written to be easily extensible, and its core is fully differentiable, enabling data assimilation pipelines using adjoint sensitivities and automatic differentiation (AD).

In this talk, we present the modular architecture of [FastIce.jl](https://github.com/PTsolvers/FastIce.jl), consisting of core library of components, and monolithic solvers implementing ice flow models. The core library aims to simplify the development of the numerical algorithms on structured grids, and includes functions and data types for working with computational grids, fields, boundary conditions, and discrete differential operators. The solvers build upon the core library and include the computational kernels to integrate the equations of ice motion.

We describe our usage of task-based programming in Julia to simplify synchronisation between concurrently running GPU kernels, CPU functions, and MPI communication. We present the performance testing of [FastIce.jl](https://github.com/PTsolvers/FastIce.jl) in single-node and distributed scaling benchmarks on LUMI, the largest European supercomputer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VHFAQ8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VHFAQ8/feedback/</feedback_url>
            </event>
            <event guid='9cc628df-0e5e-5755-afd9-d3e7e4cef154' id='52484' code='KSHPRX'>
                <room>For Loop (3.2)</room>
                <title>Poster Session</title>
                <subtitle></subtitle>
                <type>Poster Session</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>01:30</duration>
                <abstract>It&apos;s the JuliaCon 2024 poster session! Come by to see the posters, chat with the presenters, and organize into groups for dinner.</abstract>
                <slug>juliacon2024-52484-poster-session</slug>
                <track>General</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>It&apos;s the JuliaCon 2024 poster session! Come by to see the posters, chat with the presenters, and organize into groups for dinner.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KSHPRX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KSHPRX/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Function (4.1)' guid='43a8b52a-e689-5901-ac76-e45345b9bfce'>
            <event guid='06873c8e-994c-5ae8-8b6a-6ae27a0c807e' id='43370' code='E7KFJX'>
                <room>Function (4.1)</room>
                <title>Differentiable point cloud rasterisation</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:10</duration>
                <abstract>We present the package DiffPointRasterisation.jl, which aims to provide a differentiable rasterization medthod for point cloud data.
The focus of the package is on rasterizing volumetric 3D point cloud data either to 3D voxel grids or to 2-dimensional (raster) images.
This enables gradient-based 3D reconstruction algorithms for e.g. electron tomography.</abstract>
                <slug>juliacon2024-43370-differentiable-point-cloud-rasterisation</slug>
                <track>General</track>
                
                <persons>
                    <person id='47962'>Wolfhart Feldmeier</person>
                </persons>
                <language>en</language>
                <description>Differentiable rendering is concerned with making the 3D graphics pipeline differentiable.

While this is a very broad and hot topic in Computer Graphics and Computer Vision, the focus of the package DiffPointRasterisation.jl is solely on rasterizing volumetric 3D point cloud data either to 3D voxel grids or to 2-dimensional (raster) images.
The implementation and interface however are dimension-independent and could also be used for arbitrary-dimensional data.

The package provides fast implementations for the forward- (rendering) and backward- (gradient calculation) process both on CPU and on GPU (via CUDA.jl and KernelAbstractions.jl).
Gradients/pullbacks are provided via explicit functions for fast allocation-free calculations, but are also integrated into the ChainRules.jl ecosystem for automatic differentiation.

We give a quick overview of the package&apos;s capabilities and dive into its single-function interface. 
We briefly show how we use DiffPointRasterisation.jl in the process of tomographic reconstruction from cryo-electron microscopy data, and conclude by discussing how the package fits into Julia&apos;s differentiable computing landscape.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/E7KFJX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/E7KFJX/feedback/</feedback_url>
            </event>
            <event guid='fc593210-2bcc-5140-a36e-91299b56841a' id='44439' code='TPFF8L'>
                <room>Function (4.1)</room>
                <title>Julia for Particle-Based Multiphysics with TrixiParticles.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>We present TrixiParticles.jl, an open-source numerical simulation framework designed for accessible particle-based multi-physics simulations and implemented in Julia as part of the Trixi Framework. Besides highlighting the high performance and rapid adaptability of Julia in our implementation, we will demonstrate the application of TrixiParticles.jl through multiple examples in the fields of fluid dynamics, mechanics, and multiphysics.</abstract>
                <slug>juliacon2024-44439-julia-for-particle-based-multiphysics-with-trixiparticles-jl</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/TPFF8L/falling_sphere_UJT8gvS.png</logo>
                <persons>
                    <person id='47408'>Erik Faulhaber</person><person id='47423'>Niklas Neher</person>
                </persons>
                <language>en</language>
                <description>Our primary goal is to provide a user-friendly application, accessible even to those unfamiliar with particle-based methods. Therefore, TrixiParticles.jl is designed with easy extensibility in mind, enabling researchers to experiment with new models or methods quickly, without the need to study and modify large parts of the code. We further try to achieve optimal performance without significantly impacting readability or ease of use. This approach allows users not only to prototype new ideas rapidly, but also to efficiently scale up simulations. In our talk, we will present examples of applications in fluid dynamics, mechanics, and fluid-structure interactions. We will also showcase how easily our code can be adapted to new models and used in multiphysics simulations. Furthermore, we will provide an overview of current and future features.

Feature highlights:
- Multiple Smoothed Particle Hydrodynamics (SPH) schemes to model fluids with free surfaces.
- SPH model for modelling elastic solids.
- Fluid-structure interaction
- Quick setup of complex geometries.
- User-friendly post-processing</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/trixi-framework/TrixiParticles.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TPFF8L/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TPFF8L/feedback/</feedback_url>
            </event>
            <event guid='410a8b90-aa78-5e21-8b32-8aac2c68f073' id='44239' code='DAJ7YT'>
                <room>Function (4.1)</room>
                <title>CedarEDA tutorial: a fresh approach to circuit simulation</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>CedarEDA is a new advanced analogue circuit simulation tool. This tutorial will go into how to use it to simulate your electronic circuits. CedarEDA is able to process circuits/models described in Spice, Spectre, Verilog-A or in pure Julia. It is API first and is driven entirely via Julia script.
This tutorial is primarily of interest to electrical and electronic engineers, or anyone else with an interest in electronic circuit design.</abstract>
                <slug>juliacon2024-44239-cedareda-tutorial-a-fresh-approach-to-circuit-simulation</slug>
                <track>General</track>
                
                <persons>
                    <person id='46054'>Frames Catherine White</person><person id='46532'>Keno Fischer</person>
                </persons>
                <language>en</language>
                <description>The tutorial will give you everything you need to get up and running using CedarEDA.
It will go through step by step how to use CedarEDA.

- How to import/define a circuit
- How to perform simulations including:
    - Transient
    - DC
    - AC
    - Noise
- How to compute measures of circuit performance such as rise time,  delay, etc
- How to setup automated verification of measures, and sweep over values (such as transistor sizes, or resistances etc) and verify which ranges of values are acceptable
- How to automatically tune your circuit parameters to achieve eg a minimal delay

CedarEDA is currently available as an open source project.
The tool is currently very usable, but has some rough edges.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DAJ7YT/resources/Cedar_-_JuliaCon_2024_YubJ5HF.pdf">Slides (PDF)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DAJ7YT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DAJ7YT/feedback/</feedback_url>
            </event>
            <event guid='1be146cf-d927-5694-a3ff-a3da7aebb275' id='44409' code='QDZFWW'>
                <room>Function (4.1)</room>
                <title>JuliaSimBatteries.jl: Robust PDE Models of Lithium-ion Batteries</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Lithium-ion battery models are highly nonlinear systems of stiff, partial differential-algebraic equations (PDAEs). It is challenging to robustly solve the system of equations over a range of inputs and parameters &#8211; many commercial and open-source battery modeling tools are prone to sporadic failure stemming from issues in setting up, initializing, and solving these systems. This talk discusses these pitfalls and the solutions implemented in the JuliaSimBatteries.jl package.</abstract>
                <slug>juliacon2024-44409-juliasimbatteries-jl-robust-pde-models-of-lithium-ion-batteries</slug>
                <track>General</track>
                
                <persons>
                    <person id='47240'>Sebastian Miclu&#539;a-C&#226;mpeanu</person>
                </persons>
                <language>en</language>
                <description>JuliaSimBatteries is an advanced lithium-ion battery simulation tool integrating sophisticated electrochemical, thermal, and degradation physics. Utilizing the Doyle Fuller Newman (DFN) model, it can predict a battery&apos;s entire lifetime with fast charging 150,000 times faster than real time. The number of connected batteries is scalable from one cell to packs of thousands using electrochemical models. Scientific Machine Learning (SciML) enables the discovery of hidden governing laws from data, such as degradation and low-temperature behavior. Characterize material properties and propose battery designs using the parameter estimation and optimization tools in JuliaSim.

Building accurate models are essential for understanding, optimizing, and designing batteries. Physically accurate battery models are computationally expensive and difficult to solve robustly. JuliaSimBatteries is more than 100 times faster than other battery modeling tools while solving the same physics, thanks to the speed of the Julia programming language. Bring your battery workflow to the next level to solve challenging problems:
- Pack modeling &#8211; JuliaSimBatteries is performant and enables the predictive power of electrochemical models for large-scale battery packs.
- Uncertainty quantification &#8211; Uncertainty is inherent in battery modeling. JuliaSimBatteries helps mitigate and understand the root causes of uncertainty with JuliaSim Model Optimizer.
- Fast charging &#8211; Built for robust and efficient simulations, even at the extreme operating conditions of fast-charge.
- Degradation &#8211; Predict battery lifetime and health with SEI capacity fade models.
- Discover hidden physics &#8211; Combine physics from our battery models and your data to discover hidden governing laws using SciML tools.
- Lifetime prediction &#8211; Estimate a battery&apos;s entire lifetime with fast charging in under a minute with the DFN model.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QDZFWW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QDZFWW/feedback/</feedback_url>
            </event>
            <event guid='9ddf58fd-122b-5b75-ba10-87a825dc1d05' id='43412' code='PG8JXT'>
                <room>Function (4.1)</room>
                <title>Introducing DMRjulia v1.0</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>With a growing user-base, DMRjulia v1.0 is undergoing its inaugural release. This software package has been in development for a few years and has been used in previous academic publications for computations on tensor networks for strongly correlated quantum problems. We discuss new algorithms that have been developed in the software package and the interface of those access tools with hardware provided on the Digital Research Alliance of Canada. We will cover the documentation available.</abstract>
                <slug>juliacon2024-43412-introducing-dmrjulia-v1-0</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/PG8JXT/Screenshot_2024-01-12_at_05.17.34_oVuCMFK.png</logo>
                <persons>
                    <person id='46461'>Thomas E. Baker</person>
                </persons>
                <language>en</language>
                <description>Our talk will cover introductory material related to the use of the DMRjulia library that is pending its v1.0 release

https://github.com/bakerte/DMRJtensor.jl

and include an existing article for beginners:

T.E. Baker, S. Desrosiers, M. Tremblay, M.P. Thompson, M&#233;thodes de calcul avec r&#233;&#769;seaux de tenseurs en physique Can. J. Phys. 99, 4 (2021) [(Basic tensor network computations in physics), arxiv: 1911.11566, p. 20]

We will debut a full software tutorial for the software and cases where DMRjulia has led to new developments in modelling of quantum systems, including some that will be released around March 2024. Basic design principles that are native to Julia will be discussed with lessons and recommendations. We also hope to contribute back to the core Julia codebase with some improvements that we have identified.

Our software was optimised around a specific hardware implementation on the Digital Research Alliance of Canada&#8217;s hardware infrastructure. We will debut public interfaces to use these tools and recap lessons learned on the specific implementation of the library on hardware. We used several packages in the Julia ecosystem to accomplish the best interface possible with the best performance. Our software has been optimized to run efficiently in shared memory environments, including high-performance computing clusters. We will demonstrate results and recap lessons learned in improving performance by utilizing parallelism in background libraries and tuning parameters for a given computing environment.

The core of the software package is available online under the DMRJtensor package, but the v1.0 release (scheduled for May) and some helper tools (scheduled for June) will be made available concurrent with some ongoing academic research. We will also cover any new developments with these new capabilities and ways in which DMRjulia can be used for scientific results at the cutting edge of research.


We are grateful to the US-UK Fulbright Commission for financial support and being hosted by the University of York.  This research was undertaken in part thanks to funding from the Bureau of Education and Cultural Affairs from the United States Department of State.

T.E.B. graciously thanks funding provided by the postdoctoral fellowship from Institut quantique. This research was undertaken thanks in part to funding from the Canada First Research Excellence Fund (CFREF).

This research was undertaken, in part, thanks to funding from the Canada Research Chairs Program. The Chair position in the area of Quantum Computing for Modelling of Molecules and Materials is hosted by the Departments of Physics &amp; Astronomy and of Chemistry at the University of Victoria.

This work has been supported in part by the Natural Sciences and Engineering Research Council of Canada (NSERC) under grants RGPIN-2023-05510 and DGECR-2023-00026.

This work is supported in part with support from the University of Victoria&apos;s start-up grant from the Faculty of Science.

This research was enabled in part by support provided by Research Computing Services at the University of Victoria as well as the Digital Research Alliance of Canada (alliance&#8203;can&#8203;.ca).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/bakerte/DMRJtensor.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PG8JXT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PG8JXT/feedback/</feedback_url>
            </event>
            <event guid='465e263f-8a8b-5ab0-9645-6de1eb6bfb6b' id='41434' code='EDU9LS'>
                <room>Function (4.1)</room>
                <title>Scientific Data Minisymposium</title>
                <subtitle></subtitle>
                <type>Minisymposium</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:05</duration>
                <abstract>Julia&apos;s elegance and speed lends itself to applications in scientific computing that requires a strong scientific data ecosystem. Building upon prior successful minisymposia on tabular data, the Scientific Data minisymposium will extend the scope to dealing with annotated, hiearchical, and n-dimensional data. Additionally, the symposium will invite talks on processing large datasets using advanced chunking techniques, distribution of big data via cloud computing and data formats.</abstract>
                <slug>juliacon2024-41434-scientific-data-minisymposium</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='45071'>Mark Kittisopikul, Ph.D.</person><person id='46474'>Fabian Gans</person>
                </persons>
                <language>en</language>
                <description>A robust scientific data ecosystem is critical to Julia&apos;s applications in scientific computing. The ability to handle scientific data interchange allows Julia to interoperate with existing scientific projects which may be using code in other languages such as MATLAB, Python, C, C++, or Rust. Prior minisymposia on data have emphasized the use of Julia with tabular data in CSV files or web friendly data formats such as JSON. Julia&apos;s strong support for tabular data and JSON provide a strong foundation to build upon. Scientific data also extends into n-dimensional arrays with dimensions describing space, time, and other parameters such as wavelength that may not be well served these data formats. These datasets are organized into nested hiearchial groups and are annotated with standardized regular vocabulary.

Potential topics for the scientific data minisymposium are as follows.
1. Advanced input and output APIs for scientific data. This includes HPC interfaces such as Message Passing Interface (MPI), cloud data APIs, and interfaces with databases.
2. Data formats for scientific data interchange. Discussion of data formats such as HDF5, NetCDF, FITS, Zarr, ADIOS2, and ASDF or their incoporation into data schemes such as scverse would be welcome.
3. Data exchange between threads and (distributed) processes. This especially includes techniques that transfers data while retaining annotations and context.
4. The implementation of abstract interfaces over similar data interfaces. For example, implementing a general n-dimensional chunk based interface supporting multiple data formats.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EDU9LS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EDU9LS/feedback/</feedback_url>
            </event>
            <event guid='0e3e2ae0-bad0-5bb4-9750-78d4f3d07511' id='43424' code='DWTEVS'>
                <room>Function (4.1)</room>
                <title>DiskArrays.jl for working with large disk-based nd-arrays</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>DiskArrays.jl provides the AbstractDiskArray interface for chunked and compressed n-dimensional arrays with slow random access. Implementing the interface gives access to a wide set of indexing, views, reductions and broadcasting. Downstream packages can optimize parallel operations on these chunked arrays using the AbstractDiskArray interface.</abstract>
                <slug>juliacon2024-43424-diskarrays-jl-for-working-with-large-disk-based-nd-arrays</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='46521'>Felix Cremer</person><person id='46474'>Fabian Gans</person>
                </persons>
                <language>en</language>
                <description>Scientific data formats like NetCDF, HDF5 or Zarr allow storing large array data on local or network drives or in the cloud.
Julia packages for these data types provide custom getindex/setindex methods on datastructures that map to an array on disk.  
However, implementing the full AbstractArray interface has proven to be difficult, since the interface is based on the assumption of efficient access to single array elements. 
In many cases data are internally stored in compressed chunks, so that a naive implementation of the AbstractArray interface would lead to very poor performance for many IO operations. 
DiskArrays.jl provides the AbstractDiskArray interface, for which backends only have to implement methods to read and write dense hyperrectanglular subsets of the array for their data type. 
In addition to read/write support an interface for querying the internal chunking structure of the disk-based array is provided by DiskArrays.jl to simplify the implementation of efficient mapreduce and broadcast operations on these arrays. 
Downstream packages can work with diskarrays to define chunk-based computations in a backend-agnostic way and we present an overview of how downstream packages like Rasters.jl, YAXArrays.jl or DiskArrayEngine.jl provide efficient and user-friendly ways to perform operations on larger-than memory compressed arrays.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="http://bgc-jena.mpg.de/~fgans/JuliaCon2024/talk.html">Presentation link</link>
                
                    <link href="https://github.com/meggart/DiskArrays.jl">Github</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DWTEVS/resources/JuliaCon2024_MKVjCB8.zip">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DWTEVS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DWTEVS/feedback/</feedback_url>
            </event>
            <event guid='799d918c-ce0e-57b8-a693-a4dc7fe2a3a4' id='44375' code='HYTKA3'>
                <room>Function (4.1)</room>
                <title>PyramidScheme.jl overviews for larger than memory arrays</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:05:00+02:00</date>
                <start>15:05</start>
                <duration>00:10</duration>
                <abstract>PyramidScheme.jl is a package to easily and efficiently compute pyramids of an array which might be larger than RAM.
PyramidScheme.jl provides the Pyramid struct to handle the layers of a pyramid.
A pyramid is a collection of subarrays of a larger array so that every layer is half the size in every dimension so that pixels are combined to get to the next level of the pyramid.
These different layers allow to lazily give an overview of the data without having to load the whole array into memory.</abstract>
                <slug>juliacon2024-44375-pyramidscheme-jl-overviews-for-larger-than-memory-arrays</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='46521'>Felix Cremer</person><person id='46474'>Fabian Gans</person>
                </persons>
                <language>en</language>
                <description>PyramidScheme.jl allows to efficiently compute these Pyramids and to interactively plot them with the Makie.jl ecosystem. 
PyramidScheme.jl is based on the DiskArrays.jl for the handling of larger than memory arrays and on DiskArrayEngine.jl for the computations on these arrays. 
In the future, we plan to be able to lazily define computations on DiskArrays so that these computations are only applied to the pixels that are currently used in the interactive plot.

In this talk we will show how to use PyramidScheme.jl to easily and efficiently compute the Pyramids from a given DiskArray and how to then interactively plot these Pyramids using Makie.jl.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaDataCubes/PyramidScheme.jl">Github</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HYTKA3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HYTKA3/feedback/</feedback_url>
            </event>
            <event guid='b06d3949-167a-554b-bed8-84220d78dc6a' id='43135' code='WPAKG8'>
                <room>Function (4.1)</room>
                <title>DimensionalData.jl: named dimensions for julia data</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:15:00+02:00</date>
                <start>15:15</start>
                <duration>00:10</duration>
                <abstract>Often our datasets represent physical space, time or named categories organized along some dimensions. Accessing data by these dimensions and values keeps us focused on the content, rather than how it is stored.

DimensionalData.jl facilitates these workflows, with a focus on spatial data, abstractions for other packages to extend, and automated plotting.</abstract>
                <slug>juliacon2024-43135-dimensionaldata-jl-named-dimensions-for-julia-data</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='47364'>Rafael Schouten</person>
                </persons>
                <language>en</language>
                <description>DimensionalData.jl is not the first or only package to define arrays and datasets with named dimensions and lookups in julia - AxisArrays.jl, AxisKeys.jl, NamedDims.jl all succeed in this space. 

But DD is unique in its focus on extensibility, and has spawned many objects inheriting its behaviors, largely across spatial sciences, such as in Rasters.jl, YAXArrays.jl and ClimateBase.jl. It&apos;s also generic enough to find uses in statistics, machine learning and image processing.

Another focus driven by its spatial use-cases is on being able to accurately represent a wide rang of lookup values and behaviors:
- Points or Intervals
- Regular or Irregular
- Ordered or Unordered
- Sampled or Categorical
- Linear or Cyclic
- grid-aligned or with transformed coordinates

This means it can represent the wide variety of CF compliant netcdf files, as well as affine transformed coordinates and projections of GDAL.

DD also shines in ease of plotting, with extensive Plots.jl and Makie.jl recipes that automatically put the right values and labels in the right places.

This talk will demonstrate the basics of both how to use DimensionalData.jl, and for package developers - how to extend it.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WPAKG8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WPAKG8/feedback/</feedback_url>
            </event>
            <event guid='fdfaf6f7-9916-5655-bc6b-5762ca27a884' id='44415' code='A8GMVV'>
                <room>Function (4.1)</room>
                <title>Rasters.jl: raster data and GIS tools for julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Rasters.jl extends DimensionalData.jl for working with geospatial rasters. It abstracts over many kinds of multi-dimensional arrays stored in memory, on disk or in the cloud - from sources like GDAL and netcdf, to present spatial raster data as regular julia `AbstractArray`s, but facilitate easy spatially aware indexing, manipulation, plotting and writing.

This talk will cover basic workflows and features for raster data manipulation with Rasters.jl.</abstract>
                <slug>juliacon2024-44415-rasters-jl-raster-data-and-gis-tools-for-julia</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='47364'>Rafael Schouten</person>
                </persons>
                <language>en</language>
                <description>Rasters.lj adds missing-value handling, tracking of coordinate reference system (crs), lazy operations on larger-than-memory arrays using DiskArrays.jl, and ability to select and plot rasters with rotated or skewed coordinates - to a base of named dimension indexing from DimensionalData.jl.

Scripts and packages built on Rasters.jl can treat Raster, RasterStack, and RasterSeries as black boxes. They may hold unopened GeoTiff or NetCDF filenames or urls, Arrays in memory, or CuArrays on the GPU - but they will all behave in essentially the same way - allowing spatial indexing, manipulation and plotting.

Rasters.jl also provides a range of common GIS tools for raster manipulation:

`aggregate: aggregate data by the same or different amounts for each axis.
`mosaic`: join rasters covering different extents into a single array or file.
`crop`: shrink objects to specific dimension sizes or the extent of another object.
`extend`: extend objects to specific dimension sizes or the extent of another object.
`trim`: trims areas of missing values for arrays and across stack layers.
`resample`: resample data to a different size and projection, or snap to another object.
`rasterize`: rasterize GeoInterface compatible points and geometries.
`extract`: extract values from points or geometries.
`zonal`: calculate zonal statistics for an object masked by geometries.
`mask`: mask an object by a polygon or Raster along X/Y, or other dimensions.

While less mature than similar packages in R or python, Rasters.jl already has many ease of use and performance advantages. 

Operations like rasterization and masking are written in native Julia, so they are fast and work on geometry objects sourced from any packages that implement the GeoInteraface.jl interface. 

DiskArrays integration means views, permutations, reductions and broadcasts can be performed over larger-than-memory arrays, only being applied when `getindex` is finally called for a specific region. 

Despite the additional behaviours and geospatial metadata they hold, `Raster` objects are also just regular `AbstractArray`s with standard `Array` behavior. They work with most base methods, and across much of the Julia ecosystem. In most cases they retain their spatial metadata and the ability to be indexed by name, spatial coordinates, time or any other dimensions they may have, and will always plot appropriately in Plots.jl or Makie.jl.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/A8GMVV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/A8GMVV/feedback/</feedback_url>
            </event>
            <event guid='6b81b1a1-3918-5334-a38a-c216b5330d2a' id='53260' code='BDTQCG'>
                <room>Function (4.1)</room>
                <title>Efficient Chunk Access across HDF5, Zarr, and TIFF</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:30</duration>
                <abstract>I will discuss efficient chunk access in HDF5, Zarr shards, and TIFF tiles</abstract>
                <slug>juliacon2024-53260-efficient-chunk-access-across-hdf5-zarr-and-tiff</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='45071'>Mark Kittisopikul, Ph.D.</person>
                </persons>
                <language>en</language>
                <description>I will discuss efficient chunk access in HDF5, Zarr shards, and TIFF tiles. This will include recent features added in HDF5.jl and potential hackathon projects.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BDTQCG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BDTQCG/feedback/</feedback_url>
            </event>
            <event guid='7a12011d-0131-5e30-a29e-f5612fd50d5b' id='44481' code='V8VGK9'>
                <room>Function (4.1)</room>
                <title>KSVD.jl: A case study in performance optimization.</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:10</duration>
                <abstract>We present `KSVD.jl`, an extremely fast implementation of the K-SVD algorithm, including extensive single-core optimizations, shared-state multithreading, pipelined GPU offloading, and an optional distributed executor. With this implementation, we are able to outperform existing numpy-based implementations by ~100x and scale to datasets with millions of samples.</abstract>
                <slug>juliacon2024-44481-ksvd-jl-a-case-study-in-performance-optimization</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='47435'>Romeo Valentin</person>
                </persons>
                <language>en</language>
                <description>The K-SVD algorithm has gained recent attention in the application of dictionary learning for large-scale transformer models, see e.g. Bricken 2023. However, as it stands, it has been deemed computationally infeasible when applied to large datasets with millions (or billions) of samples.
And indeed, current implementations seem not up to the task; the implementation available as `sklearn.decompositions.MiniBatchDictionaryLearning`, which extensively leverages `numpy` and `joblib`, takes over 3 minutes for ten iterations on a dataset with ten thousand elements (despite multi-threading).

For this reason, we present [`KSVD.jl`](https://github.com/RomeoV/KSVD.jl), an implementation of the K-SVD algorithm in Julia.
This implementation outperforms sklearn&amp;rsquo;s implementation by about $50\times$ when computing the same problem, can gain an additional $2\times$ by reducing the precision from `Float64` to `Float32`, and can be scaled across many compute nodes with almost linear speedup improvements.
That means if, for example, eight compute nodes are available, we can expect a speedup of $(50 \cdot 2 \cdot 8)\times = 800\times$ for moderate to large datasets.
Further, `KSVD.jl` also employs several algorithmic modifications that, to the author&amp;rsquo;s knowledge, lead to faster convergence given the same number of compute operations.

In this presentation, we will present a breakdown of the optimizations and their effects, as well as guidance on the performance optimization workflow in Julia. In particular we will treat the K-SVD algorithm as a case-study to discuss several different aspects of performance optimization and their applicability in Julia. Specifically, this will include
-   careful adjustments to the execution order and small algorithmic adjustments,
-   single-core optimizations like aggressive buffer preallocations, exploiting cache locality, improving the memory layout, and reducing memory movements,
-   careful multi-threading using small batch updates with frequent cross-communication implemented with Julia&amp;rsquo;s efficient task scheduling,
-   a custom multi-threaded dense-sparse matrix multiplication implementation ([`ThreadedDenseSparseMul.jl`](https://github.com/RomeoV/ThreadedDenseSparseMul.jl)),
-   pipelined GPU-offloading for large matrix multiplications (currently unused in the fastest version),
-   a custom distributed executor allowing to spread the computation over many compute nodes.

We hope that the insights we can share will empower others to improve and optimize their code when applicable, and provide some guidelines about the step-by-step breakdown of the process.

The package is available at &lt;https://github.com/RomeoV/KSVD.jl&gt;.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/V8VGK9/resources/main_XSdO7Qw.pdf">The prezzy &#128526;</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/V8VGK9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/V8VGK9/feedback/</feedback_url>
            </event>
            <event guid='d705f6f4-e9f8-58f7-886d-b33883805b2e' id='43470' code='7LYF7W'>
                <room>Function (4.1)</room>
                <title>Julia&apos;s use in nuclear physics data analysis: study of a case</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:50:00+02:00</date>
                <start>16:50</start>
                <duration>00:10</duration>
                <abstract>A study of a case of Julia&apos;s use for data analysis in the nuclear physics field
will be presented.  Binary data, coming from a nuclear fusion-fission reaction
study, including signals from about 200 detectors, amounted to 20-30
TB.  Julia&apos;s capability of seamless calling C-libraries, multi-processing
schemes and efficient data processing allowed us to analyze this dataset with an
ordinary off-the-shelf computer in a reasonable time, without the need to employ
HPC.</abstract>
                <slug>juliacon2024-43470-julia-s-use-in-nuclear-physics-data-analysis-study-of-a-case</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='46519'>Krzysztof Miernik</person>
                </persons>
                <language>en</language>
                <description>In the field of physics, it is high-energy particle physics that is commonly
associated with top high-performance computing. CERN and LHC are one of the
staple marks of this branch. But high performance is needed in other areas as
well and is not limited to supercomputers only. The older brother of particle
physics, nuclear physics, takes advantage of recent developments as well. If we
take a look at state-of-the-art computers of the mid 90&apos;s today&apos;s laptops have
similar computational performance. What needed a whole cluster of computers 30
years ago, now can be achieved with a single cheap machine. This, along with the
development of detectors, detector setups and acquisition systems, allows for
planning larger experiments, while keeping the similar size of scientific groups
counting from a few persons up to tens.  But there is a catch here: the
programming of the HPC machines is and was performed by whole devoted teams.  In
the nuclear physics field, often the whole data analysis is done by a single
scientist or a very small group. Nevertheless, the needs are similar, including,
first of all, a programming language capable of fast data processing to analyze
relatively large volumes of data.  On the other hand, another set of tools is
needed for the data analysis, including common operations like plotting,
histogramming, fitting, or data manipulation. And this is very often,
accomplished in an exploratory data analysis approach, where the final method or
expected results are not clearly stated.  The typical way to achieve that is to
use two languages, one for efficient data processing (C/C++), and preliminary
analysis, and the second for convenient, dynamic analysis and visualization
(Python or specialized programs).

Julia ideally fits into this scheme with its high performance, while keeping
dynamic and simplicity, effectively removing the need to master two languages. In a
one-person analysis scenario, this is especially welcome. An important feature,
needed to unlock the full potential of the modern, multi-core machines, and
accomplish efficient data processing, are easily accessible multi-processing
capabilities present in Julia.  The whole analysis code can be consistently
written in one language, from the raw file interpretation to the publication
figures, which makes it easy to maintain, reuse and train new members of the
group.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/7LYF7W/resources/miernik_juliacon2024_dMr1P2D.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/7LYF7W/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7LYF7W/feedback/</feedback_url>
            </event>
            <event guid='8b50d7b9-b50f-5ae5-92dc-07af835e3beb' id='44172' code='RXG3W3'>
                <room>Function (4.1)</room>
                <title>UnROOT.jl - Data I/O for High-Energy Physics in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>00:30</duration>
                <abstract>We present the foundational package for handling High-energy physics (HEP) data stored in .root files, which will enable physicists to use Julia for physics tasks in HEP. Traditionally, HEP software consists of mostly C++ since 2000s, but as the analysis computation becomes more complex, the two-language problem in the physics data analysis grows wider. UnROOT.jl improves quality of life by providing performant reading &amp; writing to support fast &quot;for-loop&quot; style data analysis with ease.</abstract>
                <slug>juliacon2024-44172-unroot-jl-data-i-o-for-high-energy-physics-in-julia</slug>
                <track>Scientific Data Minisymposium</track>
                
                <persons>
                    <person id='47210'>Jerry Ling</person>
                </persons>
                <language>en</language>
                <description>We present package that is at the core of high-performance high-energy physics data analysis, UnROOT.jl, a pure Julia ROOT file I/O package that is optimized for speed and ergonomics that can solve the two-language problem in High-energy physics data analysis.

We discuss what affects performance in Julia, the challenges, and their solutions during the development of UnROOT.jl. We highlight type stability as a challenge and discuss its implication whenever any &#8220;compilation&#8221; happens (incl. Numba, Jax, C++) as well as Julia&#8217;s specific ones.

We also highlight the our quick adoption of the upcoming RNTuple file format/specification in ROOT and ease of implementation in Julia, including reading and writing, that will enable physicists to drop-in Julia to replace any part of a traditional data pipeline.

Finally, demonstrate the performance and &#8220;easy to use&#8221; claim by comparing UnROOT.jl against popular alternatives (RDataFrame, Uproot, etc.) in medium-size realistic benchmarks, comparing both performance and code complexity.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaHEP/UnROOT.jl">GitHub repo UnROOT.jl</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/RXG3W3/resources/JuliaCon2024_-_UnROOT.jl_-_Jerry_Ling_-_Moelf_gViVjzh.pdf">Talk slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/RXG3W3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RXG3W3/feedback/</feedback_url>
            </event>
            <event guid='56e75c04-8987-5c36-92ba-4c0d895bb39a' id='44410' code='7KHQUU'>
                <room>Function (4.1)</room>
                <title>Circuit Model Discovery for Porous Silicon-Based Supercapacitors</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>With an ever-increasing complexity in supercapacitors&#8217; structure, it has become that much harder to find a feasible circuit model which could and should aid in the physical modelling of a supercapacitor towards a better understanding of the physical processes involved in its electrical behaviour. This work proposes a different method of finding a circuit model for a porous Si-based supercapacitor using ModelingToolkit.jl and DifferentialEquations.jl.</abstract>
                <slug>juliacon2024-44410-circuit-model-discovery-for-porous-silicon-based-supercapacitors</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47388'>Irina-Nicoleta Bratosin</person>
                </persons>
                <language>en</language>
                <description>Supercapacitors have been gaining more attention in the past few decades due to their potential of replacing batteries as the main portable energy storage device and while many breakthroughs have been made in this particular department, there is still an aspect to it that is most often brushed aside, the circuit modelling.
 Although it is true that performing circuit modelling on a supercapacitor would be a useful tool towards a better understanding of its complex processes that contribute to charge transfer and storage, it is also true that finding the said model is a daunting task. As a consequence, most circuit modelling for a supercapacitor is often made through making an array of assumptions and brute forcing the process until a mathematical equivalent, of which there&#8217;s an infinity, rather than a physical equivalent is found. From Occam&#8217;s razor, a philosophical principle, to infinite RC ladders, a valid, yet brute force method, it has become apparent that in order for the supercapacitor science to evolve, a better model discovery strategy is needed to constrain the space of possible circuit variants. 
This work proposes using Julia&#8217;s arsenal of modelling tools on supercapacitor data, specifically electrochemical impedance spectroscopy and cyclic voltammetry, towards finding a circuit model directly derived from said data. The main principle of this modelling strategy consists in starting with an RC circuit configuration and updating on it as more information from the data is introduced, so rather than coming up with an infinite RC ladder circuit, the exact configuration of specific resistances and capacitances will be discovered from the information offered by Nyquist, Bode and CV (cyclic voltammetry) graphs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7KHQUU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7KHQUU/feedback/</feedback_url>
            </event>
            <event guid='69d6e45d-2241-5898-978f-4d92b3f07a79' id='44263' code='UQWX7N'>
                <room>Function (4.1)</room>
                <title>A Computational Environment for Simulations in Systems Biology</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>The poster studies the optimal distributed architecture to run simulations with Julia-based models in the field of Systems Biology. Julia parallel framework of distributing the code across remote workers is applied to different cluster configurations: managed by HTCondor and Kubernetes through Julia interfaces ClusterManagers.jl and K8ClusterManagers.jl. The poster summarizes InSysBio experience and presents pros and cons of building such computational environment for modeling and simulations.</abstract>
                <slug>juliacon2024-44263-a-computational-environment-for-simulations-in-systems-biology</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47250'>Ivan Borisov</person>
                </persons>
                <language>en</language>
                <description>One of the main computational challenges of Systems Biology and Quantitative Systems Pharmacology is solving large differential equation systems with thousands sets of input parameters. The task becomes even more challenging when multiple therapies and clinical conditions are being modeled. The software and hardware environment to address this problem and speed-up the simulations is of utmost importance for the field. The poster proposes several approaches to address this problem in Julia. Julia ability to easily parallelize the computations and distribute workloads across workers is applied to the following architectures: 

1.	On-site distributed computational environment managed by HTCondor through ClusterManagers.jl interface.
2.	Extension of the local computational resources by adding cloud based compute nodes. 
3.	Fully cloud-based environment managed by Kubernetes through K8ClusterManager.jl package. 

The advantages and limitations of the studied approaches are presented in the poster.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/UQWX7N/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UQWX7N/feedback/</feedback_url>
            </event>
            <event guid='f54ca0f8-651d-57d9-b13c-61021cb37efa' id='44334' code='R8VRMH'>
                <room>Function (4.1)</room>
                <title>PlantModules.jl: a package for modular plant growth modeling</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>We introduce PlantModules.jl, a package for modeling plant hydraulics in a modular way. Its purpose is to allow the user to define, run and visualize plant models based on an input structure of any desired complexity and scale, from cell to fields of plants. Its base functionality allows for the simulation of water flows based on water potentials in a tree with hundreds of branches in just a few dozen lines of code, and a focus on extensibility allows for easily adding other processes.</abstract>
                <slug>juliacon2024-44334-plantmodules-jl-a-package-for-modular-plant-growth-modeling</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47959'>Bram Spanoghe</person>
                </persons>
                <language>en</language>
                <description>A rising world population and changing environmental conditions have created a need for an increasing food supply using the same amount of agricultural area and under often more difficult growing conditions. A better understanding of plant growth has become essential in achieving this, allowing, among others, the targeted breeding of plants with greater resistance to these changing conditions. Plant models, in turn, have become an indispensable tool for steering plant growth.

The state-of-the-art in plant modeling are Functional-Structural Plant Models (FSPMs). These models consider both functional processes such as photosynthesis, water flow, and carbon allocation, as well as the structure of the plant, usually represented as a network of repeating elementary units such as leaves, root segments, or cells. Our package is intended to serve as an addition to the FSPM modeling framework in Julia. Among these, the Virtual Plant Laboratory is a notable collection of FSPM-related Julia packages and already includes a wide range of functionalities, such as graph rewriting for simulating the growth of the structure of a plant through time, visualization functions, and models for calculating certain plant biophysical processes given the weather conditions.

What is not yet available is a way to accurately model functional processes over time using sets of differential equations. This package provides this functionality by interfacing with Julia&apos;s modeling ecosystem, specifically ModelingToolkit.jl (MTK). As this package aims to maximize ease of extensibility, the intuitive syntax of this modeling package is ideal as it allows users to easily implement their own functional processes as MTK systems and provide high-performance models. Writing out a FSPM in this modeling language by hand would be incredibly time-consuming, since it can consist of over thousands of elementary units that all need to be created and connected. PlantModules.jl automates this process, allowing for modeling plants whose structure consists of many elements or even changes over time.

The final contribution of the package is the inclusion of a simple, yet powerful implementation of hydraulics as a functional process. It describes the growth of plant parts due to turgor pressure, which results from water flows in the plant driven by water potentials. This process is often overlooked in favor of carbon-related processes, yet it is also an essential driver of growth and is easily coupled to carbon models. Another advantage of the provided hydraulics implementation is that it works on all spatial scales and can be used in multi-scale models. This type of model, which simulates a system on multiple spatial scales simultaneously, can be very advantageous for modeling plant growth and is also supported by the package.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/R8VRMH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/R8VRMH/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='While Loop (4.2)' guid='892ce152-be7e-5cad-974c-13ba80dc75d2'>
            <event guid='65b70f95-994e-53f9-925b-5ae00d7dc589' id='43562' code='R3HRGW'>
                <room>While Loop (4.2)</room>
                <title>PiecewiseInference.jl: inverse modelling for complex dynamics</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:10</duration>
                <abstract>PiecewiseInference.jl is a novel inverse modelling framework specifically designed for the inference of parameters in large, nonlinear differential equation using time series data. It is based on a segmentation method together with minibatching. We briefly discuss its building blocks and demonstrate its performance with large ecosystem models. PiecewiseInference.jl is a user-friendly package that significantly simplifies the inference of parameters in complex dynamical models.</abstract>
                <slug>juliacon2024-43562-piecewiseinference-jl-inverse-modelling-for-complex-dynamics</slug>
                <track>General</track>
                
                <persons>
                    <person id='46608'>Victor Boussange</person>
                </persons>
                <language>en</language>
                <description>The inference of parameters in large, nonlinear differential equation models using time series data poses significant challenges. Bayesian methods, that infer the full posterior probability distribution of the unknown parameters, are computationally expensive and particularly prone to the curse of dimensionality. Alternatively, local-search methods based on variational optimizers are efficient but tend to converge to local minima. Here, we introduce PiecewiseInference.jl, an inverse modelling framework specifically designed for the inference of parameters in large, nonlinear differential equation using time series data. PiecewiseInference.jl improves the convergence of local-search methods by implementing a segmentation method and parameter constraints, which are used in combination with minibatching. By partitioning time-series data into shorter segments, the framework effectively regularizes the loss function, mitigating issues arising from the nonlinearities. The implementation of parameter constraints ensures that both model parameters and initial conditions remain within scientifically and numerically valid ranges, a critical aspect for the successful application of variational optimizers in inverse modeling problems.
Furthermore, the use of minibatching in PiecewiseInference.jl mitigates overfitting while reducing memory pressure. We briefly discuss the building blocks of PiecewiseInference.jl and demonstrate its performance on simulated food-web dynamics of increasing complexity. PiecewiseInference.jl is a user-friendly package that significantly simplifies the inference of parameters in complex dynamical models. Its ability to integrate data into complex scientific models enables their systematic testing and continuous development, making it a valuable asset for modelers in various fields.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/vboussange/PiecewiseInference.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/R3HRGW/resources/juliacon2024_prez_split_pGcItee.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/R3HRGW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/R3HRGW/feedback/</feedback_url>
            </event>
            <event guid='d41ede2b-8a5c-5c4d-9d49-416bcb6b6a24' id='44165' code='BSKBUG'>
                <room>While Loop (4.2)</room>
                <title>Newcomers experiences: Why do we need a stricter Julia mode&#129488;</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>By design Julia was designed to be familiar for people coming from MATLAB or python. This is great to attract people, however we need guardrails for people that want to develop performant packages. 

This will be a series of examples of code from colleagues, how to make them more Julian and a proposal for the language to help these newcomers to write fast and extensible code.</abstract>
                <slug>juliacon2024-44165-newcomers-experiences-why-do-we-need-a-stricter-julia-mode</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47156'>Jorge Alberto Vieyra Salas</person>
                </persons>
                <language>en</language>
                <description>People coming from MATLAB and python might find the julia language sort of familiar at first glance, but will not take long until they stumble upon problems stemming from bad habits coming from these other programming languages. 

One example of this is this recent talk from JuliaCon Local Eindhoven https://youtu.be/RUJFd-rEa0k?si=X4FHouP7ne4Ocv4U 

These bad habits are not exclusive of people coming from interpreted languages, but also from C and Java because people tend to over-restrict their code.

Sometimes both people struggle with the type system because they are not use to it and need better guardrails in order to avoid problems.

On top of the survey I will propose a few ideas to change the tools and/or the language to help new people coming to julia either seasons developers or newbies.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BSKBUG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BSKBUG/feedback/</feedback_url>
            </event>
            <event guid='d3846ca6-43a9-59d0-8b40-142ad3b72530' id='44249' code='MG8LZV'>
                <room>While Loop (4.2)</room>
                <title>Julia-Powered Computerized Cognitive Rehabilitation for Children</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>Julia-Powered Computerized Cognitive Rehabilitation for Children
Cognitive Rehabilitation Therapy refers to set of treatments that help improve a child&#8217;s ability to think after a brain injury or illness that affects the brain that aim to improve a child&apos;s ability to perform a certain cognitive tasks by retraining previously learned skills and teaching compensatory strategies after overcoming a certain Brain injury or disability.</abstract>
                <slug>juliacon2024-44249-julia-powered-computerized-cognitive-rehabilitation-for-children</slug>
                <track>General</track>
                
                <persons>
                    <person id='47149'>Aditi Raviraj Burse</person><person id='47150'>Radhika Shidling Bhangi</person>
                </persons>
                <language>en</language>
                <description>As it is important , many Children suffer from brain disabilities and after getting over it , are getting difficulty in performing their cognitive functions in their Schools or any of the environment they are present into. Which would surely affect their lives.
The purpose of this study was to understand Children are not able to perform their cognitive functions like Attention, Memory, Language, Social Recognition, Perception &amp; Thinking using Julia Packages. 
For the above study we need data from various sources. This data includes child&#8217;s memory dataset , Attention span datasets, Language skills datasets, IQ level test dataset, problem-solving datasets etc . We had collected data from various sources and implemented using Julia Packages such as DataFrames.jl which will tabulate our data, MLJ.jl to make predictions on our data and PyPlot.jl to plot the results and the other metrics.
OUTLINE:
Introduction to Cognitive Rehabilitation (2minutes)
Importance of Cognitive Functions in Children (2minutes)
Julia for Cognitive analytics (2minutes)
Approaches and models for Cognitive Rehabilitation(7minutes)
Demonstrating a basic forecasting model (5minutes)
Results and Discussions (5minutes)
Conclusion (2minutes)
Question and Answer (5minutes)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MG8LZV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MG8LZV/feedback/</feedback_url>
            </event>
            <event guid='d75ae0b9-7ddc-581d-8abe-79da17b28267' id='43482' code='PSNXYK'>
                <room>While Loop (4.2)</room>
                <title>MacroModelling.jl - developing and solving DSGE models</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>The goal of MacroModelling.jl is to reduce coding time and speed up model development by providing functions for working with discrete-time DSGE models.
These kinds of models describe the behavior of a macroeconomy and are particularly suited for counterfactual analysis (economic policy evaluation) and exploring / quantifying specific mechanisms (academic research). Due to the complexity of these models, efficient numerical tools are required, as analytical solutions are often unavailable.</abstract>
                <slug>juliacon2024-43482-macromodelling-jl-developing-and-solving-dsge-models</slug>
                <track>Economics</track>
                
                <persons>
                    <person id='46531'>Thore Kockerols</person>
                </persons>
                <language>en</language>
                <description>MacroModelling.jl is a Julia package for developing and solving dynamic stochastic general equilibrium (DSGE) models.
The package serves as a tool for handling the complexities involved when working with these kind of models, such as forward-looking expectations, nonlinearity, and high dimensionality.
The user-friendly syntax, automatic variable declaration, and effective steady state solver facilitate fast prototyping of models. Furthermore, the package allows the user to work with nonlinear model solutions (up to third order (pruned) perturbation) and estimate the model using gradient based samplers (e.g. NUTS, or HMC). Currently, DifferentiableStateSpaceModels.jl is the only other package providing functionality to estimate using gradient based samplers but the use is limited to models with an analytical solution of the non stochastic steady state (NSSS). Larger models tend to not have an analytical solution of the NSSS and MacroModelling.jl can also use gradient based sampler in this case. The target audience for the package includes central bankers, regulators, graduate students, and others working in academia with an interest in DSGE modelling.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/thorek1/MacroModelling.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PSNXYK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PSNXYK/feedback/</feedback_url>
            </event>
            <event guid='738c3b75-5865-5053-abac-6c0b09ffba93' id='43407' code='RVNXNE'>
                <room>While Loop (4.2)</room>
                <title>Developing a Satellite Telemetry Analysis System</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>This talk presents how we developed a general, adaptable satellite telemetry analysis system using the Julia language and its ecosystem. The system can fetch the telemetry packets from the mission database, convert the desired telemetry variables, and output a data frame with the information. From here, we can use all the power in Julia language to perform the complicated analysis often required to verify the attitude and orbit control subsystem health.</abstract>
                <slug>juliacon2024-43407-developing-a-satellite-telemetry-analysis-system</slug>
                <track>General</track>
                
                <persons>
                    <person id='47467'>Ronan Arraes Jardim Chagas</person>
                </persons>
                <language>en</language>
                <description>In the previous JuliaCon, we presented how we use Julia to develop our next-generation satellites&apos; attitude and orbit control subsystem (AOCS) at the National Institute for Space Research (INPE). During the development, we identified a critical area in which Julia could provide an excellent contribution: telemetry analysis.

Telemetry is all the data a satellite sends to the ground, encompassing the information we have to verify the system&apos;s health. We also use the same data during the satellite integration when we need to perform several analyses to check if all algorithms and functionalities work correctly.

This kind of analysis is particularly challenging for the AOCS. Given the bandwidth limitation, we can only provide a minimal set of parameters to be sent in the telemetry packet. Hence, we must perform many transformations to rebuild all the AOCS internal states, especially during unexpected events. For example, the AOCS telemetry frame usually contains only the satellite position in the inertial reference frame. Thus, to obtain its geodetic position (latitude, longitude, and altitude), we need to convert the inertial frame to an Earth-fixed frame and then transform it from the position vector to geodetic coordinates.

Every mission has its telemetry analysis system. However, those environments are usually built for fast telemetry checking, targeting the satellite operators during the daily control routines. Those environments often lack a proper programming platform to perform telemetry data transformation.

Given the above discussion, we decided to build a general, adaptable telemetry analysis system for the Julia language. The ecosystem defines a set of general API functions to build the interface with any telemetry analysis system. First, we must define a telemetry source, stating how to obtain and unpack the packets. Afterwards, we define the telemetry database, where all the existing variables are registered, including the transfer functions between the bits in the frame and the engineering values. Given those definitions, the system is capable of fetching and converting the desired telemetry to a DataFrame, where we can use all the power in Julia language to perform any analysis we want.

From now on, we expect to use this system in all of INPE&apos;s missions, including the tasks in the development stage. System validation happened for the Amazonia-1 mission, which was successfully launched in February 2021, where we implemented the interface with the current telemetry analysis system, SATCS. In this task, Julia proved to be an outstanding alternative. We needed to convert a proprietary language for the transfer functions to Julia code, where we extensively used Julia&apos;s metaprogramming capabilities, leading to a high-speed system to convert the telemetry information. After implementing the interface, we could easily access the satellite&apos;s telemetry and perform a myriad of analyses. In fact, we quickly designed an automatic telemetry analysis system, running every day, to spot common problems and alert the mission specialists by e-mail if anything is identified.

This talk will detail how the system was designed and important study cases obtained from the Amazonia-1 satellite telemetry analysis, stating how the capabilities available in Julia language and its ecosystem were paramount in the development.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaSpace/TelemetryAnalysis.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RVNXNE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RVNXNE/feedback/</feedback_url>
            </event>
            <event guid='8264bc3b-68f1-523f-bb5a-28abd300356c' id='44509' code='9D3TTS'>
                <room>While Loop (4.2)</room>
                <title>The SatelliteToolbox.jl Ecosystem</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>The SatelliteToolbox.jl ecosystem was created almost ten years ago to contain functions for solving satellite-related problems using the Julia language. Since then, it has become an essential asset for the Brazilian National Institute for Space Research (INPE) when analyzing space missions. This talk presents the ecosystem&apos;s main functions and shows case studies of demands put by the Brazilian space program that were solved using SatelliteToolbox.jl.</abstract>
                <slug>juliacon2024-44509-the-satellitetoolbox-jl-ecosystem</slug>
                <track>Aerospace Minisymposium</track>
                <logo>/media/juliacon2024/submissions/9D3TTS/logo_lslf6Vb.png</logo>
                <persons>
                    <person id='47467'>Ronan Arraes Jardim Chagas</person>
                </persons>
                <language>en</language>
                <description>We created the SatelliteToolbox.jl package almost ten years ago to provide a set of functions for the Julia language to perform several satellite-related analyses. Since then, this toolbox has been extensively used in many projects of the Brazilian National Institute for Space Research (INPE).

Currently, the ecosystem contains functions that can be used to perform many kinds of analyses from the Pre-Phase A up to the operational phase of a satellite. We can create propagators, transform reference systems, compute atmospheric density and magnetic field, and more.

This talk presents the main functions of the twelve packages that form the SatelliteToolbox.jl ecosystem. We also show case studies based on actual demands for the Brazilian space program that were addressed by those algorithms.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaSpace/SatelliteToolbox.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/9D3TTS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9D3TTS/feedback/</feedback_url>
            </event>
            <event guid='bf20207c-d796-5ffd-9c74-ca8625740be1' id='52997' code='NUBDFN'>
                <room>While Loop (4.2)</room>
                <title>A Reference Model for Airborne Wind Energy Systems - Case Study</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>A reference model of airborne wind energy systems will be presented, developed for the International Energy Agency. The requirements included a modular design, good extendability and easy installation without using proprietary software and finally interoperability with larger simulation frameworks, written in Python.

Julia was chosen for performance, readability and maintainability. The solution consists of a set of eight Julia packages that can be used individually or in combination.</abstract>
                <slug>juliacon2024-52997-a-reference-model-for-airborne-wind-energy-systems-case-study</slug>
                <track>Aerospace Minisymposium</track>
                <logo>/media/juliacon2024/submissions/NUBDFN/kite_power_tools_vDU0cQy.png</logo>
                <persons>
                    <person id='55226'>Uwe Fechner</person>
                </persons>
                <language>en</language>
                <description>Airborne wind energy - harvesting the wind using a tethered wing - is a new technology that promises much lighter, portable wind energy systems that are beautiful to look at. But designing a flying system with low costs and very high reliability is challenging and requires excellent software tools.

The International Energy Agency has a working group on airborne wind energy to provide stakeholders (governments, investors) with tools to investigate the economic feasibility of these new type of energy systems. In this context, and based on the PhD thesis of the author, a set of Julia packages was developed to be able to simulate the loads and the performance of these systems in all kind of sizes and environmental conditions.

In the presentation, the author will first explain the concept and the status of airborne wind energy and then explain how such models are used. Then the package hierarchy will be explained before diving deeper into the implementation of some of the packages. Finally, some of the challenges of using Julia for such a large software and research project are pointed out.

An impressive 3D visualization was implemented using the GLMakie library. The simulation performance using a pure Julia DAE solver is outstanding, a performance of 66 times faster than real-time was achieved. Finally, an outlook on the coming improvements will be presented.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/NUBDFN/resources/ReferenceModel_Final_Vs6qLj8.pdf">A reference model for Airborne Wind Energy systems</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/NUBDFN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NUBDFN/feedback/</feedback_url>
            </event>
            <event guid='48a2e11b-81c6-53bd-bfce-1532b83cea0e' id='43981' code='XH8KBG'>
                <room>While Loop (4.2)</room>
                <title>Towards Aerodynamic Simulations in Julia with Trixi.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:30</duration>
                <abstract>In this presentation, we discuss recent developments in Trixi.jl, a numerical simulation framework designed for the accurate computation of the physics of flowing compressible media.

We focus on the technical aspect of importing existing meshes into Trixi.jl, exemplified by the utilization of the NACA4412 airfoil mesh from NASA&apos;s Turbulence Model Benchmarking Working Group.
This functionality provides users with the ability to integrate existing meshes into their simulations.</abstract>
                <slug>juliacon2024-43981-towards-aerodynamic-simulations-in-julia-with-trixi-jl</slug>
                <track>Aerospace Minisymposium</track>
                <logo>/media/juliacon2024/submissions/XH8KBG/Trixi_Logo_lfmJSCt.png</logo>
                <persons>
                    <person id='46982'>Daniel Doehring</person>
                </persons>
                <language>en</language>
                <description>Mesh generation is a complex and critical process at the beginning of every grid-based simulation workflow.

We demonstrate how Trixi.jl facilitates this task by showcasing the usage of existing meshes, exemplified by the NACA4412 airfoil meshes from NASA&apos;s Turbulence Model Benchmarking Working Group.
This functionality represents a substantial leap forward, allowing users to seamlessly integrate well-established meshes into their simulations, a feature particularly significant given the intricacies and resource-intensive nature of mesh generation.
In more detail, we discuss the import of bilinear meshes into P4est.jl, a Julia wrapper around the p4est library which provides the datastructures for distributed memory adaptive meshes.

As we delve into the technicalities of Trixi.jl, we shine a spotlight on its pragmatic application in real-world aerodynamic scenarios. The presentation underscores the straightforward integration of advanced features, notably adaptive mesh refinement (AMR), automatic differentiation through ForwardDiff.jl and shock capturing, showcasing their utility in enhancing the precision, robustness and efficiency of simulations.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/trixi-framework/Trixi.jl">GitHub Repository</link>
                
                    <link href="https://join.slack.com/t/trixi-framework/shared_invite/zt-sgkc6ppw-6OXJqZAD5SPjBYqLd8MU~g">Slack Channel</link>
                
                    <link href="https://trixi-framework.github.io/Trixi.jl/stable">Documentation</link>
                
                    <link href="https://www.youtube.com/@trixi-framework">YouTube Channel</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XH8KBG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XH8KBG/feedback/</feedback_url>
            </event>
            <event guid='19ce2ec3-b771-5dca-9b9f-93ff3a061a64' id='44338' code='VQRLQC'>
                <room>While Loop (4.2)</room>
                <title>Variational Multiscale Method in Julia for airfoils simulations</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:10</duration>
                <abstract>A stabilized finite element method - the Variational Multiscale Method - has been implemented in Julia. It is based on Gridap library, and the parallelization on GridapDistributed and PartitionedArrays. It has been tested to simulate airfoil up to Reynolds 500 000.</abstract>
                <slug>juliacon2024-44338-variational-multiscale-method-in-julia-for-airfoils-simulations</slug>
                <track>Aerospace Minisymposium</track>
                <logo>/media/juliacon2024/submissions/VQRLQC/du89_vcontour_Z8GA4LP.png</logo>
                <persons>
                    <person id='47325'>Carlo Brunelli</person>
                </persons>
                <language>en</language>
                <description>The Variational Multiscale Method has been implemented in Julia relying on the Gridap ecosystem. It solves the Navier Stokes equations using the finite element method with same-order interpolation elements. Thanks to Gridap we can solve the non-linear, time-dependent problem on distributed architecture with satisfying strong and weak scaling. To speed up the computation also a linearized version is implemented. The final system is solved using PETSc. Thanks to Julia it is possible to write equations almost the same as on paper, differently from other programming languages.

The main application is to perform implicit LES on transitional airfoils (Reynolds up to 500 000). It has been validated on the sd7003 airfoil and experimental results.

It can be shown how easy is also to implement the continuous unsteady adjoint since the PDEs are available. 

repos:
https://github.com/carlodev/SegregatedVMSSolver.jl
https://github.com/carlodev/IncompressibleAdjoint.jl

Videos:
https://www.youtube.com/watch?v=wyJnVTuCC3Q
https://www.youtube.com/watch?v=manQpEMwj4Y</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/carlodev/SegregatedVMSSolver.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VQRLQC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VQRLQC/feedback/</feedback_url>
            </event>
            <event guid='1d5302c8-182a-50e6-8e7b-6b138b610035' id='44489' code='UXJWXS'>
                <room>While Loop (4.2)</room>
                <title>Trajectory optimisation in space mechanics with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:10:00+02:00</date>
                <start>16:10</start>
                <duration>00:30</duration>
                <abstract>We report on numerical computation of optimal trajectories in space mechanics using Julia code. The talk will address several examples including minimum time orbit transfert computation (CNES) and solar sail control (ESA). Direct transcription and indirect / shooting methods (based on Pontrjagin maximum principle) as well as techniques from convex optimisation will be illustrated on these examples. Current developments based on Julia control-toolbox will be discussed.</abstract>
                <slug>juliacon2024-44489-trajectory-optimisation-in-space-mechanics-with-julia</slug>
                <track>Aerospace Minisymposium</track>
                <logo>/media/juliacon2024/submissions/UXJWXS/IMG_2863_ZjNRTYv.jpeg</logo>
                <persons>
                    <person id='47005'>Jean-Baptiste Caillau</person><person id='47487'>Olivier Cots</person><person id='47482'>Alesia Herasimenka</person>
                </persons>
                <language>en</language>
                <description>There is a strong trend to use Julia in scientific computing, so as to take advantage not only of the performance but also of the high level traits of the language. These features allow to cast problems and algorithms in a form close to their mathematical definitions. As powerful Julia libraries to solve ODE&apos;s and optimisation problems are now available, it is possible to attack efficiently optimal control problems. Space mechanics is a long-standing application of control theory, and we focus on this topic from the classic (though not so simple) maximum height Goddard problem [1] to modern applications stemming from collaborations with space agencies. More precisely, minimum time orbit transfer [2] (collaboration with CNES and Thales Alenia Space) and solar sailing [3] (collaboration with ESA) will be discussed. Several methods will be presented, including direct transcription and shooting. While the first approach consists in a brutal approximation of the infinite dimensional control problem by a nonlinear program with sparse constraints, the second one leverages Pontrjagin maximum principle to ensure a very precise computation of optimal controls. Rather than competing methods, these two approaches must be made to collaborate: direct codes capture the structure of the solution (typically made of bang and singular arcs), which then allows to devise and initialise a tailored shooting function. These points will be illustrated in the framework of ongoing developments of Julia packages from the [control-toolbox](https://control-toolbox.org) [4] suite.

[1] Caillau, J.-B.; Ferretti, R.; Tr&#233;lat, E.; Zidani, H.  An algorithmic guide for finite-dimensional optimal control problems. *Handbook of Numerical Analysis*, in Numerical Control: Part B **24** (2023), 559-626.
[2] Caillau, J.-B.; Gergaud, J.; Noailles, J. 3D Geosynchronous Transfer of a Satellite: continuation on the Thrust. *J. Optim. Theory Appl.* **118** (2003), no. 3, 541-565.
[3]  Herasimenka, A; Dell&apos;Elce, L.; Caillau, J.-B.; Pomet, J.-B. Controllability properties of solar sails. *J. Guidance Control Dyn.* **46** (2023), no. 5, 900-909.
[4] [control-toolbox.org](https://control-toolbox.org)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/control-toolbox/OptimalControl.jl">OptimalControl.jl</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/UXJWXS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UXJWXS/feedback/</feedback_url>
            </event>
            <event guid='38ccd0dd-d4a4-5536-8121-3c0d5c255abe' id='44395' code='SQFY3B'>
                <room>While Loop (4.2)</room>
                <title>Propagating large orbital uncertainty with TaylorIntegration.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-10T16:40:00+02:00</date>
                <start>16:40</start>
                <duration>00:30</duration>
                <abstract>One of the main problems in the computation of orbital predictions, is the propagation of the orbital uncertainty. This problem is relevant in a wide range of scenarios, from the design of interplanetary spacecraft trajectories, to the assessment of the hazard posed by an asteroid impacting the Earth. In this talk, we present a technique to propagate large sets of initial conditions in TaylorIntegration.jl via a technique called Automatic Domain Splitting (ADS).</abstract>
                <slug>juliacon2024-44395-propagating-large-orbital-uncertainty-with-taylorintegration-jl</slug>
                <track>Aerospace Minisymposium</track>
                
                <persons>
                    <person id='47376'>Jorge A. P&#233;rez-Hern&#225;ndez</person><person id='47390'>Luis Eduardo Ram&#237;rez Montoya</person><person id='47443'>Luis Benet</person>
                </persons>
                <language>en</language>
                <description>One of the main problems in the computation of orbital predictions, is the propagation of the orbital uncertainty. This problem is relevant in a wide range of scenarios in astrodynamics, from the assessment of the hazard posed by an asteroid impacting the Earth, to the design of interplanetary spacecraft trajectories. A first possibility to tackle this problem, is to solve a given initial value problem (IVP) in terms of Taylor expansions with respect to time and small deviations around a given reference initial condition, a technique known as jet transport (JT). This technique allows to solve IVPs for small neighborhoods around a given reference initial condition. Nevertheless, although our implementation of JT in TaylorIntegration.jl controls the error with respect to time, so far it does not control the error on the Taylor expansions around these small deviations with respect to the reference initial conditions, which under some circumstances can break the accuracy of the IVP solution. In this talk, we present a technique to mitigate this issue. We are implementing in TaylorIntegration.jl a technique called Automatic Domain Splitting (ADS), as introduced by Wittig, et. al. (2015). The idea is simple: we begin with a domain where we can trust JT initially works. As we propagate, whenever an error metric exceeds a tolerance, the current polynomial splits into two JT integrations, each representing half of the original domain. This process is iterated for each new sub-domain throughout an integration, so that the solution for the set of initial conditions is returned as a binary tree of JT solutions. We discuss applications of this technique to modelling of planetary fly-bys by small bodies (asteroids, comets, spacecraft, etc.).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SQFY3B/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SQFY3B/feedback/</feedback_url>
            </event>
            <event guid='e7b5ad0e-06bb-5517-8c1e-1263c9285cba' id='44464' code='MVFVGB'>
                <room>While Loop (4.2)</room>
                <title>RunwayPNPSolve.jl: Uncertainty-Aware Pose Estimation.</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T17:10:00+02:00</date>
                <start>17:10</start>
                <duration>00:10</duration>
                <abstract>We present `RunwayPNPSolve.jl`, a framework for uncertainty-aware pose estimation for visual landing applications with multiple methods including real-time least-squares minimization + resampling, Monte-Carlo Markov-Chain, and a linear approximation, by leveraging the existing Julia package ecosystem.
The package further provides a framework of useful primitives to build simultaneously differentiable, unitful and coordinate-system-aware interfaces, and an interactive visualization pipeline.</abstract>
                <slug>juliacon2024-44464-runwaypnpsolve-jl-uncertainty-aware-pose-estimation</slug>
                <track>Aerospace Minisymposium</track>
                
                <persons>
                    <person id='47435'>Romeo Valentin</person>
                </persons>
                <language>en</language>
                <description>Autononomous visual landing systems for personal and commercial aircraft have typically only been available given the use of expensive sensors with a moderate safety certification level.
With the recent emergence of high-performing computer vision models using deep learning, a new avenue for such landing systems has opened, and is being pursued by multiple companies such as Acubed (an Airbus company), Daedalean, XWing, Reliable Robotics, and others.
However, it is an open problem to construct such systems under the high safety and certification requirements in aviation.
Thus, deep learning models are typically only used for image feature estimation (including measures of uncertainty), and more traditional techniques are used for the actual pose estimation and processing of uncertainty estimates.

In this talk we will focus on the latter, and showcase our package `RunwayPNPSolve.jl` which leverages Julia&amp;rsquo;s extensive ecosystem for processing pixel features, for example provided as a Normal distribution, to construct a probability distribution over our pose and orientation.

In particular, we first present a framework of data primitives tailored for visual landing setting, including

-   statically typed coordinate systems (e.g. `XYZ`, `ImageProjection`, `LongitudeLatitude`) that integrate with `Geodesy.jl` and `CoordinateTransformations.jl`;
-   defining the external and (most of the) internal API through `Unitful.jl` interfaces (`m`, `pxl`, `degrees`), while maintaining type flexibility for e.g. `ForwardDiff.jl`&amp;rsquo;s `Dual` types;
-   a live satelite-view of pose estimation on real runways that integrates with OpenStreetMaps through `Tyler.jl` and a custom runway database; and
-   interactive visualization capabilities through `Makie.jl`.

After presenting the framework, we present several approaches implemented in `RunwayPNPSolve.jl` for the actual uncertainty-aware pose estimation, including

-   a mathematically sound approach using Markov-Chain Monte-Carlo backed by `Turing.jl`;
-   a resampling based approach built on top of `NonlinearSolve.jl` (although we are happy to discuss our attempts to use `LsqFit.jl`, `Optim.jl`, and `NLSolve.jl`);
-   a somewhat uninformed approach that directly differentiates through the iterative least-squares solver from `NonlinearSolve.jl` using `ForwardDiff.jl`;
-   an efficient linear-approximation requiring only a single (automatic) derivative.

If time permits, we will also discuss how we can estimate the quality of the resulting uncertainty estimates by measuring calibration in a variety of way, including a novel method we plan to publish soon.

The package including the discussed topics can be found under &lt;https://github.com/sisl/RunwayPNPSolve.jl&gt; and &lt;https://github.com/sisl/MultivariateCalibration.jl&gt;.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/MVFVGB/resources/main_LHuQH4l.pdf">The prezzy &#128526;</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/MVFVGB/resources/main_uu5qsPJ.pdf">The paper &#128221;</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/MVFVGB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MVFVGB/feedback/</feedback_url>
            </event>
            <event guid='071868cb-1fcb-5f2a-8553-bc26f2e7c375' id='43506' code='EKUN3E'>
                <room>While Loop (4.2)</room>
                <title>Optimal Cooperative Rendezvous using AerialVehicles.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-10T17:20:00+02:00</date>
                <start>17:20</start>
                <duration>00:10</duration>
                <abstract>This presentation demonstrates the use of ModelingToolkit based AerialVehicles.jl model libraries, JuliaSimControl and InfiniteOpt for optimal rendezvous/docking of a quadrotor with multiple ground vehicles focusing on the efficient cooperation of ground vehicles with a landing quadrotor. The central theme is the use of a collocation-based approach to optimize control efforts, ensuring a seamless rendezvous between multiple ground vehicles and the quadrotor using a shared time-to-go estimate.</abstract>
                <slug>juliacon2024-43506-optimal-cooperative-rendezvous-using-aerialvehicles-jl</slug>
                <track>Aerospace Minisymposium</track>
                
                <persons>
                    <person id='46554'>Rajeev Voleti</person>
                </persons>
                <language>en</language>
                <description>This talk presents an in-depth exploration of a novel solution for the cooperative, optimal multi-vehicle rendezvous problem, focusing on rendezvous of a quadrotor with multiple ground vehicles. The solution, pioneering in its approach, combines a gain-free, time-dependent optimal control problem with a consensus protocol based on shared time-to-go information. This dual-stage method not only streamlines vehicle convergence but also ensures adaptability and efficiency in trajectory refinement.
The presentation will be structured into several key sections, each delving into different aspects of the proposed solution:
Introduction to Multi-Vehicle Rendezvous Problems:
We will begin by providing an overview of the challenges and current state of multi-vehicle rendezvous solutions, particularly emphasizing the complexities of coordinating the rendezvous. This will set the stage for understanding the novelty and necessity of the proposed method.
Overview of the Proposed Methodology:
The first stage involves solving the optimal control problem to generate initial rendezvous trajectories. Here, the focus will be on the gain-free, time-dependent nature of the control problem and its implications for efficient vehicle convergence. The second stage of our approach refines these trajectories in real-time, employing a consensus-based adaptation protocol.
Consensus Protocol and Trajectory Refinement: 
The consensus based adaption would be such that the time-to-go estimates of the ground vehicles will be set to the time-to-go of the approaching quadrotor and our finite-time control framework would make the approach optimal.

Simulation Demonstrations:
A significant portion of the presentation will be dedicated to showcasing numerical simulations. These simulations will demonstrate the method&apos;s effectiveness, its superiority in terms of convergence and adaptability, and the impact of communication topology on performance. The simulations will utilize JuliaSimControl for optimal control generation and the AerialVehicles model library to model the quadrotor and ground vehicles, providing a practical and visual representation of the method&apos;s capabilities.

Practical Implications and Applications:
The talk will explore the practical applications of this methodology, discussing its potential in various fields such as autonomous transport, logistics, emergency response, and military operations. We will delve into how this solution can help the efficiency and safety of autonomous vehicle operations in complex, dynamic environments.

This presentation is designed to provide an understanding of our innovative solution to the multi-vehicle rendezvous problem. Attendees will gain valuable insights into advancements in autonomous systems, optimal control, and consensus protocols, leaving with a deeper appreciation of the complexities and potentials in this rapidly evolving field.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EKUN3E/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EKUN3E/feedback/</feedback_url>
            </event>
            <event guid='09888cb2-90d1-5388-8367-eb904ea7a536' id='44903' code='FJRZL7'>
                <room>While Loop (4.2)</room>
                <title>Seamless Reproducibility of Complex Simulation Workflows</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>Modern model-based design and decision support in engineering climate change response relies on complex simulation workflows, orchestrating research software in diverse programming languages and compute paradigms. Reproducibility and reuse is challenging due to complex installations, and workflow reproducibility is not seamlessly inherited. We analyze the Time to First Reproduction (TTFR) in such workflows using the Julia ecosystem, drawing insights from two projects in our research group.</abstract>
                <slug>juliacon2024-44903-seamless-reproducibility-of-complex-simulation-workflows</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='47786'>Alan Correa</person>
                </persons>
                <language>en</language>
                <description>In the field of engineering climate change response, there is a growing interest in model-based approaches to address complex challenges. For instance, models for simulating shallow free surface flow aid in predicting flooding, landslides, and avalanches for early warning systems and hazard mitigation. Modern methods for model-based design and decision support rely heavily on computational techniques and models implemented within research software, which have been developed over decades. In our research group, we also develop computational methods and models for diverse applications including landslides, subsequently employing them for tasks like sensitivity analysis, model selection, digital twins, uncertainty quantification, and decision support. In these scenarios, integrating and orchestrating existing research software assets into reusable simulation workflows proves to be a practical choice, preventing redundant efforts. Such reproducible and reusable workflows enable transparency, verification and validation, peer review, collaboration, adaptability to new methods, and benchmarking.

Achieving reproducibility and reusability in complex computational model-based workflows poses notable challenges, considering the varied programming languages, package managers, and computing platforms employed in research software development. Furthermore, extension of workflow reproducibility from that of individual software assets is not assured, and cumbersome installation procedures often dissuade researchers from experimenting with well-crafted research software. The question then arises: How can we achieve seamless reproducibility of complex model-based simulation workflows involving heterogeneous research software?

We try to answer this question by considering two research software projects within our group:
1. PSimPy (https://pypi.org/project/psimpy/) - A Python/R package to orchestrate Gaussian Process integrated Sensitivity Analyses, Uncertainty Quantification &amp; Bayesian Model Calibration.
2. SWEBench - An Emulator Framework to facilitate Benchmarking of Forward Solvers for Thin-film Mass Transport over Complex Geometries.

The Julia ecosystem provides an interesting solution to workflow reproducibility that we will analyze in detail. This work particularly emphasizes the Time to First Reproduction (TTFR), a factor that significantly impacts the usability and adoption of software in a research setting. Julia ensures reproducible compute environments through its built-in package manager. Furthermore, its package ecosystem seamlessly enables the installation and utilization of libraries and software from various sources, including Python, R, and pre-compiled binaries via BinaryBuilder. In comparison to individually using other modern solutions, like conda and docker, utilizing the Julia ecosystem allows us to greatly reduce TTFR along with developer and maintenance effort.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FJRZL7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FJRZL7/feedback/</feedback_url>
            </event>
            <event guid='fe72a6ba-ce85-5a85-97b6-cd5177b66b6f' id='43472' code='HYW9AW'>
                <room>While Loop (4.2)</room>
                <title>&#127880; Featured Pluto notebooks: submit your own!</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:00:00+02:00</date>
                <start>19:00</start>
                <duration>00:30</duration>
                <abstract>This poster presents _featured Pluto notebooks_: a curated collection of Pluto notebooks (interactive Julia notebooks) that can be viewed in Pluto or online.

The featured notebooks are intended to onboard new Julia programmers, and to highlight the diversity of work in the Julia community. Featured notebooks are open to submissions from Julia developers of all skill levels; our presentation will showcase this platform to share your ideas and knowledge.</abstract>
                <slug>juliacon2024-43472-featured-pluto-notebooks-submit-your-own</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='46524'>Luka van der Plas</person>
                </persons>
                <language>en</language>
                <description>Pluto is a notebook-based Julia environment. It was initially designed to be especially suitable for students and beginners, but has since grown into one of the most popular IDEs for Julia programmers of all skill levels.

Featured notebooks are a collection of notebooks that can be viewed in Pluto or online ([featured.plutojl.org](https://featured.plutojl.org/)).

Featured notebooks are a way to show users what they can do with Julia and Pluto. For budding programmers, this can mean a simple tutorial on how to use Pluto, or how to use arrays in Julia, but for more experienced programmers, featured notebooks can highlight how Julia is used in different fields, give examples of interactive visualisations that are free to reuse in your own work, or explain more advanced concepts to turn Julia scripts into interactive notebooks.

Featured notebooks are a curated collection; anyone can submit their work as a featured notebook, but submissions are reviewed to ensure new Pluto users won&apos;t encounter broken or unintelligible notebooks. We encourage Julia programmers to submit notebooks.

You don&apos;t need to be an expert to write a featured notebook! The notebooks are designed to help beginning Pluto users get underway with their own ideas; as such, short tutorials on basic Julia concepts, or short examples of neat ideas, are very much welcome, and are a great way to contribute to the Julia community when you&apos;re still learning yourself.

That said, we also very much welcome experienced Julia programmers to share their work. Featured notebooks can highlight how you use Julia in your domain, bring attention to a neat package, or share exercises that you created for a course.

The poster presentation will cover all need-to-know information about how to submit notebooks, and what is appropriate to submit. We will also provide some advice to notebook authors on creating engaging stand-alone notebooks. We will also happily answer your questions and discuss your ideas for potential submissions.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HYW9AW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HYW9AW/feedback/</feedback_url>
            </event>
            <event guid='752d494a-523c-5726-8428-7903853b5ee1' id='44244' code='ZLUFAB'>
                <room>While Loop (4.2)</room>
                <title>Learning Biological Modulation Mechanisms with SciML</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T19:30:00+02:00</date>
                <start>19:30</start>
                <duration>00:30</duration>
                <abstract>Biological systems often include complicated combinations of positive and negative feedback control. Recovering this control network is often difficult, because of both limitations in biological knowledge and available data. In this poster, we present the use of SciML&apos;s universal differential equation framework, uniquely available in Julia, for uncovering and personalising mathematical equations for biological modulation points and mechanisms.</abstract>
                <slug>juliacon2024-44244-learning-biological-modulation-mechanisms-with-sciml</slug>
                <track>Posters</track>
                <logo>/media/juliacon2024/submissions/ZLUFAB/juliacon_poster_IsoBjRP.png</logo>
                <persons>
                    <person id='46030'>Max de Rooij</person>
                </persons>
                <language>en</language>
                <description>Biological regulation is the result of the interplay between many molecules in a network of chemical reactions. Through mathematical modelling, parts of the system can be simulated in silico to quickly match biological hypotheses with experimental evidence.

However, many components of subsystems of human regulation are often unknown, or cannot be directly measured. Therefore, simplifications are required to keep the model both mathematically identifiable from the available data, as well as biologically meaningful. This process can take a long time, and simplified solutions may work on population averages, but fail more often when applied to personalised data directly.

Modelling unknown terms using a neural network, creating a universal differential equation (UDE), and combining this with symbolic regression can enable the data-driven discovery of mathematical model terms that describe the data.

This poster describes the systematic application of these universal differential equations in context of control loops and modulation points found in biological models, presenting the use of neural networks to both locate and recover missing modulation points in biological models. Furthermore, it highlights limitations of the inclusion of neural networks related to data sparsity and identifiability.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZLUFAB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZLUFAB/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Reflection (1.2)' guid='e8c67f96-db48-51c6-9d56-2c117ed5b8d9'>
            <event guid='bf6568aa-33eb-5134-92c4-a9eb8e696cf9' id='43695' code='PN3DXY'>
                <room>Reflection (1.2)</room>
                <title>Separable Functions</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2024-07-10T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>00:30</duration>
                <abstract>Many multidimensional functions (e.g. a Gaussian) can be written in a (generalized) separable form.
`SeparableFunctions.jl` is a package that calculates and represents separable functions efficiently. 
Upon construction of a function, one-dimensional representations are pre-calculated and effienctly represented in various ways to the user.
Compared to a non-separable calculation, this yields significant speed improvements for both CPU and GPU-code alike. Radial functions are also supported.</abstract>
                <slug>juliacon2024-43695-separable-functions</slug>
                <track>Posters</track>
                
                <persons>
                    <person id='46738'>Rainer Heintzmann</person>
                </persons>
                <language>en</language>
                <description>Many multidimensional functions can be written in a (generalized) separable form. A good example of such a function is the Gaussian function. Computing such functions by first computing the separable entities and then combining them, or even keeping them in a lazy form can yield significant advantages in computation speed.
`SeparableFunctions.jl` is a package, that leverages such advantages. Multidimensional functions are computed by first calculating their single-dimensional representations and then creating the final multidimensional result by an outer product (or sum or max or any other operator).
Since the broadcasting mechanism of Julia is fast compared to the evaluation of the function at each multidimensional position, the final result is calculated much faster. The typical speedup can be an order of magnitude. 
The package supports three forms of representing such separable functions: collecting them, a `LazyArray` representation, and a broadcasting form labelled `_sep`. The latter being the most generic, however, for its application the operator needs to be supplied as follows `.*(my_function_sep...)`.
In addition also radial functions (on a Cartesian grid) can be sped up, by exploiting their symmetries and possibly interpolating on a radially pre-calculated grid. 
The package hosts a number of easy to use separable functions such as `gaussian`, `sinc`, `ramp`, `rr2` and some complex-valued exponentials needed for propagating optical fields or Fourier-based shifting.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PN3DXY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PN3DXY/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='3' date='2024-07-11' start='2024-07-11T04:00:00+02:00' end='2024-07-12T03:59:00+02:00'>
        <room name='REPL (2, main stage)' guid='5c6ee87c-db8a-5bb4-a19f-c5cdf33da22a'>
            <event guid='b330e186-fda1-5715-a326-37616cf21ba2' id='53126' code='WPMART'>
                <room>REPL (2, main stage)</room>
                <title>Opening Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-11T08:45:00+02:00</date>
                <start>08:45</start>
                <duration>00:15</duration>
                <abstract>Opening the second day of JuliaCon Global 2024 and PyData Eindhoven 2024 with organizing committee member Koen de Raad.</abstract>
                <slug>juliacon2024-53126-opening-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='55323'>Koen</person>
                </persons>
                <language>en</language>
                <description>Opening the second day of JuliaCon Global 2024 and PyData Eindhoven 2024 with organizing committee member Koen de Raad.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WPMART/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WPMART/feedback/</feedback_url>
            </event>
            <event guid='eb86ddaa-aebc-57be-9a29-00d5def38af1' id='45604' code='DMLTLG'>
                <room>REPL (2, main stage)</room>
                <title>Software at ASML: the Force behind making microchips</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-11T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>00:50</duration>
                <abstract>In a rapidly evolving landscape of semiconductor manufacturing, ASML&#8217;s advanced lithography technologies are pivotal in driving Moore&#8217;s Law forward. The focus of this talk is ASML&#8217;s holistic approach to Software development and acceleration of Software delivery to customers. In addition, we discuss how ASML engages and cultivates Software talents. At the end of this presentation the attendees will have an understanding of ASML&#8217;s software ecosystem and its critical role in advancing the future.</abstract>
                <slug>juliacon2024-45604-software-at-asml-the-force-behind-making-microchips</slug>
                <track>General</track>
                
                <persons>
                    <person id='53550'>Maurice du Mee</person>
                </persons>
                <language>en</language>
                <description>A full description for this keynote will be announcIn a rapidly evolving landscape of semiconductor manufacturing, ASML&#8217;s advanced lithography technologies are pivotal in driving Moore&#8217;s Law forward. The focus of this talk is ASML&#8217;s holistic approach to Software development and acceleration of Software delivery to customers. Key highlights include our innovative development environment, which fosters seamless integration and rapid iteration amongst teams. In addition, we discuss how ASML engages and cultivates Software talent through strategic initiatives and collaborative projects. By fostering a dynamic and innovative work environment, we empower our engineers to drive technological advancements and operational excellence.

At the end of this presentation the attendees will have an understanding of ASML&#8217;s software ecosystem and its critical role in advancing the future of semiconductor fabrication.ed and added to the session when it becomes available.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DMLTLG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DMLTLG/feedback/</feedback_url>
            </event>
            <event guid='3fb13d4a-fabb-5361-838f-d7c68577c01c' id='43367' code='YKRZDP'>
                <room>REPL (2, main stage)</room>
                <title>Language 1.5 revisited</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:30</duration>
                <abstract>At JuliaCon Local Eindhoven 2023, we&apos;ve argued that Julia creates the &quot;1.5 language problem&quot;. The goal back then has been to initiate a discussion--and numerous reactions show that a discussion has been initiated indeed. In this talk, we want to recap our original arguments, analyze and summarize the discussion that we&apos;ve observed online and present some ideas where to take this from here.</abstract>
                <slug>juliacon2024-43367-language-1-5-revisited</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46427'>Michael Tiemann</person>
                </persons>
                <language>en</language>
                <description>At JuliaCon Local Eindhoven 2023, we&apos;ve argued that Julia creates the &quot;1.5 language problem&quot;. What&apos;s the &quot;1.5 language problem&quot;? Well, Julia has been advertised as a language that can be used for rapid high-level prototyping but also for very fast and efficient low-level code. However, while both aspects can be achieved with Julia code, the necessary coding requirements and styles are very different.

The goal of last year&apos;s talk has been to initiate a discussion--and numerous reactions show that a discussion has been initiated indeed. It has been the most watched talk on YouTube from the conference [1], and it has created long discussions on the Julia Discourse [2] and Reddit [3].

Today, we recap and refine our original arguments. Then, we will analyze and summarize the discussion that we&apos;ve observed online. Reflecting on the talk and the online discussion, we will present some ideas and suggestions to where to take this from here. In particular, we will argue that the different styles of Julia programming can be thought of as lying on a spectrum and that a (standardized?) visual guide used in presentations, tutorials, etc. can help a reader identify what sort of expectations they should make about runtime and extendability. Furthermore, we rally a call to arms to create more tutorials that help learners iteratively taking their code bases from the prototyping spectrum to the pedal-to-the-medal speed spectrum.

[1] https://www.youtube.com/watch?v=RUJFd-rEa0k&amp;list=PLP8iPy9hna6Tp3QV4akXAd23_O5Vjm_e2
[2] https://discourse.julialang.org/t/does-julia-create-a-1-5-language-problem/107984
[3] https://www.reddit.com/r/Julia/comments/18nyxew/michael_tiemann_julia_solves_the_2_language/</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YKRZDP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YKRZDP/feedback/</feedback_url>
            </event>
            <event guid='b35efb5d-e5bc-5572-9d8f-66673cf7a3d3' id='42181' code='EJVFMF'>
                <room>REPL (2, main stage)</room>
                <title>BinaryBuilder 2: Return of the Compilers</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Rising from the ashes of its languid repose over the last two years, BinaryBuilder development makes a triumphant reentry into the public world with a brand new implementation and improved ergonomics around almost every aspect of the entire project.  Faster, more modular, configurable, and extensible than ever, the new BinaryBuilder release will change the lives of anyone forced to deal with native code compilation.</abstract>
                <slug>juliacon2024-42181-binarybuilder-2-return-of-the-compilers</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='45475'>Elliot Saba</person>
                </persons>
                <language>en</language>
                <description>BinaryBuilder development hit a plateau about two years ago, when the core developers collected a laundry list of pain points:

* Complex software projects such as LLVM do not fit nicely into a single `build_tarballs()` invocation; there are potentially multiple stages to the build, outputs may need to be split across multiple JLLs, different platforms may need different recipes, etc...
* Extending BinaryBuilder to work with more compilers/platforms is a painful and arcane process that typically requires someone very well versed in the BB world to take to the finish line.
* BinaryBuilder itself was so monolithic and interconnected that small changes could cause failures in seemingly unrelated areas, slowing development dramatically.

Once these pain points accumulated to a certain point, the core developers realized that the very architecture of BinaryBuilder (particularly, how the build environment, so called &quot;compiler shards&quot; were constructed) contributed directly to many of these problems.  Never to shrink away from ambitious projects, the developers rolled up their sleeves and began a from-scratch rework of every component and subsystem of the BinaryBuilder suite.

This talk will cover not just the new end-user capabilities such as staged builds, but also some of the rationale behind the new organization of the codebase and why this organization unlocks new capabilities for users that are not even using BinaryBuilder directly.  One consequence of some of the reorganization will be that pieces of the new BinaryBuilder (such as compilers) will be usable outside of the build environment.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaPackaging/BinaryBuilder2.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EJVFMF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EJVFMF/feedback/</feedback_url>
            </event>
            <event guid='7dd03136-cf4e-55cc-b50d-39b0a3a09564' id='44401' code='STRAXA'>
                <room>REPL (2, main stage)</room>
                <title>Infiltrator.jl - No-Overhead Breakpoints in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>Infiltrator.jl is a small utility package for interactively debugging performance sensitive Julia code with minimal runtime cost.</abstract>
                <slug>juliacon2024-44401-infiltrator-jl-no-overhead-breakpoints-in-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47378'>Sebastian Pfitzner</person>
                </persons>
                <language>en</language>
                <description>Most other debugging solutions for Julia either incur a significant runtime cost (JuliaInterpreter based debuggers) or bad ergonomics (println-based debugging is very limited in power, while gdb-based debuggers are very low-level compared to Julia code). Infiltrator.jl provides a middle ground -- it&apos;s a step up from println-debugging in that it provides an interactive REPL whenever a breakpoint is hit, but still functions at the source-code level without the runtime cost of an interpreter.

This talk will give a quick overview of Infiltrator.jl&apos;s implementation and showcase common workflows for debugging packages and applications.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/STRAXA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/STRAXA/feedback/</feedback_url>
            </event>
            <event guid='f701fdb7-0f34-5ed6-abc4-51ca7ea551b2' id='44495' code='XZRCQG'>
                <room>REPL (2, main stage)</room>
                <title>What&apos;s New in GenieFramework?</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>Join us to discover the latest advancements in GenieFramework. This talk will highlight the key updates, including the introduction of GenieBuilder, improved documentation, customization options with custom components, enhanced styling capabilities, and key technical improvements. Attendees will gain insights into how these new features empower developers to build even more powerful and user-friendly web applications using GenieFramework.</abstract>
                <slug>juliacon2024-44495-what-s-new-in-genieframework</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47459'>Pere Gim&#233;nez</person><person id='47450'>Helmut H&#228;nsel</person>
                </persons>
                <language>en</language>
                <description>- Experience the game-changing capabilities of the new version of GenieBuilder, designed to simplify web application development.
- Discover how the updated documentation together with the app gallery provides comprehensive guidance on GenieFramework&apos;s functionalities.
- Explore the flexibility offered by custom components and how they enable developers to tailor applications to specific requirements.
- Learn about the enhanced styling options including tailwind css.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XZRCQG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XZRCQG/feedback/</feedback_url>
            </event>
            <event guid='d2dafe23-5cae-52a8-8380-81f90113f99a' id='48301' code='AKGE7D'>
                <room>REPL (2, main stage)</room>
                <title>AI Hardware and Real-world AI</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-11T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>01:00</duration>
                <abstract>AI is fast becoming a significant consumer of the world&#8217;s computational power, so it is crucial to use that power wisely and efficiently. Our approaches to doing so must span all levels of the research stack: from fundamental theoretical understanding of the loss surfaces and regularization properties of machine learning models, to efficient layout at the transistor level of floating-point multipliers and RAM.</abstract>
                <slug>juliacon2024-48301-ai-hardware-and-real-world-ai</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='52795'>Andrew Fitzgibbon, FRS</person>
                </persons>
                <language>en</language>
                <description>AI is fast becoming a significant consumer of the world&#8217;s computational power, so it is crucial to use that power wisely and efficiently. Our approaches to doing so must span all levels of the research stack: from fundamental theoretical understanding of the loss surfaces and regularization properties of machine learning models, to efficient layout at the transistor level of floating-point multipliers and RAM. I will talk about projects, such as real-time computer vision on the Microsoft HoloLens HPU (about 3.5 GFLOPS ), which required extreme efficiency in both objective and gradient computations, and how this relates to the training of massive AI models on Graphcore&#8217;s IPU (about 350 TFLOPS). Key to this work is how we empower programmers to communicate effectively with such hardware, and how we design frameworks and languages to ensure we can put theory into practice. So this talk contains aspects of: mathematical optimization, automatic differentiation, programming languages, and silicon design. Despite this range of topics, the plan is for it to be accessible and useful to anyone who loves computers.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/AKGE7D/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AKGE7D/feedback/</feedback_url>
            </event>
            <event guid='bedf326f-4a29-5c04-b552-38fcf669aa51' id='44351' code='HRRRET'>
                <room>REPL (2, main stage)</room>
                <title>Dude, where&apos;s my code?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Julia&apos;s potential is held back by significant usability problems in error messages, debugger operation and performance, and the need for a package, Revise, for live code updates. These diverse issues can be resolved by improving Julia&apos;s ability to relate source code written by the programmer to the various internal representations in Julia&apos;s compiler. In this talk we will explain this common thread and discuss ongoing work to improve compiler &quot;provenance.&quot;</abstract>
                <slug>juliacon2024-44351-dude-where-s-my-code</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47335'>Tim Holy</person><person id='47315'>Claire Foster</person>
                </persons>
                <language>en</language>
                <description>Julia has enormous strengths and its widespread adoption is well justified. However, there remain important usability barriers in areas such as interactive debugging and live code updates. We believe that resolving these barriers will be an important step towards extending Julia&apos;s reach.

In this presentation, we will explain how a single common thread underlies several of the most significant usability challenges. We will also discuss ongoing work to resolve these challenges.

## Challenges

- Efficient Julia development requires the use of a package, Revise.jl to updating already-compiled code in interactive sessions. There are several things that make Revise complex, but the most important is that to track line numbers in actively-edited files, Revise must *selectively* re-evaluate the package&apos;s source code. The Julia compiler doesn&apos;t track all the information required for this rather complex task and as a result it is the main source of Revise bugs and of regressions with each new Julia version.
- Julia&apos;s interactive debugger has poor usability:
  + it often struggles to relate program state back to the source code as written by the programmer. This happens because the debugger/interpreter is targeted not at raw source code, but at an early-to-intermediate stage of the compilation pipeline. This &quot;lowered code&quot; is difficult to relate back to the original source code.
  + it exhibits poor performance, interpreting code at speeds that are often four orders of magnitude slower than compiled code. One way to speed it up --- likely by one to two orders of magnitude --- would be to target the interpreter at an even deeper layer of the compilation pipeline, after many of the most costly operations (method lookup, inlining, etc.) have been finished. But at these deeper layers, the challenge of mapping state back to the original source code is currently intractable.
- Compiler error messages have low resolution; they refer to line numbers but don&apos;t include not the position within a line of the source code. Sometimes they refer to the wrong line of source code.
- Debug information in compiled code has low resolution and stack traces may be ambiguous as to which function call was entered.

These issues arise because of a mismatch between the user&apos;s view of the code as a text file compared to the compiler&apos;s view of the code as a heavily processed intermediate representation (IR). In particular, the IR only knows about the source in an incomplete, low resolution way in terms of line numbers that are sometimes inaccurate.

## Steps towards resolution

To resolve these issues we need a high precision map from the compiler&apos;s various IRs back to the user&apos;s source code --- we need to track the *provenance* of every construct in the IR. With this map we can always talk to the user in terms of their source code, solving many usability problems with error reporting and source-level debuggers. In addition, tools like Revise.jl can use this information to know which range of bytes in the source file define which method signatures.

For our purposes compilation may be broken into these stages:

* Parsing
* Macro expansion
* Symbolic simplification (code lowering)
* Type inference and high level optimization
* Low level optimization and machine code generation

Provenance tracking during parsing has been improved in prior work as part of the [JuliaSyntax](https://github.com/JuliaLang/JuliaSyntax.jl) package. To improve error message generation during lowering, improve the debuggers, and to simplify Revise, we additionally need to track provenance through the next two stages of macro expansion and lowering and this talk will focus on those areas. Solving problems such as backtrace ambiguities will require changes all the way through to machine code generation; we leave that to future work.

Macro expansion presents a particular challenge because user-written macros accept Julia&apos;s `Expr` data structure that can&apos;t support our goals of high precision provenance. To solve this problem we need new data structures and APIs for macro writers and these need to be opt-in to preserve compatibility. A working proof of concept is available at [JuliaLang/JuliaSyntax.jl#329](https://github.com/JuliaLang/JuliaSyntax.jl/pull/329). Designing a completely new public API for macros also allows us to tackle some long standing macro usability issues including
* &quot;automatic hygiene&quot; (no more `esc()`)
* issues with expansion of nested macros
* precise reporting of errors in the syntax supported by a macro
and we&apos;ll briefly touch on these points.

Reworking code lowering has fewer compatibility constraints but is a fairly large body of code. We&apos;ll discuss progress toward rewriting lowering with a particular emphasis on the data structures used. Some of the code analyses implemented in lowering are useful outside the compiler and we&apos;ll talk about how to make them accessible for tasks like tool assisted refactoring.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaLang/JuliaSyntax.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HRRRET/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HRRRET/feedback/</feedback_url>
            </event>
            <event guid='58bcaac6-7a5c-5512-9e79-7f829b71b75c' id='44497' code='7783BN'>
                <room>REPL (2, main stage)</room>
                <title>Static Analysis of Julia Code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>This talk will dive into the world of static analysis for Julia code, a key aspect of ensuring code quality, maintainability, and performance. We will explore the available tools and packages in Julia for static analysis and discuss best practices for integrating static analysis into the development workflow.</abstract>
                <slug>juliacon2024-44497-static-analysis-of-julia-code</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47146'>Gajendra Deshpande</person>
                </persons>
                <language>en</language>
                <description>Julia, a high-level, high-performance dynamic programming language for technical computing, has seen a significant rise in adoption for data science, machine learning, and scientific computing. This talk will dive into the world of static analysis for Julia code, a key aspect of ensuring code quality, maintainability, and performance. We will explore the available tools and packages in Julia for static analysis and discuss best practices for integrating static analysis into the development workflow. The goal is to provide the audience with a comprehensive understanding of the static analysis landscape in Julia, enhancing their ability to write clean, efficient, and error-free code. The talk covers following Julia packages
1. Lint.jl: Linting tool for detecting potential errors and code smells.
2. StaticLint.jl: Static code analysis tool emphasizing code structure understanding.
3. JuliaFormatter.jl: Code formatter for maintaining consistent coding styles.
4. CodeTracking.jl: Utility for tracking code definitions.

Talk Outline
1. Introduction [5 minutes]
2. Understanding Static Analysis [5 minutes]
3. Demonstration of Static Analysis Tools in Julia  [10 Minutes]
4.  Best Practices in Static Analysis [5 minutes]
5. Conclusion and Q&amp;A [5 minutes]</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7783BN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7783BN/feedback/</feedback_url>
            </event>
            <event guid='b3bc04e5-3c6f-58c5-8b73-7f8bd5b80c63' id='43484' code='UTGSDT'>
                <room>REPL (2, main stage)</room>
                <title>Julia Compiler Secrets - Static Analysis</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Effect analysis, exception types, escape analysis, effect preconditions, non-standard specialization, optimized generics - the compiler team has been busy. What is this all about?</abstract>
                <slug>juliacon2024-43484-julia-compiler-secrets-static-analysis</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46533'>Shuhei Kadowaki</person><person id='46532'>Keno Fischer</person>
                </persons>
                <language>en</language>
                <description>The foundational capability of the Julia compiler from its earliest versions has been a very sophisticated inter-procedural type inference. To a large extent, the capabilities and limitations of this analysis (including such concepts as &quot;type stability&quot;) determine which API designs are possible in Julia, and which are prohibitive from a performance standpoint.

Over the past few releases and ongoing in current work, the static analysis capabilities of the Julia compiler have been expanded significantly and are no longer restricted solely to type inference. Julia 1.8 introduced the effect system to track additional properties, such as nothrow-ness, effectfulness and other properties. In Julia 1.11, the compiler started making use of escape analysis information for optimization and gained the capability to track and optimize exception types in addition to ordinary return types. Further enhancements are under consideration, including safer replacements of the `@inbounds` and `--check-bounds` macros.

In this talk we will look at the current and near future static analysis capabilities of the Julia compiler and explain how the Julia compiler uses these to make your code faster. In addition, we will discuss how these capabilities can be re-used for improving code correctness and how the general infrastructure in `Core.Compiler` can be extended to custom analyses.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/UTGSDT/resources/Julia_Compiler_Secrets_-_Static_Analysis_SyAGvoQ.pdf">Slides (PDF)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/UTGSDT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UTGSDT/feedback/</feedback_url>
            </event>
            <event guid='0115f0ae-1043-5b04-979c-14656b6d6699' id='43727' code='B9PBBC'>
                <room>REPL (2, main stage)</room>
                <title>Julia in Air Gapped Environments</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Much of the tooling in Julia assumes the user has an internet connection.  How should one build and deploy Julia programs when this is not the case?  In this talk we&apos;ll discuss how to develop and deploy Julia applications in air-gapped environments, including methods for getting your Julia packages onto the air gapped computer, dealing with multiple users/projects, common pitfalls, and more.</abstract>
                <slug>juliacon2024-43727-julia-in-air-gapped-environments</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47403'>Avik Sengupta</person><person id='46771'>Deleted User</person>
                </persons>
                <language>en</language>
                <description>In air-gapped environments, you may have no or little control over important factors such as:

- The version of Julia installed.
- The available binary executables.
- The platform (e.g. Linux vs. Windows).

However, a common restriction is that text files (e.g. Julia code) are easier to move onto the air gapped computer than binaries.  This makes Julia a great candidate for applications since many packages are 100% Julia.  In this talk we&apos;ll discuss what options are available to you under different restrictions, including:

1. How to set up the air gapped environment for a single user.
2. How to set up the air gapped environment for multiple users.
3. How to build artifacts for the air gapped machine (even if the platform is different than your host machine).
4. What to do when including Pkg&apos;s artifacts isn&apos;t an option for you.

While we can&apos;t possibly address every security restriction of every air gapped environment, we&apos;ll make the bare minimum assumptions that 1) you are able to move directories of text files into the air gap, and 2) Julia is installed.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/B9PBBC/resources/Julia_in_Air_Gapped_Environments_l5SsAqP.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/B9PBBC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/B9PBBC/feedback/</feedback_url>
            </event>
            <event guid='f65011f0-670c-5f92-9ac6-da798e22c744' id='44411' code='GXWLAW'>
                <room>REPL (2, main stage)</room>
                <title>Interfaces.jl: base and package interface tests for your objects</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Interfaces.jl is an attempt to solve Julias lack of explicit interface declarations. It provides macros to define and implement interfaces concisely, and functions to test and check that they are implemented correctly.

Its subpackage BaseInterface.jl defines some common Base Julia interfaces using Interfaces.jl.

This talk will cover things learned writing and using the package, and hopefully inspire some discussion on the future of interfaces in Julia more broadly.</abstract>
                <slug>juliacon2024-44411-interfaces-jl-base-and-package-interface-tests-for-your-objects</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47364'>Rafael Schouten</person><person id='46362'>Guillaume Dalle</person>
                </persons>
                <language>en</language>
                <description>Julia lacks a built-in method for defining strict interfaces. Instead, we use an ad-hoc combination of inheritance, traits, documentation, interface tests, and usually, run-time errors when something is not implemented! 

At the same time we rely heavily on shared interfaces for high levels of package interop, and this combination makes better interfaces a common request from Julia developers. 

There are a number of efforts underway exploring how interfaces could work better in Julia. This is just one of those, and certainly not the most sophisticated one!

The general assumptions of Interfaces.jl are that:

- Interfaces can enforce both run-time and compile-time constraints, e.g. it is reasonable to insist that a method must return a positive valued `Int`
- Interfaces often need optional components, such as mutability in AbstractArrays
- Interfaces can be tested for package types only if given a specific object with that type
- Interfaces definitions should provide traits other packages can check
- Interface implementations should be verified during tests or package precompilation
- The easiest way to define an interface is to simply provide a named list of functions that test all the mandatory and optional ways an object should behave.

We get these properties by defining a simple NamedTuples of functions, and a mechanism to make some of those names optional in the `@interface` and `@implements` declarations.

By providing data during `@implements` declarations we can also programmatically test interfaces implementations in any object, package or multiple packages with a single command.

Slides: &lt;https://rafaqz.github.io/JuliaCon2024-Interfaces/&gt;
Video: &lt;https://www.youtube.com/live/Bo3k4oD1Avg?feature=shared&amp;t=27085&gt;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/rafaqz/Interfaces.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GXWLAW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GXWLAW/feedback/</feedback_url>
            </event>
            <event guid='fa0b5dc1-c783-5601-8187-5171bf57e9a7' id='44458' code='FUTLND'>
                <room>REPL (2, main stage)</room>
                <title>New Ways to Compile Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>We will explain new options for ahead-of-time compilation of julia programs that we have been developing. First, there is a new compiler driver `juliac` that provides a more traditional gcc-like command-line interface. Next, we are adding new compiler modes that allow generation of smaller binaries by opting-in to assumptions that hold for some important classes of programs.</abstract>
                <slug>juliacon2024-44458-new-ways-to-compile-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47429'>Jeff Bezanson</person><person id='46433'>Gabriel Baraldi</person>
                </persons>
                <language>en</language>
                <description>We will explain new options for ahead-of-time compilation of julia programs that we have been developing. First, there is a new compiler driver `juliac` that provides a more traditional gcc-like command-line interface. Next, we are adding new compiler modes that allow generation of smaller binaries by opting-in to assumptions that hold for some important classes of programs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/FUTLND/resources/New_Ways_To_Compile_Julia_HbHSwdg.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/FUTLND/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FUTLND/feedback/</feedback_url>
            </event>
            <event guid='aa79a633-4740-5099-94b7-0e67146c4fb7' id='44479' code='MQXHT9'>
                <room>REPL (2, main stage)</room>
                <title>GreenSpeed: Sustainable Chemical Synthesis Right from the Start</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>&#8220;GreenSpeed&#8221; leverages Julia and the GenieFramework to calculate sustainability KPIs for the synthesis of complex organic chemicals. We cover the display of chemical reaction trees, their visualization in a Sankey Diagram and editable trees and tables to allow for the manual correction of incomplete or wrong datasets. We also show an admin panel for debugging, file modification and application of hotfixes.</abstract>
                <slug>juliacon2024-44479-greenspeed-sustainable-chemical-synthesis-right-from-the-start</slug>
                <track>General</track>
                
                <persons>
                    <person id='47450'>Helmut H&#228;nsel</person><person id='47454'>Sara Wirsing</person>
                </persons>
                <language>en</language>
                <description>We will showcase &quot;GreenSpeed&quot;, an innovative industrial application developed using Julia and the GenieFramework. GreenSpeed enables Merck to calculate sustainability Key Performance Indicators (KPIs) for complex organic chemical synthesis, facilitating informed decision-making and driving positive environmental change.

Attendees will learn how GreenSpeed integrates electronic lab journals, allowing users to assess the environmental impact of different substances and their reactions. The application employs dynamic tree structures and visualization techniques, such as the Sankey Diagram, to illustrate the flow of materials during synthesis processes as well as the completeness of the underlying data.

By utilizing Julia&apos;s computational power, GreenSpeed performs complex calculations and generates insightful visualizations, empowering businesses to make informed decisions about synthesis routes and optimize resource utilization. The application also supports dynamic selection fields, editable trees, and editable tables to allow for the manual correction of incomplete or wrong datasets. GreenSpeed&apos;s admin panel will be highlighted, providing system administrators with debugging tools, file modification capabilities, and the ability to apply hotfixes to ensure smooth operation and continuous improvement. The talk will present real-world examples, showcasing how Merck has utilized GreenSpeed to assess sustainability, identify improvement areas, and enhance production practices.

In summary, the talk will offer attendees a comprehensive overview of GreenSpeed&apos;s capabilities in calculating sustainability KPIs for complex organic chemical synthesis. The application utilizes Julia and the GenieFramework to enable powerful and flexible web-based sustainability assessment, empowering businesses to make informed decisions, optimize resource utilization, and ensure a greener future.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MQXHT9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MQXHT9/feedback/</feedback_url>
            </event>
            <event guid='6de14794-899f-5df2-a8a1-7b4befddb4dd' id='45606' code='NT7MUE'>
                <room>REPL (2, main stage)</room>
                <title>Sonic Pi - Live Coding as a tool for next-gen education.</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-11T17:10:00+02:00</date>
                <start>17:10</start>
                <duration>01:00</duration>
                <abstract>Sonic Pi is a free code-based music creation and performance tool that targets both education and professional musicians. It is possible for beginners to code fresh beats, driving bass lines and shimmering synth riffs. All this whilst teaching core computer science concepts such as sequencing, functions, variables, loops, data structures and algorithms.

This talk will briefly introduce Sonic Pi before taking a deep technical nose-dive into some of the interesting requirements of live coding.</abstract>
                <slug>juliacon2024-45606-sonic-pi-live-coding-as-a-tool-for-next-gen-education</slug>
                <track>General</track>
                
                <persons>
                    <person id='51197'>Sam Aaron</person>
                </persons>
                <language>en</language>
                <description>Sonic Pi is a free code-based music creation and performance tool that targets both education and professional musicians. It is possible for beginners to code fresh beats, driving bass lines and shimmering synth riffs. All this whilst teaching core computer science concepts such as sequencing, functions, variables, loops, data structures and algorithms.

This talk will briefly introduce Sonic Pi before taking a deep technical nose-dive into some of the interesting requirements of live coding systems. We&apos;ll touch on concurrency, distributed programming, temporal logic, deterministic randomisation, event streams, hot swapping code and domain specific languages.

Get ready for some serious live coded beats and a window into an exciting future of computing education.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NT7MUE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NT7MUE/feedback/</feedback_url>
            </event>
            <event guid='df8473a1-290d-5cc8-b240-081e6a8e8dfd' id='53122' code='KCGZMP'>
                <room>REPL (2, main stage)</room>
                <title>Closing Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-11T18:10:00+02:00</date>
                <start>18:10</start>
                <duration>00:15</duration>
                <abstract>Closing the second day of JuliaCon Global 2024 and PyData Eindhoven 2024.</abstract>
                <slug>juliacon2024-53122-closing-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='55322'>Rob de Wit</person>
                </persons>
                <language>en</language>
                <description>Closing the second day of JuliaCon Global 2024 and PyData Eindhoven 2024 with organizing committee member Rob de Wit.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KCGZMP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KCGZMP/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='If (1.1)' guid='e430f2f2-8d07-5f24-97d4-9f303ac45cce'>
            <event guid='272fa938-f424-5376-9a3e-b06ba785cfb6' id='52461' code='SVFQT9'>
                <room>If (1.1)</room>
                <title>Explainable AI in the LIME-light</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:30</duration>
                <abstract>LIME, a model-agnostic AI framework, illuminates the path to local explainability, primarily for classification models. Delving into the theory underpinning LIME, we explore diverse use cases and its adaptability across various scenarios. Through practical examples, we showcase the breadth of applications for LIME. By the presentation&apos;s conclusion, you&apos;ll have gained insights into leveraging LIME to clarify individual prediction logic, leading to more accessible explanations.</abstract>
                <slug>juliacon2024-52461-explainable-ai-in-the-lime-light</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Although AI toolkits have simplified model implementation, understanding and interpreting these models remain challenging. With regulatory frameworks like the EU AI Act emphasizing explainability, the need for tools like LIME is paramount.

This presentation will provide an in-depth overview of LIME (Local Interpretable Model-agnostic Explanations), highlighting its utility in facilitating model comprehension. No prior expertise is assumed. Beginning with an explanation of LIME&apos;s theory and its practical implementation in Python, we&apos;ll then delve into diverse classification scenarios to showcase LIME&apos;s effectiveness. Additionally, we&apos;ll explore how the original LIME framework has been extended to handle time series data.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SVFQT9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SVFQT9/feedback/</feedback_url>
            </event>
            <event guid='532a183f-c443-54e8-b79c-7c8dbe7c37ea' id='52469' code='7ZY9VD'>
                <room>If (1.1)</room>
                <title>Risks and Mitigations for a Safe and Responsible AI</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>00:30</duration>
                <abstract>This talk will explain the multifaceted risks associated with building custom AI solutions, both from Responsible AI and Safety perspectives, and explore ways to mitigate them, to ensure that as AI professionals we create non-harmful AI systems.</abstract>
                <slug>juliacon2024-52469-risks-and-mitigations-for-a-safe-and-responsible-ai</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>The rapid advancement of AI technologies, especially in the LLM space, is opening countless opportunities across all industries to apply in their daily business. However, it also introduces significant risks that could impact their users and broader society, from ethical and safety perspectives.

In this talk we will delve into various aspects to consider when building custom AI solutions to ensure they are not harmful in any way. We&apos;ll explain the types of risks to assess from both Responsible AI and Safety perspectives, and what mitigations can be implemented to address them. We&apos;ll discuss broad aspects that apply to all AI systems, such as fairness and inclusiveness, as well as risks specific to Large Language Models, like prompt injection attacks and hallucinations.
 
By the end of this talk, participants will have a clear understanding of AI risks, and a practical framework for evaluating and implementing responsible AI practices when building AI-based applications.
 
The talk is designed for anyone involved in the design and development of AI systems, from AI developers and data scientists to project managers. No technical knowledge is required, but a prior understanding of the fundamentals of AI and LLMs is assumed.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7ZY9VD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7ZY9VD/feedback/</feedback_url>
            </event>
            <event guid='9cca7113-0d33-54b6-b8a0-22a7adc881dc' id='52457' code='B7NCK9'>
                <room>If (1.1)</room>
                <title>Predicting the Spring Classics of cycling with my first NN</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Last year I attended PyData Eindhoven for the first time. I got inspired and now I&#8217;m back to present my first neural network, a network that was trained to predict the Spring Classics of cycling! With this neural network, I&#8217;m attempting to beat my friends, and myself, in a well-known fantasy cycling game.</abstract>
                <slug>juliacon2024-52457-predicting-the-spring-classics-of-cycling-with-my-first-nn</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Last year I attended PyData Eindhoven for the first time. I got inspired and now I&#8217;m back to present my first neural network, a network that was trained to predict the Spring Classics of cycling! With this neural network, I&#8217;m attempting to beat my friends, and myself, in a well-known fantasy cycling game.

In this talk, I will elaborate on the process of building a model from scratch. This will include data collection, model training and finetuning, and of course a discussion of the predicted results. The predictions will also be compared to an existing cycling prediction platform that I use as benchmark. Lastly, I&#8217;ll try to provide some insights into the model using SHAP values.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/B7NCK9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/B7NCK9/feedback/</feedback_url>
            </event>
            <event guid='1fa3e7f6-223e-5b97-8006-deaa896d0c4d' id='52464' code='UFHLEP'>
                <room>If (1.1)</room>
                <title>Computer vision at the Dutch Tennis Federation</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Through single-camera tennis match footage, via a YOLO-driven computer vision system, and culminating in actionable insights for strength and conditioning coaches, the Dutch Tennis Federation offers a pathway for creating tennis data and insights. In our presentation, we will delve into technical specifications and algorithms of our system, navigate through the challenges of working with tennis video footage, and elaborate on our approach to actively engage coaches in our co-creation approach.</abstract>
                <slug>juliacon2024-52464-computer-vision-at-the-dutch-tennis-federation</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Tennis is seen within the community more as a skill sport than a physical sport. In this way, tennis is an exception compared to other ball sports, in which there is a primary focus on physical data (e.g., distance covered or time in specific speed zones). The primary use of data by now is tactical analysis, scouting your opponent, and finding specific tendencies. Currently, this is done by manually annotating events in game videos for further analysis, which can take up to 5 hours per match. One of the bottlenecks of this process is finding the start of a rally; the effective playing time is actually just 20-30% on clay courts and 10-15% on fast courts. This means that a 5-hour match would have just 30 minutes of playing time that needs to be annotated. Hence, automatically finding the start point of a rally and cutting videos into shorter sequences would tremendously speed up the annotation process and would allow scouting of more players and matches. 

In turn, we had two goals in the project. First, to create a solution to optimize the annotation process by providing videos when the ball is in play. The second goal was to provide tennis coaches and players with physical data and to stimulate the use of this type of data (user buy-in). For both of these goals, we faced specific challenges we needed to overcome. Event recognition has been achieved in other sports as well as in tennis using computer vision approaches, especially video tracking (trajectories and coordinates of the players). In tennis, the Hawk-Eye system is used in big tournaments to provide this information. By using 10 synchronized cameras, the system provides player and ball trajectories that enable event recognition and the extraction of physical variables. However, due to the costs of using this system and the complexity of installing it, using it in less prestigious tournaments or for training monitoring is not an option. To overcome this challenge, we created a one-camera computer vision system that allows for player tracking and simple event recognition. 

As mentioned earlier, the second challenge of this project is the buy-in by coaches, athletes, and the medical team to physical parameters for athlete monitoring and training optimization. To overcome this problem, we opted for an educational and co-creation approach. This entails, in an initial step, a presentation on the usage of physical data in other sports and their benefits. In a second step, we performed semi-structured interviews with potential end-users (coaches, athletes, medical staff, and performance analysts). Based on these interactive interviews, important variables for the end-users were defined. In addition, potential forms of data presentation and visualizations were discussed in order to create a dashboard for the end-users. In doing so, we improved the understanding of the end-users as well as the commitment to the project. 

In this talk, we will provide a summary of the general approach of the conducted interviews and how this resulted in an interactive dashboard for coaches, athletes, and analysts. In addition, we provide an overview of the pipeline of the computer vision approach. While using an &#8220;off-the-shelf&#8221; YOLO approach, several processing steps are necessary. This includes several technical challenges like player and court recognition as well as data filtering. We will also provide an example of how we enriched our pipeline with audio data to facilitate event recognition. All in all, we hope to provide an exemplary approach on how to conduct a data science project in a sports environment in which the conceptual barriers between product designer and end-user are often hard to overcome.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/UFHLEP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UFHLEP/feedback/</feedback_url>
            </event>
            <event guid='4da5342a-5578-5eb1-845a-c89bc061b97e' id='52459' code='SHWFR7'>
                <room>If (1.1)</room>
                <title>Enhancing Event Analysis at Scale: Leveraging Tracking Data</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:45:00+02:00</date>
                <start>14:45</start>
                <duration>00:30</duration>
                <abstract>Learn how to automate the generation of contextual metrics from tracking data to enrich event analysis, handling the influx of games arriving daily in an efficient way by scaling-out the entire architecture.</abstract>
                <slug>juliacon2024-52459-enhancing-event-analysis-at-scale-leveraging-tracking-data</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>In the dynamic landscape of sports analytics, the integration of tracking data has opened new frontiers for in-depth event analysis. Yet, the use of this data remains a bottleneck, particularly when dealing with a large volume of games. Indeed, such computation is either too expensive or too long. The focus of the presentation will be on automating the generation of these contextual metrics at scale, and their usage by professionals and decision-makers.
The presentation will showcase an architecture and an automated pipeline designed to handle the influx of games. Leveraging Python and cloud computing services such as message queues, we efficiently manage incoming game data by scaling the infrastructure based on the workload, ensuring optimal performance during peak period while minimizing costs during quieter times. The presentation will strike a balance between technical depth and practical application. Attendees will gain insights into the architecture required to efficiently process hundreds of games weekly, while accommodating the thousands already present in the database. The advantage granted by this method will be quantified in terms of time and resources to inform data scientists and data engineers the efficiency they could reach.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SHWFR7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SHWFR7/feedback/</feedback_url>
            </event>
            <event guid='56247870-1bcf-5d29-8986-6fb920a71585' id='52465' code='MEEMYT'>
                <room>If (1.1)</room>
                <title>How I lost 1000&#8364; betting on CS:GO with machine learning</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:45:00+02:00</date>
                <start>15:45</start>
                <duration>00:30</duration>
                <abstract>People have been using machine learning for sports betting for decades. Logistic regression applied to horse racing made someone a multi-millionaire in the 80s. While fun, betting is a losing proposition for most. The house always wins, right?</abstract>
                <slug>juliacon2024-52465-how-i-lost-1000-betting-on-cs-go-with-machine-learning</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>With a friend, I thought we could beat the house in e-sports by leveraging modern ML tools like LightGBM. E-sports betting is less sophisticated than football or horse racing i.e. the market is less efficient. There is a lot of online data and unknown teams. It was a space ripe for money-making, or so we thought.

First, I will explain the theory behind e-sports betting with ML: what is an edge, financial decision-making, the expected value and decision rule for one bet, multiple bets with the Kelly criterion, probability calibration and the winner&apos;s curse.

Then, I will explain how we built a web scraper to extract features, developed a probabilistic classifier using LightGBM, defined betting rules using the Kelly criterion, backtested it with a positive ROI, and then lost actual money, with many priceless lessons coming out of it.

This presentation goes in-depth on how to use ML for e-sports betting and the pitfalls one might fall in. More broadly, I try to connect ML with financial decision-making, which can be applied in other domains too (credit, fraud, marketing), targeting data scientists and ML practitioners who are interested in financial applications.

Financial decision-making is not just about being right (predictive modelling) but also about acting rightly (betting/trading strategy). To act correctly, one must understand concepts such as an edge, expected value/profits, probability calibration, winner&apos;s curse (selection bias), and so on. More importantly, any trading or betting strategy needs to be thoroughly validated with backtests and paper-trades and the risk and profitability quantified. My aim is to cover some of those important foundational topics, while providing pointers for further studies.

The presentation is divided into two parts: 

1. Foundations of ML applied to betting (15 min)
   * What is your edge?
   * Financial decision-making with ML
   * One bet: Expected profits and decision rule
   * Multiple bets: The Kelly criterion
   * Probability calibration
   * Winner&#8217;s curse
2. CS:GO betting (10 min)
   * Data scraping
   * Feature engineering
   * TrueSkill (with a side note on inferential vs predictive models)
   * Modelling
   * Evaluation
   * Backtesting
   * Why I lost 1000 euros

That is, I will present both the theory and practice, using my own failure as an illustrative example for the lessons shown. The presentation will have two companion blog posts with reproducible Python code.

This presentation requires mid-level data science knowledge (e.g. how to train a gradient-boosted trees model) but only beginner Python and finance to follow.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MEEMYT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MEEMYT/feedback/</feedback_url>
            </event>
            <event guid='a70a22e2-ff01-5f81-8bf9-449710e4b773' id='52468' code='ZAQGTJ'>
                <room>If (1.1)</room>
                <title>&#127795; The taller the tree, the harder the fall.</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>A case study of how we use Deep Learning based photogrammetry to calculate the height of trees from very high resolution satellite imagery. We show the substantial improvement achieved by switching from classical photogrammetric techniques to a deep learning based model (implemented in PyTorch), and the challenges we had to overcome to make this solution work.</abstract>
                <slug>juliacon2024-52468-the-taller-the-tree-the-harder-the-fall</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>The risk that a tree poses to line infrastructure (such as power lines) is determined by several factors, chief among them the height of the particular tree. The increasing availability of very high resolution satellite imagery makes it possible to use photogrammetric techniques to extract height information from a set of stereo satellite images. By using satellite imagery we can achieve a scale not possible by manual measurement. 
We found that classical techniques perform poorly on vegetation, and were handily outperformed by deep learning based techniques implemented in PyTorch. This improvement was not trivial to achieve however, as creating labelled data in sufficient quantity was quite challenging. By increasing the quality of our height predictions we were able to more accurately calculate risk for our customers.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZAQGTJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZAQGTJ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Else (1.3)' guid='4bf3eb99-fea3-5d57-a632-0b5d9a5a54c2'>
            <event guid='1833ff02-ac53-586b-80cb-e78284896155' id='52466' code='TXH9RG'>
                <room>Else (1.3)</room>
                <title>BERTopic to accelerate Ukrainian aid by the Red Cross</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:30</duration>
                <abstract>By means of Topic Modeling, discussed topics can be subtracted from a set of documents. BERTopic is a way of Topic Modeling that uses Large Language Models. A high-level overview of how BERTopic works will be presented, together with its evaluation and the application of it on a use case of the Netherlands Red Cross. In this use case, BERTopic supports in getting insights into the needs of Ukrainian refugees as expressed through social media.</abstract>
                <slug>juliacon2024-52466-bertopic-to-accelerate-ukrainian-aid-by-the-red-cross</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>510, the Data &amp; Digital initiative of the Netherlands Red Cross, is performing Social Media Listening on Telegram channels of Ukrainian refugees, to obtain insights in their needs. As a result, the Red Cross can direct its aid more purposefully. Obtaining such insights can be a time-intensive task, while in case of an emergency, one would like to initialize aid as quickly as possible. BERTopic has shown to be a powerful tool in quickly obtaining an overview of the discussion on social media. 

In this presentation, a high-level explanation of BERTopic will be provided, which is a LLM-based method to obtain topics from a set of documents and categorize them accordingly. Other than basic machine learning knowledge, no further background knowledge is required. Rather than explaining how an LLM works, we will focus on what its task in BERTopic is. Next, we will discuss the evaluation of BERTopic, which is a challenging task, as it is an unsupervised method. Three different metrics are proposed, including an innovative approach that creates a test set with GPT. Finally, the application and results of BERTopic to the described use case will be discussed. This will show the practicality of BERTopic and hopefully inspire for other applications. 

Time breakdown:
- Introduction to the Red Cross use case: 5 min
- BERTopic: 10 min
- Evaluation: 5 min
- Application and results: 5 min
- Q&amp;A: 5 min</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TXH9RG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TXH9RG/feedback/</feedback_url>
            </event>
            <event guid='896f96ef-d2e1-5bf1-880f-5b71b2f5253e' id='52460' code='CC9TZZ'>
                <room>Else (1.3)</room>
                <title>The Levels of RAG &#129436;</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>00:30</duration>
                <abstract>LLM&apos;s can be supercharged using a technique called RAG, allowing us to overcome dealbreaker problems like hallucinations or no access to internal data. RAG is gaining more industry momentum and is becoming rapidly more mature both in the open-source world and at major Cloud vendors. But what can we expect from RAG? What is the current state of the tech in the industry? What use-cases work well and which are more challenging? Let&apos;s find out together!</abstract>
                <slug>juliacon2024-52460-the-levels-of-rag</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Retrieval Augmented Generation (RAG) is a popular technique to combine retrieval methods like vector search together with Large Language Models (LLM&apos;s). This gives us several advantages like retrieving extra information based on a user search query: allowing us to quote and cite LLM-generated answers. Because the underlying techniques are very broadly applicable, many types of data can be used to build up a RAG system, like textual data, tables, graphs or even images.

In this talk, we will deep dive into this popular emerging technique. Together, we will learn about: what the current state of RAG is, what tech is available to support you and what you expect to work well and what is still very challenging. 

Join us if you &#129781;:
- Are interested in GenAI / LLM&apos;s and RAG
- Want to know more about the current state of RAG 
- Would like to know when you can most successfully apply RAG

### Contents of the talk &#128204;
1. [2 min] Intro
2. [3 min] Why RAG?
    1. The case for RAG
    2. The RAG advantage
    3. &#8230; so how-to RAG?
3. [10 min] Basic RAG: Which ingredients make up a successful RAG system?
    1. Data ingestion (OCR, PDF reading)
    2. Chunking
    3. Vector search
    4. Keyword search
    5. Mapping these components to the tech landscape
    6. &#128165; Encountering difficulties 
4. [10 min] Advanced RAG: Going multimodal
    1. Tabular data
    2. Graphs
    3. Images
5. [4 min] Summing things up
    1. The levels of RAG: from basic to advanced
    2. GenAI community &#129730;
    3. Concluding remarks
6. [1 min] End

[30 minutes total]


### &#10084;&#65039; Open Source Software
RAG and LLM&#8217;s are presented in a cloud-agnostic way. Many of the software libraries mentioned are open source. There is no agenda for representing any major cloud.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CC9TZZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CC9TZZ/feedback/</feedback_url>
            </event>
            <event guid='9ae6421f-251c-54f6-90b0-46e456cd3420' id='52456' code='B8ACUX'>
                <room>Else (1.3)</room>
                <title>Scikit-Learn can do THAT?!</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Many of us know scikit-learn for it&apos;s ability to construct pipelines that can do .fit().predict(). It&apos;s an amazing feature for sure. But once you dive into the codebase ... you realise that there is just so much more. 

This talk will be an attempt at demonstrating some extra features in scikit-learn, and it&apos;s ecosystem, that are less common but deserve to be in the spotlight. 

In particular I hope to discuss these things that scikit-learn can do:

- sparse datasets and models
- larger than mem</abstract>
                <slug>juliacon2024-52456-scikit-learn-can-do-that</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>There may be an opportunity to live code some of these examples, but if live coding is not possible it&apos;d be preferable to know this ahead of time.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/B8ACUX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/B8ACUX/feedback/</feedback_url>
            </event>
            <event guid='45cfeea8-83ae-5f6e-baea-7c5583bb41c8' id='52454' code='TYBKXE'>
                <room>Else (1.3)</room>
                <title>Evaluating LLM Frameworks</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Large Language Models are everywhere these days. But how can you objectively evaluate whether a model or a prompt is performing properly? Let&apos;s dive into the world of LLM evaluation frameworks!</abstract>
                <slug>juliacon2024-52454-evaluating-llm-frameworks</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>At CM.com we have released a new GenAI product (in 2023, built in Python) which is currently used by over 50 clients in various countries. GenAI is a chatbot that leverages the power of LLMs, while protecting against their common pitfalls such as incorrectness &amp; inappropriateness, by using a Retrieval Augmented Generation framework (RAG).

As newer &amp; better models rapidly arise, and our clients continue to provide feedback on the product, our own product development cannot lag behind. But how do we know whether changing from e.g. ChatGPT to Gemini or Llama improves the replies for all conversations? And how can you do prompt optimization if you don&apos;t know what you&apos;re optimizing against?  To help us maintain our current chatbot quality while investigating other models/prompts, we have developed an evaluation framework in Python that can objectively evaluate several scenarios across a various of metrics. 

During these 30 minutes, I&apos;ll explain the principle behind RAG, highlight the huge development work being done in this field across the globe, give examples of several evaluation measures, and finally explain how we use these to move forward with our product. The talk is most interesting for Data Scientists and ML/AI/Prompt Engineers, but can be followed by anyone with some background knowledge on LLMs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TYBKXE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TYBKXE/feedback/</feedback_url>
            </event>
            <event guid='2170ebcb-7ce2-5525-a888-a3be1359735e' id='52463' code='LKTMNN'>
                <room>Else (1.3)</room>
                <title>Maximizing marketplace experimentation</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:45:00+02:00</date>
                <start>14:45</start>
                <duration>00:30</duration>
                <abstract>Conventional A/B testing often falls short in industries such as airlines, ride-sharing, and delivery services, where challenges like small samples and subtle effects complicate testing new features. Inspired by its significant impact in leading companies like Uber, Lyft, and Doordash, we introduce the switchback design as a practical alternative to conventional A/B testing.</abstract>
                <slug>juliacon2024-52463-maximizing-marketplace-experimentation</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>By addressing small sample size limitations and the need to detect subtle effects quickly, this approach boosts statistical power while reducing variability and interference. We guide the audience through the challenges of marketplace experimentation and implementing this approach, period length optimization and switch frequency using a case study from the airline industry.



In this talk, we introduce switchback design, a method that addresses key challenges in marketplace experimentation faced by sectors like airlines and ride-sharing. It addresses traditional A/B testing&apos;s limitations on small samples and subtle effects, highlighted by successes in companies like Uber, Lyft, and Doordash. This approach, crucial for accurate effect measurement, aims to boost decision-making and operational optimization, supported by a practical case study.

Talk outline:
- Introduction (5 mins): Quick intro to our expertise and the topic&apos;s relevance.
- Challenges (5 mins): Overview of marketplace experimentation challenges.
- Switchback Design (5 mins): Basics of switchback design vs. traditional A/B testing.
- Case Study (10 mins): Real-world application in the airline industry, showcasing benefits and drawbacks.
- Key Takeaways (5 mins): Summary of our talk.
- Q&amp;A (10 mins): Open discussion for clarifications and further insights.

The intended audience: Targeted at data scientists, data analysts, product managers, and anyone interested in data-driven decision-making. Ideal for those curious about experimentation and causal inference in sectors like tech and e-commerce.

No background needed: Open to all levels, no prior knowledge needed. Concepts will be explained simply, focusing on practical insights without complex math.

The takeaway for the audience: The audience will understand the effectiveness of switchback design in overcoming marketplace experimentation hurdles, such as dealing with small samples and subtle effects. They&apos;ll learn from the success stories of top firms, understand practical steps for executing switchback experiments, and recognize its advantages over conventional A/B testing for more informed decisions and improved results.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/LKTMNN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LKTMNN/feedback/</feedback_url>
            </event>
            <event guid='7e9a8cb0-af11-5852-8fb1-559fd57c26f6' id='52462' code='NYZ8C8'>
                <room>Else (1.3)</room>
                <title>Cloud? No Thanks! I&#8217;m Gonna Run GenAI on My AI PC</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:45:00+02:00</date>
                <start>15:45</start>
                <duration>00:30</duration>
                <abstract>In this speech, we want to introduce an AI PC, a single machine that consists of a CPU, GPU, and NPU (Neural Processing Unit) and can run GenAI in seconds, not hours. Besides the hardware, we will also show the OpenVINO Toolkit, a software solution that helps squeeze as much as possible out of that PC. Join our talk and see for yourself the AI PC is good for both generative and conventional AI models. All presented demos are open source and available on our GitHub.</abstract>
                <slug>juliacon2024-52462-cloud-no-thanks-i-m-gonna-run-genai-on-my-ai-pc</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>In this speech, we want to introduce an AI PC, a single machine capable of hosting diverse AI applications that can run GenAI in seconds, not hours. Such an approach for local AI allows us to overcome the usual issues associated with Cloud AI, such as the risk of data privacy breaches, high latency, and dependency on a connection to the cloud.

Besides the AI PC, we will also showcase the OpenVINO Toolkit, which is an open-source toolkit for optimizing and deploying deep learning models. It helps to maximize the AI performance of the PC. Join our talk and see for yourself how the AI PC is well-suited for both generative and conventional AI models. All the presented demos, such as background blurring and image generation using a latent consistency model, are open-source and available on our GitHub.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NYZ8C8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NYZ8C8/feedback/</feedback_url>
            </event>
            <event guid='38a39003-a989-5a20-b170-e26aa8892d52' id='52458' code='QZZQLF'>
                <room>Else (1.3)</room>
                <title>Causal Forecasting: How to disentangle causal effects</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>A lot of industry-available Machine Learning solutions for causal forecasting have a very particular blind spot: unobserved confounders. We will present an approach that allows you to combine state-of-the-art Machine Learning approaches with advanced Econometrics techniques to get the better of both worlds: accurate causal inference and good forecasting accuracy.</abstract>
                <slug>juliacon2024-52458-causal-forecasting-how-to-disentangle-causal-effects</slug>
                <track>PyData</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                <description>Causal Forecasting is a very hot topic in the industry with many applications ranging from marketing spending to pricing. Disentangling causal effects from spurious correlations plays a key role when forecasts are used for decision making, such as in the case of pricing. Solutions available in the industry typically rely on Machine Learning methods that use techniques like DoubleML, Transformers, LSTM, and boosted tree algorithms. A common shortcoming of such solutions is that they do not account for the existence of unobserved confounders, such as world events, or other hard-to-measure effects that can bias the measurement of causal effects. We showcase a solution that was developed over the last 3 years that addresses these challenges by combining advanced Econometrics methods with  ML techniques. The case-study will focus on the example of retail pricing, but the solution is broadly applicable and it has been tested in different settings, including airline pricing.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QZZQLF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QZZQLF/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Struct (1.4)' guid='6307780f-c982-5d06-a25e-7461874db936'>
            <event guid='33d66970-de88-554d-b49c-7a9fa985fe07' id='43881' code='8JTLHZ'>
                <room>Struct (1.4)</room>
                <title>Needs and Next Steps for Julia&apos;s SciML</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>01:00</duration>
                <abstract>What do you need? Come to this BoF to discuss how you are using SciML today, what issues you are running into, and what needs to be done for improving the future of Julia&apos;s SciML stack!</abstract>
                <slug>juliacon2024-43881-needs-and-next-steps-for-julia-s-sciml</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46215'>Chris Rackauckas</person>
                </persons>
                <language>en</language>
                <description>What are your biggest issues? Scaling in Optimization.jl? More tutorials in ModelingToolkitStandardLibrary.jl? It&apos;s always hard for the developers to know the general prioritization sentiment of the community, and thus this BoF is made to get a sample from users to better understand the needs of the community.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8JTLHZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8JTLHZ/feedback/</feedback_url>
            </event>
            <event guid='fd002382-0d71-51b1-8260-7761a3caaaaf' id='43910' code='BXJWED'>
                <room>Struct (1.4)</room>
                <title>BinaryBuilder BoF</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>01:00</duration>
                <abstract>Come to this BoF to discuss the recent massive changes in BinaryBuilder and to discuss further development of ecosystem-wide improvements.  Applicable topics include: improvements to BinaryBuilder proper, improvements to Yggdrasil and surrounding infrastructure, improvements to JLLs, applications of the new modularized BinaryBuilder ecosystem to new projects, and more!</abstract>
                <slug>juliacon2024-43910-binarybuilder-bof</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47396'>Valentin Churavy</person><person id='45475'>Elliot Saba</person><person id='46913'>Mos&#232; Giordano</person>
                </persons>
                <language>en</language>
                <description>[BinaryBuilder](https://binarybuilder.org/) is a fundamental piece of the infrastructure underpinning Julia: it&apos;s used to compile most of the binary libraries used throughout the ecosystem, including those used by Julia itself.

BinaryBuilder has undergone significant changes over the last year, see the talk &quot;Binary Builder 2: Return of the Compilers&quot; for a guided tour of many of the improvements and refactorings.  In particular, the structure of BinaryBuilder has been split apart into multiple separate sub-packages that can each be used in isolation.  This allows, for instance, a package that needs to compile C code to make use of the BB compiler toolchain without actually using all of BB itself, or a package that needs to inspect binaries for relocatability to do so in isolation.

This BoF is intended to facilitate discussion between developers and users of the BinaryBuilder ecosystem to better understand these changes and how they can impact the ecosystem at large.  Topics of discussion could include:
- Improvements to BinaryBuilder proper
- Improvements to Yggdrasil and surrounding infrastructure
- Improvements to JLLs
- Applications of the new modularized BB ecosystem to new projects</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaPackaging/BinaryBuilder2.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BXJWED/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BXJWED/feedback/</feedback_url>
            </event>
            <event guid='c8eae919-b362-5c1a-b6a1-aa393e2ae17f' id='44414' code='V99NUF'>
                <room>Struct (1.4)</room>
                <title>Rust and Julia - Birds of a Feather</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>01:00</duration>
                <abstract>Rust keeps gaining ground across the software world! How can we best learn and exchange algorithms and best practices?</abstract>
                <slug>juliacon2024-44414-rust-and-julia-birds-of-a-feather</slug>
                <track>General</track>
                
                <persons>
                    <person id='47281'>Miguel Raz Guzm&#225;n Macedo</person>
                </persons>
                <language>en</language>
                <description>Last year&apos;s Rust BoF was a smash success, with a full room and dozens of participants. We should step up and reach out to the burgeoning Rust audience in NL and across the globe by making decisions about what Julia can learn from Rust and vice versa.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/V99NUF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/V99NUF/feedback/</feedback_url>
            </event>
            <event guid='1bab9779-77ce-508b-a755-94ff750f4568' id='44434' code='MWS3FD'>
                <room>Struct (1.4)</room>
                <title>JuliaGPU BoF</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-11T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>01:00</duration>
                <abstract>The JuliaGPU community welcomes both long-standing contributors and newcomers to a birth-of-the feather event on the state of the JuliaGPU ecosystem.</abstract>
                <slug>juliacon2024-44434-juliagpu-bof</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='47396'>Valentin Churavy</person><person id='47481'>Tim Besard</person><person id='47406'>Katharine Hyatt</person>
                </persons>
                <language>en</language>
                <description>The JuliaGPU ecosystem enables Julia to run on a wide variety of accelerators ranging from traditional GPUs like NVIDIA, Intel or AMD to more interesting ones like IPUs. The meeting gives users and developers alike the opportunity to exchange ideas.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MWS3FD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MWS3FD/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Method (1.5)' guid='b0079e1b-0c12-5b12-b0b5-0dc1f3cd563e'>
            <event guid='18967fc6-cfde-5c7a-a3cb-7c7190fa0491' id='44371' code='JDPTKN'>
                <room>Method (1.5)</room>
                <title>Herb.jl: Teaching programs how to program with program synthesis</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:10</duration>
                <abstract>Wouldn&#8217;t it be great if Julia would program itself? You simply tell it what you want, Julia magic happens, and you have your program. While this is still a farfetched dream, in this talk we will introduce you to Herb.jl, a Julia library that gets us a step closer to our big goal.</abstract>
                <slug>juliacon2024-44371-herb-jl-teaching-programs-how-to-program-with-program-synthesis</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/JDPTKN/herb_blue_white_background_TPRbo5W.png</logo>
                <persons>
                    <person id='47357'>Tilman Hinnerichs</person>
                </persons>
                <language>en</language>
                <description>`Herb.jl` is a library for program synthesis: the task of automatically generating (not just)
programs from a given specification. 

`Herb.jl`&#8217;s main goal is therefore two-fold. First, it aims to provide a missing toolbox for developing new program synthesizers, which is currently missing in the community. Second, it aims to unify many different flavours of program synthesis under a joint framework, making existing program synthesizers easy to use on new problems.

In this talk we show how Julia facilitates the library development on one hand, but also algorithm speed and composability of  the synthesis procedure.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/JDPTKN/resources/presentation_template_3yMEASF.pdf">Presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/JDPTKN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JDPTKN/feedback/</feedback_url>
            </event>
            <event guid='a7086c20-3095-50bf-9dd0-e10f83f1bac0' id='42841' code='XBSX87'>
                <room>Method (1.5)</room>
                <title>FMIExchange.jl: Foreign Models Through a Familiar Interface</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>The Functional Mock-Up Interface is a tool-independent standard for implementing and describing models given by differential algebraic equations with events. FMIExchange.jl integrates such models with DifferentialEquations.jl, thereby retaining the full capabilities of that package. The resulting functionality forms a powerful extension to that of the existing FMI.jl package, allowing the user to simulate complex systems with multiple native and FMI-compliant components.</abstract>
                <slug>juliacon2024-42841-fmiexchange-jl-foreign-models-through-a-familiar-interface</slug>
                <track>General</track>
                
                <persons>
                    <person id='45967'>Lucas Bex</person>
                </persons>
                <language>en</language>
                <description>The Functional Mock-Up Interface (FMI) standard allows to exchange models between different software programs. To simulate FMI-compliant models (functional mock-up units, FMUs), Julia currently relies on the FMI.jl package and its subpackages, but these packages do not cover all use cases: FMI.jl does not allow to simulate multiple FMUs simultaneously, nor to cosimulate FMUs and native Julia differential equations. FMI.jl implements basic input/output functionality to interact with FMUs, but the interface is difficult to use when FMU inputs change at different timescales. More advanced functionality requires directly interacting with FMU objects, which is not user-friendly. FMIExchange.jl aims to solve these issues by leveraging the well-known interface of DifferentialEquations.jl and combining it with the functionality of the existing FMI simulation suite.

FMIExchange.jl wraps FMUs in structs such that they can be used in a traditional differential equation (DE) solver as implemented in the SciML ecosystem. FMIExchange.jl automatically generates appropriate callbacks to detect and trigger events in the FMU, and mimics the traditional DifferentialEquations.jl interface for obtaining derivatives. FMU inputs and outputs are handled by using the parameter argument &quot;p&quot; as a memory buffer to store them. Manipulating this buffer using the callback library provided by the SciML ecosystem provides many ways to interact with the simulation. Typical examples are implementing digital controllers or defining interactions between different models.

It is possible to combine multiple FMUs and native Julia DEs in one simulation by subdividing the memory buffer into sections. To simplify this process, FMIExchange.jl provides tools to automatically assign and keep track of addresses and to perform common operations such as connecting model inputs and outputs. All this functionality is available for both native DEs and FMUs, such that the user can interact with all simulation components in an implementation-agnostic way.

The presentation will briefly introduce the FMI standard and then discuss the design of FMIExchange.jl. The package will be demonstrated on a case study involving model-predictive control of multiple flexible electrical loads in a residential building. The case study combines multiple FMUs and native ODEs in a single simulation, showing FMIExchange.jl in action in a realistic context.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/Electa-Git/FMIExchange.jl">Github</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/XBSX87/resources/FMIExchangePresentation_vcePNMO.zip">Presentation (Pluto, html, pdf)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/XBSX87/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XBSX87/feedback/</feedback_url>
            </event>
            <event guid='543bc614-0946-5e52-8b01-589b87909ce6' id='44412' code='FMHLCX'>
                <room>Method (1.5)</room>
                <title>Enabling Spectral Indices Computation with SpectralIndices.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>Amidst the surge in novel spectral indices for the increasing volume  of remote sensing data with higher spatial, temporal, and spectral resolutions, this Julia package offers a comprehensive solution for their easy access and efficient computation. It features a user-friendly interface and robust processing capabilities. SpectralIndices.jl works with the most used data types (i.e. data frames), as well as with data types tailored for Earth system science (e.g. YAXArrays).</abstract>
                <slug>juliacon2024-44412-enabling-spectral-indices-computation-with-spectralindices-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='44319'>Francesco Martinuzzi</person>
                </persons>
                <language>en</language>
                <description>In this talk, we will showcase SpectralIndices.jl (https://github.com/awesome-spectral-indices/SpectralIndices.jl), a Julia package developed to simplify the access and computation of spectral indices in remote sensing data analysis. The presentation will offer a comprehensive overview of the package&apos;s capabilities, emphasizing its application in Earth system research.
Key topics to be covered include:
1. Spectral Indices: Basic introduction.
2. Package Overview: Introduction to SpectralIndices.jl, its design philosophy, and the specific challenges it addresses in remote sensing data analysis.
3. Accessing Spectral Indices: Demonstrating how the package provides streamlined access to a wide range of spectral indices, including both well-established and newly developed indices.
4. Data Compatibility and Processing: Exploring the package&apos;s compatibility with various remote sensing data types and formats. We will demonstrate how SpectralIndices.jl can be applied to different datasets.
5. User Interface and Usability: Showcasing the user-friendly interface of SpectralIndices.jl. The presentation will include live coding examples to illustrate the ease of computing spectral indices with minimal coding effort, making the tool accessible to users with and without remote sensing expertise.
6. Future Directions: Outlining the ongoing development and future plans for SpectralIndices.jl. We will discuss potential enhancements, community collaboration opportunities, and the envisioned roadmap for the package.

By the end of this talk, attendees will have a deep understanding of SpectralIndices.jl&apos;s technical features, its application in remote sensing research, and how it contributes to advancing Earth system science through efficient data analysis and community-driven development. This work is done in collaboration with Miguel D. Mahecha, David Montero and Karin Mora.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/FMHLCX/resources/20240711juliacon24_sijl_jKoFwmY.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/FMHLCX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FMHLCX/feedback/</feedback_url>
            </event>
            <event guid='0b98eaee-241a-5c6f-a5dd-60def6bea413' id='43492' code='XQEBNS'>
                <room>Method (1.5)</room>
                <title>Fast probabilistic inference for ODEs with ProbNumDiffEq.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>ProbNumDiffEq.jl implements probabilistic numerical ODE solvers for the DifferentialEquations.jl ecosystem. These methods intepret &quot;solving an ODE&quot; as a probabilistic inference task, and they return a probabilistic estimate of the numerical solution and approximation error. Under the hood, this is done with extended Kalman filtering - but to the user, it looks like any other DifferentialEquations.jl solver. This talk presents ProbNumDiffEq.jl, its functionality, and some implementation details.</abstract>
                <slug>juliacon2024-43492-fast-probabilistic-inference-for-odes-with-probnumdiffeq-jl</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='46539'>Nathanael Bosch</person>
                </persons>
                <language>en</language>
                <description>_Probabilistic numerical methods_ interpret numerical problems as problems of Bayesian inference, and then solve them accordingly. For ODEs, one popular class of such methods treats ODEs as Bayesian state estimation problems, and then essentially solves the ODE with a Bayesian filtering and smoothing method such as the extended Kalman filter. [ProbNumDiffEq.jl](https://github.com/nathanaelbosch/ProbNumDiffEq.jl) provides an efficient implementation of these methods and makes them availabe in the the DifferentialEquations.jl ecosystem.

This talk starts with a brief introduction to probabilistic numerics and to probsbilistic ODE solvers, and then presents ProbNumDiffEq.jl. We will cover some example usages for different problem types, then dive into some implementation details that matter to make these solvers stable and fast, share some experiences on working with other Julia packages, and discuss the future prospects of probabilistic numerics within the Julia ecosystem.

### Features of ProbNumDiffEq.jl
For a new user, ProbNumDiffEq.jl looks just like a standard ODE solver library and it covers many features that users often want from solvers:
- Explicit and semi-implicit solvers of varying order
- Specialized solvers:
  - for second-order ODEs
  - for Manifolds (using a specific callback)
  - Exponential integrators
  - Rosenbrock-type exponential integrators
- Adaptive step-size selection (inherited from OrdinaryDiffEq.jl)
- Dense output
- Plotting
- Callback support (inherited from OrdinaryDiffEq.jl)
- All solvers are compatible with mass-matrix DAEs
In addition, ProbNumDiffEq.jl also has many features that relate to the probabilistic formulation of the solves, and provides a range of _priors_, multiple _calibration_ approaches, and a _likelihood model_ for parameter estimation.

### Links
- **Github repository:** https://github.com/nathanaelbosch/ProbNumDiffEq.jl
- **Tutorial** Getting started with ProbNumDiffEq.jl: https://nathanaelbosch.github.io/ProbNumDiffEq.jl/dev/tutorials/getting_started/
- **References:** https://nathanaelbosch.github.io/ProbNumDiffEq.jl/dev/references/</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/nathanaelbosch/ProbNumDiffEq.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/XQEBNS/resources/talk_ewKQAJJ.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/XQEBNS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XQEBNS/feedback/</feedback_url>
            </event>
            <event guid='513c5225-0cf8-52e8-83a3-d3bce95ec193' id='44417' code='JXA7YR'>
                <room>Method (1.5)</room>
                <title>What&#8217;s new with GeoInterface.jl: traits for interoperability</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>GeoInterface.jl aims to streamline working with geospatial vector data for users and developers of Julia packages. The package describes a set of traits based on the Simple Features standard. Using these traits it is easy to parse, serialize and use different geometries in the Julia ecosystem, without knowing the specifics of each package. GeoInterface is like Tables.jl, but for geometries. Lately, we have made improvements to conversion, plotting, and plan support for projections, among others.</abstract>
                <slug>juliacon2024-44417-what-s-new-with-geointerface-jl-traits-for-interoperability</slug>
                <track>General</track>
                
                <persons>
                    <person id='47364'>Rafael Schouten</person><person id='47367'>Maarten Pronk</person>
                </persons>
                <language>en</language>
                <description>The GeoInterface.jl package defines a set of traits for geospatial vector data, based on the Simple Features standard. This includes standards objects. Points, LineStrings, Polygons, MultiPolygons, Features, etc. and support for operations, such as buffer and intersects.

Packages across the ecosystem implement these traits to ensure inter-compatibility of their objects:
Shapefile.jl
GeoJSON.jl
ArchGDAL.jl
GeometryBasics.jl
WellKnownGeometry.jl
LibGEOS.jl
KML.jl
LazIO.jl

Other packages like AlgebraOfGraphics.jl, Rasters.jl, GeoDataframes.jl, Leaflet.jl and Tyler.jl, can consume  these objects without having to know from which package the object comes from. This increases the user-friendliness of the geospatial ecosystem by allowing geometries from different sources in packages that implement analyses without having to explicitly convert the data.

In the last year we have made improvements to the (automatic) conversion of geometries, the plotting (using Makie) of geometries, and we improved the performance of some implementations. We also improved GeoFormatTypes and Extents, packages used in tandem with GeoInterface.

Inspired by the mature R spatial ecosystem, we plan on implementing support for automatically distinguishing geographic and projected geometries. We also consider implementing some form of raster support, to enable more geospatial operations.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaGeo/GeoInterface.jl/">Github</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/JXA7YR/resources/Whats_new_with_GeoInterface.jl_6pHtd0g.pdf">presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/JXA7YR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JXA7YR/feedback/</feedback_url>
            </event>
            <event guid='c6c7ec0d-40b0-5710-9b9d-88af4a01816f' id='43375' code='EJXYNM'>
                <room>Method (1.5)</room>
                <title>Writing allocation-free Julia code with AllocCheck.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>Avoiding allocations is crucial when writing performant Julia, so we developed AllocCheck.jl, a package that provides tools for developing and statically enforcing allocation-free code.</abstract>
                <slug>juliacon2024-43375-writing-allocation-free-julia-code-with-alloccheck-jl</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46433'>Gabriel Baraldi</person><person id='46481'>Cody Tapscott</person>
                </persons>
                <language>en</language>
                <description>In this talk we will present AllocCheck.jl and give a quick example of how to use it, touring it&apos;s functionality and possible applications. Specifically around it&apos;s main entry point `@check_allocs, which is used to check whether a function allocates or not.

We&apos;ll dive into the three major sources of allocations in Julia code (object creation, dynamic dispatch, allocations by the runtime) and show how AllocCheck.jl can help you identify where in your code these problems arose. You&apos;ll see some of the common challenges and solutions when writing allocation-free code, and how to dive further with other tools in the ecosystem (such as Cthulhu.jl).

This tool also makes it possible to deploy Julia safely for specialized applications, such as running long simulation loops on embedded hardware where allocation-free code is vital for safe operation of your hardware. In this talk, we&apos;ll break apart what&apos;s needed to safely write code for these stringent applications and what extra requirements this implies for your code.

AllocCheck.jl works by inspecting the optimized LLVM IR and doing static analysis over it, figuring out if and where allocations happen, what is type of the objects being allocated, and if the allocation site is in an error path.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/EJXYNM/resources/AllocCheck.jl_-_JuliaCon_2024_EJDavEq.pptx">slides</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/EJXYNM/resources/AllocCheck.jl_-_JuliaCon_2024_s9tCqi8.pdf">slides pdf</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/EJXYNM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EJXYNM/feedback/</feedback_url>
            </event>
            <event guid='01b383e4-71ce-5624-a29f-86169c978df5' id='44164' code='FYFNAR'>
                <room>Method (1.5)</room>
                <title>Recursive Causal Discovery with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:10</duration>
                <abstract>We present a package for [Recursive Causal Discovery](https://arxiv.org/abs/2403.09300) for learning the causal relationships between variables. The package, called RecursiveCausalDiscovery.jl, contains, so far, the implementation of one algorithm called Recursive Structural Learning (RSL), which efficiently utilizes underlying side-information about the structure of the graph that relates the variables to one another.</abstract>
                <slug>juliacon2024-44164-recursive-causal-discovery-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47158'>Sepehr Elahi</person>
                </persons>
                <language>en</language>
                <description>The problem of causal discovery seeks to determine causal relationships between variables. Unlike traditional statistical methods which often focus on identifying correlations, causal discovery aims to understand how changes in one variable can directly influence or cause changes in another. Algorithms for causal discovery use data, alongside with statistical methods, to determine such causal relationships.

The Julia package for causal discovery, [CausalInference.jl](https://mschauer.github.io/CausalInference.jl/latest/), implements some score-based and constraint-based algorithms for causal discovery, such as the parent-child (PC) algorithm. However, such algorithms often require conditional independence (CI) tests with large conditioning sets or a large number of CI tests which grows exponentially as the number of variables increases. Moreover, we often have side-information about the structure of the underlying graph that relates the variables to one another, knowing which can drastically reduce the learning complexity. To this end, [Mokhtarian et al., 2022](https://ojs.aaai.org/index.php/AAAI/article/view/20750) present an algorithm called Recursive Structural Learning (RSL) algorithm, which incorporates side-information about the underlying graph and performs a polynomial number of CI tests. Further, [Recursive Causal Discovery](https://arxiv.org/abs/2403.09300) is a class of efficient algorithms for efficiently learning causal graphs using side-information.

In our package, called [RecursiveCausalDiscovery.jl](https://github.com/sepehr78/RecursiveCausalDiscovery.jl), we implement RSL and in doing so we create a framework that would allow for implementing other recursive causal discovery algorithms, such as [L-MARVEL](https://proceedings.neurips.cc/paper/2021/hash/53edebc543333dfbf7c5933af792c9c4-Abstract.html) and [MARVEL](https://proceedings.mlr.press/v150/mokhtarian21a), in the future.

The lightning talk will be structured as follows:
Basic background on causality: 2 min
Brief overview of causal discovery and the PC algorithm: 2 min
Recursive causal discovery (RCD): 2 min
Our implementation of RCD and our package, [RecursiveCausalDiscovery.jl](https://github.com/sepehr78/RecursiveCausalDiscovery.jl): 3 min
Q&amp;A: 1 mins</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/sepehr78/RCD_Juliacon2024">Presentation files</link>
                
                    <link href="https://github.com/sepehr78/RecursiveCausalDiscovery.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FYFNAR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FYFNAR/feedback/</feedback_url>
            </event>
            <event guid='3654b0e8-7a23-5653-b5ea-b4bb756bc0b7' id='44128' code='PTQLR9'>
                <room>Method (1.5)</room>
                <title>&#128176; Trillion Dollar Words in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T14:20:00+02:00</date>
                <start>14:20</start>
                <duration>00:10</duration>
                <abstract>[TrillionDollarWorlds.jl](https://github.com/pat-alt/TrillionDollarWords.jl) provides access to a novel financial dataset and large language model fine-tuned for classifying central bank communications as either &apos;hawkish&apos;, &apos;dovish&apos; or &apos;neutral&apos;. It ships with essential functionality for model probing, an important aspect of mechanistic interpretability.</abstract>
                <slug>juliacon2024-44128-trillion-dollar-words-in-julia</slug>
                <track>Economics</track>
                <logo>/media/juliacon2024/submissions/PTQLR9/rmse_pca_128_3oi0PQb.png</logo>
                <persons>
                    <person id='45766'>Patrick Altmeyer</person>
                </persons>
                <language>en</language>
                <description>In the age of forward guidance, central bankers spend a great deal of time thinking about how their communications are perceived by markets. What if there was a way to predict the impact of communications on financial markets directly from text? Shah, Paturi, and Chava (2023) attempt to do just that in their [ACL 2023 paper](https://arxiv.org/abs/2305.07972) (which the author of this package is not affiliated with).

### Background

The authors of the paper have collected and preprocessed a corpus of around 40,000 time-stamped sentences from meeting minutes, press conferences and speeches by members of the Federal Open Market Committee (FOMC). The total sample period spans from January, 1996, to October, 2022. In order to train various rule-based models and large language models (LLM) to classify sentences as either &#8216;hawkish&#8217;, &#8216;dovish&#8217; or &#8216;neutral&#8217;, they have manually annotated a subset of around 2,500 sentences. The best performing model, a large RoBERTa model with around 355 million parameters, was open-sourced on [HuggingFace](https://huggingface.co/gtfintechlab/FOMC-RoBERTa?text=A+very+hawkish+stance+excerted+by+the+doves).

### Data

While the authors of the paper did publish their data, much of it is unfortunately scattered across CSV and Excel files stored in a public GitHub repo. We have collected and merged that data, yielding a combined dataset with indexed sentences and additional metadata that may be useful for downstream tasks.

``` julia
julia&gt; using TrillionDollarWords
julia&gt; load_all_sentences() |&gt; names
8-element Vector{String}:
 &quot;sentence_id&quot;
 &quot;doc_id&quot;
 &quot;date&quot;
 &quot;event_type&quot;
 &quot;label&quot;
 &quot;sentence&quot;
 &quot;score&quot;
 &quot;speaker&quot;
```

In addition to the sentences, market data about price inflation and the US Treasury yield curve can also be loaded. All datasets are loaded as `DataFrame`s and share common keys that make it possible to join them. Alternatively, a complete dataset combining the corpus of sentences with market data can also be loaded with `load_all_data()`.

### Loading the Model

The model can be loaded with or without the classifier head. Under the hood, we use [Transformers.jl](https://github.com/chengchingwen/Transformers.jl) to retrieve the model from HuggingFace. Any keyword arguments accepted by `Transformers.HuggingFace.HGFConfig` can also be passed. For example, to load the model without the classifier head and enable access to layer-wise activations, the following command can be used: `load_model(; load_head=false, output_hidden_states=true)`.

### Model Inference

For our own research, we have been interested in probing the model. This involves using linear models to estimate the relationship between layer-wise transformer embeddings and some outcome variable of interest (Alain and Bengio 2018). To do this, we first had to run a single forward pass for each sentence through the RoBERTa model and store the layerwise emeddings. The package ships with functionality for doing just that, but to save others valuable GPU hours we have archived activations of the hidden state on the first entity token for each layer as [artifacts](https://github.com/pat-alt/TrillionDollarWords.jl/releases/tag/activations_2024-01-17). To download the last-layer activations in an interactive Julia session, for example, users can proceed as follows:

``` julia
julia&gt; using LazyArtifacts

julia&gt; artifact&quot;activations_layer_24&quot;
```

We have found that despite the small sample size, the RoBERTa model appears to have distilled useful representations for downstream tasks that it was not explicitly trained for. The chart below shows the average out-of-sample root mean squared error for predicting various market indicators from layer activations. Consistent with findings in related work (Alain and Bengio 2018), we find that performance typically improves for layers closer to the final output layer of the transformer model. The measured performance is at least on par with baseline autoregressive models.

![](https://raw.githubusercontent.com/pat-alt/TrillionDollarWords.jl/11-activations-for-cls-head/dev/juliacon/rmse_pca_128.png)

### Intended Purpose

We hope that this small package may be useful to members of the Julia community who are interested in the interplay between Economics, Finance and Artificial Intelligence. It should, for example, be straight-forward to use this package in combination with Transformers.jl to fine-tune additional models on the classification task or other tasks of interest. Any contributions are very much welcome.

## References

Alain, Guillaume, and Yoshua Bengio. 2018. &#8220;Understanding Intermediate Layers Using Linear Classifier Probes.&#8221; 

Shah, Agam, Suvan Paturi, and Sudheer Chava. 2023. &#8220;Trillion Dollar Words: A New Financial Dataset, Task &amp; Market Analysis.&#8221;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/pat-alt/TrillionDollarWords.jl">Github</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/trillion-dollar-words/presentation.html#/title-slide">Link to slides (Revealjs)</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/trillion-dollar-words/presentation.html?print-pdf=#/title-slide">Link to slides (PDF)</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PTQLR9/resources/slides_IXXHvyW.pdf">Slides (PDF)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PTQLR9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PTQLR9/feedback/</feedback_url>
            </event>
            <event guid='daf149f0-fe40-572b-96c1-63ba143b3d43' id='44109' code='GKJYBE'>
                <room>Method (1.5)</room>
                <title>Using Julia as part of an Anomaly Detection pipeline</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Julia is a great multi-purpose language, but it also fits in as a component in a larger multi-language ecosystem. At Akamai, we use Julia as part of our data pipeline to do Anomaly Detection and Alerting on web performance data.

In this talk, I&apos;ll cover the tasks delegated to Julia as well as how it fits into the rest of our development and operations stack.</abstract>
                <slug>juliacon2024-44109-using-julia-as-part-of-an-anomaly-detection-pipeline</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='43274'>Philip Tellis</person>
                </persons>
                <language>en</language>
                <description>Julia is very good at running data analysis on columnar data and temporal data, ie, the kind of data we have a lot of where I work. We have packages to do regression analysis, hypothesis testing, signal processing, and more, allowing our development team to focus on business logic and data pipelines.

In this talk, we&apos;ll cover how our Data Scientists use Julia to analyze data, and develop algorithms that can then be operationalized into a real time data pipeline and we&apos;ll see how Julia complements a Java based web application that handles data collection and alerting.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://speakerdeck.com/bluesmoon/using-julia-in-an-anomaly-detection-pipeline-juliacon-2024">Online Presentation</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/GKJYBE/resources/Using_Julia_in_an_Anomaly_Detection_Pipeline_JqieXy3.pdf">Downloadable Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/GKJYBE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GKJYBE/feedback/</feedback_url>
            </event>
            <event guid='99b96f38-4764-5609-bf74-676c10553b3b' id='42990' code='WXTMWP'>
                <room>Method (1.5)</room>
                <title>Working with Open Street Map spatial data in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>OpenStreetMap provides freely available data about transportation networks as well as parking spaces, schools, businesses, shops, restaurants, cafes, parking spaces, hospitals. In this talk a set of Julia packages for the manipulation of map data will be presenting, allowing processing road system information, vehicle routing as well as data scraping from maps for understanding the urban space. 
Presented Julia packages include OpenStreetMapX and OSMToolset.</abstract>
                <slug>juliacon2024-42990-working-with-open-street-map-spatial-data-in-julia</slug>
                <track>Data Science and Dynamics</track>
                <logo>/media/juliacon2024/submissions/WXTMWP/Boston_restaurant_sGcTKL2_IjoChvf.png</logo>
                <persons>
                    <person id='46487'>Przemys&#322;aw Szufel</person>
                </persons>
                <language>en</language>
                <description>During the talk tools and frameworks in Julia for working with spatial data will be presented. The presented Julia packages include OpenStreetMapX.jl for parsing of OSM and PBF formatted Open Street Map data, along with OpenStreetMapXPlot for plotting maps and OSMToolset for extraction of point-of-interest data from maps. Special attention will be given to the new package, OSMToolset, a pure Julia library that facilitates efficient scraping of various metadata from maps, including amenities, schools, cafes, restaurants, and parking spaces.

The talk will emphasize practical examples and code snippets for processing spatial data, simulating vehicle routing, and building spatial walkability indexes. This presentation will also feature a Jupyter Notebook with a live demonstration of various processing patterns for spatial data.

Acknowledgments: This presentation was funded in whole by National Science Centre, Poland grant number 2021/41/B/HS4/03349.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WXTMWP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WXTMWP/feedback/</feedback_url>
            </event>
            <event guid='7633f8e6-5921-5bfd-b6ef-aced61d41c24' id='44484' code='PGQWSM'>
                <room>Method (1.5)</room>
                <title>Strategic Data Handling in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Strategic Data Handling in Julia: Embracing Base Types for Business Impact

This talk caters to data analysts and scientists transitioning to Julia who are used to Pandas-centered workflows. We dissect the pros and cons of employing DataFrames versus Julia&#8217;s base types within a business setting, providing use case insights from our industry applications.</abstract>
                <slug>juliacon2024-44484-strategic-data-handling-in-julia</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='47452'>Christian Hower</person>
                </persons>
                <language>en</language>
                <description>The talk targets Julia coders, who may not fully exploit its performance 
capabilities due to a reliance on DataFrames. We will discuss the balance between development time, robustness, and performance, emphasizing time-to-value. Our aim is to provide attendees with strategies to maximize business outcomes when resources are constrained.

Attendees will learn to craft performant Julia code by employing arrays, structs, matrices, and dictionaries, which not only boost performance but also simplify logic testing. We&#8217;ll offer practical examples and refactoring tactics to transition from DataFrames to Julia&#8217;s more potent base types. Furthermore, we&apos;ll provide insight into the decision-making process for choosing the right data structure in varied business scenarios.

Participants will leave with a solid grasp of when to opt for DataFrames or Julia&#8217;s base types, grounded in practicality for business use. They will appreciate Julia&apos;s prowess in type stability and memory management for superior data handling. Resources for continued education and best practices will be shared to aid attendees in becoming adept Julia programmers for commercial applications.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PGQWSM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PGQWSM/feedback/</feedback_url>
            </event>
            <event guid='a0e3ceb1-7eec-5aae-94af-515a606f75a0' id='44154' code='8HM3F8'>
                <room>Method (1.5)</room>
                <title>Forecasting Mental Wellness of Students using Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>We are Forecasting Mental Wellness of Students using Julia
The purpose of this study was to understand the student&#8217;s mental health as a function of self, the social and the school and the interrelation using Julia Packages. We had collected data from various sources and implemented using Julia Packages such as DataFrames.jl which will tabulate the data, MLJ.jl to make predictions on the data and PyPlot.jl to plot the results and other metrics.</abstract>
                <slug>juliacon2024-44154-forecasting-mental-wellness-of-students-using-julia</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='47149'>Aditi Raviraj Burse</person><person id='47150'>Radhika Shidling Bhangi</person>
                </persons>
                <language>en</language>
                <description>Mental health includes our emotional, psychological and social well-being. It affects how we think, feel and act. It also helps determine how we handle stress and make healthy choice for being mentally stable. It can affect us through any sort of being like object, person/group of people and any kind of field.
As it is important, many university students are not able to complete their degrees because they go through a certain sort of stress, anxiety, depression and other mental health problems during course of their higher education.
The purpose of this study was to understand the student&#8217;s mental health as a function of self (individual factors), the social (interpersonal factors) and the school (environmental factors) and the interrelation using Julia Packages.
For the above study we need data from various sources. This data includes student academic performance data, student attendance data, a mentor counseling dataset, other activities of student data, their social media posts data etc. We had collected data from various sources and implemented using Julia Packages such as DataFrames.jl which will tabulate the data, MLJ.jl to make predictions on the data and PyPlot.jl to plot the results and other metrics. 
OUTLINE:
Introduction to Mental Health (2 minutes)
Importance of Mental Health in students (2 minutes)
Julia for mental health analytics (2 minutes)
Approaches and models for mental wellness (7 minutes)
Demonstrating a basic forecasting model (5 minutes)
Results and Discussions (5 minutes)
Conclusion (2 minutes)
Question and Answer (5 minutes)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8HM3F8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8HM3F8/feedback/</feedback_url>
            </event>
            <event guid='85825284-d52f-5d1b-8fdb-37a7bc3e9b2b' id='42459' code='PJLF73'>
                <room>Method (1.5)</room>
                <title>Cost-Efficient Experimental Designs, aka CEEDesigns.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>CEEDesigns.jl is a decision-making framework for the cost-efficient design of experiments, with direct applications in drug research, healthcare, and various other fields. Typically, a design consists of multiple experiments. Each experiment is regarded as an option to acquire additional experimental evidence and is associated with a monetary cost and an execution time. The framework, then, aims to select experiments that balance the value of acquired information and the incurred costs.</abstract>
                <slug>juliacon2024-42459-cost-efficient-experimental-designs-aka-ceedesigns-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='45634'>J B</person><person id='48775'>Otto Ritter</person><person id='53016'>Sean L Wu</person><person id='46421'>Tianchi Chen</person>
                </persons>
                <language>en</language>
                <description>In our talk, we will illustrate the decision-making framework, CEEDesigns.jl, through the following two examples.

First, we will discuss a task from the histopathology domain, where the goal is to predict glioma grades, as gliomas are the most common primary brain tumors. This prediction is based on a set of clinical features and mutation factors. In this context, observing mutation factors necessitates conducting physical experiments, which are associated with costs. To solve this problem, our framework estimates the information value of each subset of features (experiments). For example, through a built-in integration with MLJ.jl, we can evaluate the predictive accuracy of a machine learning model predicting glioma grades from the subsets of experimental features. By considering both the estimated information values and experimental costs, we can generate Pareto-efficient designs that maximize the information value at the lowest cost. In addition to minimizing the monetary cost, the framework also proposes an optimal order for conducting experiments within a chosen design on the Pareto front, thus reducing the execution time.

In general, this allows economical decisions to be made, for example, regarding how to allocate scarce resources to a set of experiments that attain some acceptable level of information (or, conversely, reduce uncertainty below some level).

Second, we consider &quot;personalized&quot; experimental designs that dynamically adjust based on the evidence gathered from the experiments. This approach is motivated by the fact that the value of information collected from an experiment generally differs across subpopulations of the entities involved in the triage process.

Internally, we conceptualized the decision-making process as a Markov decision process, in which we iteratively choose to conduct a subset of experiments and then, based on the experimental evidence, update our belief about the distribution of outcomes for the experiments that have not yet been conducted. The information value associated with the state, derived from experimental evidence, can be modeled through any statistical or information-theoretic measure such as the variance or uncertainty associated with the target variable posterior.

In this process, our goal is to minimize the expected experimental cost that is required to reduce the uncertainty about the grade below a specified threshold. Importantly, while constructing the experimental designs, we incorporate predictive multiple-step-ahead lookups to model experimental outcomes and we consider the subsequent decisions for each outcome. 

To solve the Markov decision process, the framework uses the POMDPs.jl package to define the underlying process and the MCTS.jl package, which implements the Monte Carlo Tree Search algorithm, to provide an actual solution to the process.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PJLF73/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PJLF73/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='For Loop (3.2)' guid='8c116ae7-f15d-5d19-ba00-c5a85442d1b8'>
            <event guid='cd29ec48-0856-5b40-a9b3-0b15576fa0d1' id='43405' code='YNVEVA'>
                <room>For Loop (3.2)</room>
                <title>Creating Enterprise grade Desktop applications with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:10</duration>
                <abstract>A Desktop application is an ideal way to ship a Julia app to your target audience, especially when you&apos;re dealing with air-gapped (No Internet) environments &amp; have concerns over privacy &amp; cost-effectiveness. In this talk, we will discuss on how bundle your Julia app on all 3 major operating systems (Mac, Windows &amp; Linux) and how to overcome challenges (Such as Regulatory compliance, portability, certifications, licensing, etc) that your Julia application would face in an enterprise environment.</abstract>
                <slug>juliacon2024-43405-creating-enterprise-grade-desktop-applications-with-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46555'>Harsha Byadarahalli Mahesh</person>
                </persons>
                <language>en</language>
                <description>Your app can be enterprise ready regardless of whether there is a commercial aspect to it or not. Being enterprise ready will increase the usability of your app by making it usable by a wide variety of audience. Unlike other Desktop apps, Julia apps have a unique trait to them; which needs to be addressed while shipping your app to the target audience. 

Following topics will be discussed in this talk. All the aspects discussed in this talk will be backed by more than 8 years of practical experience gained by developing and maintaining Julia based desktop products such as JuliaPro and Pumas (https://pumas.ai/pumas).


* Your Julia app has to go through cybersecurity compliance frameworks inorder to be accepted by many enterprises, we will discuss on how to make sure your Julia app meets these Regulatory compliance&apos;s.
* Certifying your Julia app is not only a requirement for enterprises, it has become a basic necessity for non-commercial users as well, because modern operating systems are making it difficult to bypass these certifications, we will discuss on how to certify your Julia app on each operating system.
* We will also discuss on challenges faced while deploying your Julia app in an air-gapped (No Internet) environment and how to overcome them.
* We will touch base on how to automate your Desktop binary builds using Julia scripts.
* Upon installation of your app, the Julia dependencies (Artifacts, registries, package source code, environments, etc) that&apos;s being shipped by your binary; might be deployed on distributed user environments (Roaming profiles) and multi-user environments, we will discuss on how your Julia app should handle these kind of environments.
* Support for a License Manager in your Julia app.
* Code obfuscation for your private Julia code that&apos;s being shipped in your Desktop binary.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/YNVEVA/resources/Creating_Enterprise_grade_Desktop_applications_tj0HGYL.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/YNVEVA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YNVEVA/feedback/</feedback_url>
            </event>
            <event guid='18773b9b-a210-50f5-8ac9-2db7a8c5d19f' id='43524' code='7MSS7S'>
                <room>For Loop (3.2)</room>
                <title>Julia for the working mathematician: parametric Gr&#246;bner bases</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>A lot of knowledge about algorithms is hidden in old academic texts and may only have been implemented in now-defunct CAS systems. Here I share my experience writing ParametricGrobnerBases.jl for computing parametric Gr&#246;bner bases in Julia, and why I think Julia could be a secret weapon for researchers in computational algebra.</abstract>
                <slug>juliacon2024-43524-julia-for-the-working-mathematician-parametric-grobner-bases</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='46527'>Andreas B&#248;gh Poulsen</person>
                </persons>
                <language>en</language>
                <description>This talk is about implementing an algorithm for computing parametric/comprehensive Gr&#246;bner bases, which are Gr&#246;bner bases over a parameterized family of ideals. Gr&#246;bner bases are a crucial tool for almost every computation involving multivariate polynomials. This algorithm doesn&apos;t seem to be very well-known, but in this talk I outline why Julia is uniquely well-suited to implementing such algorithms, as well as give some examples of problems, that can be efficiently solved using this algorithm. All of this will be available in the package ParamtetricGrobnerBases.jl.
This talk can be seen both by computer scientists for its mathematical content and by mathematicians as an inspiration to use Julia in their research.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/7MSS7S/resources/presentation_zDI2FNr.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/7MSS7S/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7MSS7S/feedback/</feedback_url>
            </event>
            <event guid='6845c866-0bf1-5654-ae04-9b87a6c5687a' id='44485' code='3T9TE3'>
                <room>For Loop (3.2)</room>
                <title>Build a computational thinking - like class for the greater good</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>The [Computational Thinking in Julia](https://computationalthinking.mit.edu/) class taught at MIT was a huge success, doing a great job in showcasing both Julia and Pluto potential in education. Such power is done to be shared should be harnessed by everyone. In this talk, we introduce the [computational thinking template](https://github.com/juliapluto/computational-thinking-template), showing step by step how everyone can build a website like the computational thinking in a few easy steps.</abstract>
                <slug>juliacon2024-44485-build-a-computational-thinking-like-class-for-the-greater-good</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47024'>Luca Ferranti</person>
                </persons>
                <language>en</language>
                <description>This talk will present the [computational thinking template](https://github.com/juliapluto/computational-thinking-template) and give a hands-on overview of how it can be used to easily build a website like the [Computational thinking in Julia](https://computationalthinking.mit.edu/). The talk will focus on the following steps:

1. Setting up the website with the template
2. Adding lecture materials
3. Deploying the website

After the talk, the audience is ready to build a class like the Computational thinking in a few easy steps and harness the power of Pluto and Julia in their teaching &#127880;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/3T9TE3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3T9TE3/feedback/</feedback_url>
            </event>
            <event guid='79c8f8d8-ee61-5b0f-95a9-46792a82484e' id='43515' code='TJQJGZ'>
                <room>For Loop (3.2)</room>
                <title>What&apos;s new in Trustworthy AI in Julia (Taija)?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>[Taija](https://github.com/JuliaTrustworthyAI) is a growing ecosystem of packages geared towards *T*rustworthy *A*rtificial *I*ntelligence in *J*uli*a*. This talk will provide an update on recent developments of some of our core packages. In particular, the focus will be on contributions made by two groups of students from TU Delft, as well as ongoing JSoC work.</abstract>
                <slug>juliacon2024-43515-what-s-new-in-trustworthy-ai-in-julia-taija</slug>
                <track>AI/ML/AD</track>
                <logo>/media/juliacon2024/submissions/TJQJGZ/wide_logo_0TuIycG.png</logo>
                <persons>
                    <person id='45766'>Patrick Altmeyer</person>
                </persons>
                <language>en</language>
                <description>Julia&#8217;s ecosystem for Artificial Intelligence (AI) and Machine Learning (ML) has been growing at a relatively rapid pace, perhaps most notably so in the [SciML](https://sciml.ai/) domain but also more broadly (e.g.&#160;[Flux](https://fluxml.ai/), [MLJ](https://juliaai.github.io/MLJ.jl/stable/), [JuliaGenAI](https://github.com/JuliaGenAI/juliagenai.org), &#8230;). The goal of Taija is to make AI models more trustworthy, where we have so far focused primarily on the interplay with packages in the latter category.

**Please note**: This talk will *not* introduce various packages in great detail but instead focus on highlighting recent developments and research. If Taija is entirely new to you, I recommend you to check out these [slides](https://www.patalt.org/content/talks/posts/2024-turing/) that I recently presented at the Alan Turing Institute. They provide an accessible and relatively high-level overview of our core packages.

## &#127968; About

Taija currently covers a range of approaches towards making AI systems more trustworthy:

- Model Explainability ([CounterfactualExplanations.jl](https://github.com/JuliaTrustworthyAI/CounterfactualExplanations.jl))
- Algorithmic Recourse ([CounterfactualExplanations.jl](https://github.com/JuliaTrustworthyAI/CounterfactualExplanations.jl), [AlgorithmicRecourseDynamics.jl](https://github.com/JuliaTrustworthyAI/AlgorithmicRecourseDynamics.jl))
- Predictive Uncertainty Quantification ([ConformalPrediction.jl](https://github.com/JuliaTrustworthyAI/ConformalPrediction.jl), [LaplaceRedux.jl](https://github.com/JuliaTrustworthyAI/LaplaceRedux.jl))
- Effortless Bayesian Deep Learning ([LaplaceRedux.jl](https://github.com/JuliaTrustworthyAI/LaplaceRedux.jl))
- Hybrid Learning ([JointEnergyModels.jl](https://github.com/JuliaTrustworthyAI/JointEnergyModels.jl))

Various meta packages can be used to extend the core functionality:

- Plotting ([TaijaPlotting.jl](https://github.com/JuliaTrustworthyAI/TaijaPlotting.jl))
- Datasets for testing and benchmarking ([TaijaData.jl](https://github.com/JuliaTrustworthyAI/TaijaData.jl))
- Parallelization ([TaijaParallel.jl](https://github.com/JuliaTrustworthyAI/TaijaParallel.jl))
- Interoperability with other programming languages ([TaijaInteroperability.jl](https://github.com/JuliaTrustworthyAI/TaijaInteroperability.jl))

The [TaijaBase.jl](https://github.com/JuliaTrustworthyAI/TaijaBase.jl) package provides common symbols, types and functions that are used across all or multiple Taija packages.

## &#128736;&#65039; Recent Developments

A lot has happened since we presented some of our core packages at JuliaCon in 2022 and 2023. During the past year, the focus has been on extending and improving these existing packages. Various groups of undergraduate students at TU Delft as well as a few external collaborates have contributed to these efforts.

### CounterfactualExplanations.jl

`CounterfactualExplanations.jl` is a package for Counterfactual Explanations and Algorithmic Recourse in Julia.

- The code base has been streamlined to make it more accessible to new contributors. (students)
- Part of this involved moving functionality out of the package into new meta-packages. (students)
- Multiple new counterfactual generators including FeatureTweak for decision trees and random forests. (students)
- Improved interoperability with Python and R through `TaijaInteroperability.jl`. (students)
- Integration of ECCCo generator for faithful model explanations (Altmeyer et al. 2024).
- Huge improvements to computational speed and native support for multi-threading and multi-processing.

### LaplaceRedux.jl

`LaplaceRedux.jl` is a package for effortless Bayesian Deep Learning through Laplace Approximation for `Flux.jl` neural networks.

- Support for multi-class problems. (students)
- Support for more sophisticated and scalable Hessian approximations. (students)
- Interface to MLJ for easy model training and evaluation. (students)

### Students&#8217; Experience

I will also briefly report back on the students&#8217; experience working on these projects. This includes the challenges they faced, the skills they acquired, and the impact they had on the Taija ecosystem.

## &#127919; Ongoing and Future Projects

Taija has been running two Julia Season of Code projects this summer.

1.  (*Conformal Bayes*) Bridging the gap between Bayesian and frequentist approaches to Predictive Uncertainty Quantification.
2.  (*Causal Recourse*) From minimal perturbations to minimal interventions for Algorithmic Recourse.

Finally, we are also working with a group of students on [TaijaInteractive.jl](https://github.com/JuliaTrustworthyAI/TaijaInteractive.jl): a Genie-based web application for interactive model explanations.

## &#128218; References

Altmeyer, Patrick, Mojtaba Farmanbar, Arie van Deursen, and Cynthia CS Liem. 2024. &#8220;Faithful Model Explanations Through Energy-Constrained Conformal Counterfactuals.&#8221; In *Proceedings of the AAAI Conference on Artificial Intelligence*, 38:10829&#8211;37. 10.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaTrustworthyAI">Github</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/taija-update/presentation.html#/title-slide">Link to slides (Revealjs)</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/taija-update/presentation.html?print-pdf=#/title-slide">Link to slides (PDF)</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/TJQJGZ/resources/slides_mgdnhv2.pdf">Slides (PDF)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/TJQJGZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TJQJGZ/feedback/</feedback_url>
            </event>
            <event guid='dc9fa194-173b-507c-8397-132ebb3daa6c' id='44316' code='8NH3NM'>
                <room>For Loop (3.2)</room>
                <title>Simulating Cognitive Models of Human Decision-Making in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>**SequentialSamplingModels.jl** is a package for simulating and evaluating a large class of human decision-making models called sequential sampling models (SSMs). We will briefly introduce SSMs and their utilization throughout cognitive science, illustrate some of the main features of the current package version, and discuss future developments.</abstract>
                <slug>juliacon2024-44316-simulating-cognitive-models-of-human-decision-making-in-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47297'>Kiant&#233; Fernandez</person>
                </persons>
                <language>en</language>
                <description>**SequentialSamplingModels.jl** provides a unified interface for simulating and evaluating sequential sampling models (SSMs) in Julia.

SSMs describe human decision making as a stochastic and dynamic evidence accumulation process. The models assume that evidence accumulates over time, starting from a certain position, until it crosses a boundary, triggering a corresponding response (Ratcliff &amp; McKoon, 2008; Ratcliff, 1978). SSMs have seen wide-ranging applications in cognitive psychology &amp; neuroscience due to the interpretability of parameters as representative of multiple components of information processing and their ability to form a generative model for reaction time distributions for responses.

SequentialSamplingModels.jl has been integrated with the probabilistic programming ecosystem through:
&#8226;	Distributions.jl: functions for describing probability distributions
&#8226;	Plots.jl: extended plotting tools for SSMs
&#8226;	Turing.jl: Bayesian parameter estimation

In our talk, we will briefly introduce the theory and applications of SSMs and showcase some of the main features of the current version of the package through a quick tutorial including how to:
&#8226;	install the package
&#8226;	define an SSM
&#8226;	simulate data from the constructed SSM
&#8226;	conduct parameter estimation with Turing

Lastly, with many SSMs having likelihoods that cannot be computed efficiently, simulation-based inference has recently been proposed as a solution. We highlight areas for future development, aiming to incorporate likelihood approximation networks (which use neural networks to predict log-likelihoods from data and parameters) using packages like Flux.jl, and invite suggestions for other machine learning-based approaches to parameter estimation.

For a more comprehensive exploration of the package functionalities and further details on future developments, the user is invited to consult the package [README](https://github.com/itsdfish/SequentialSamplingModels.jl), [documentation](https://itsdfish.github.io/SequentialSamplingModels.jl/dev/), and [issues](https://github.com/itsdfish/SequentialSamplingModels.jl/issues).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/itsdfish/SequentialSamplingModels.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8NH3NM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8NH3NM/feedback/</feedback_url>
            </event>
            <event guid='044c3a52-ca8e-55b3-ac26-6afdc3b87c6c' id='44424' code='N9SAX7'>
                <room>For Loop (3.2)</room>
                <title>Jurassic REPL: vi Finds a Way</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>VimBindings.jl is a Julia package which brings vim emulation to the Julia REPL, but covers only a fraction of the large feature-set of vim. Neovim, a vim fork, offers a robust API that can be used to add vim-like functionality to other software, an approach employed by the likes of the VSCode Neovim plugin. This talk demonstrates the progress made in adopting a similar neovim-based solution in VimBindings.jl.</abstract>
                <slug>juliacon2024-44424-jurassic-repl-vi-finds-a-way</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47399'>Caleb Allen</person>
                </persons>
                <language>en</language>
                <description>vi is a text editor from 1976. Today, in 2024, users of vi and its descendants can be found furiously editing text in almost every computing environment imaginable. Unfortunately, a vi user may occasionally find themselves in the difficult situation of using a program that isn&#8217;t vi, one that isn&#8217;t even a vi descendant. Julia is one such example: a powerful, dynamic programming language used in many scientific and numerical applications. 

VimBindings.jl is a Julia package which brings a subset of vim features to the Julia REPL, alleviating some of these difficulties; still, its features emulate just a fraction of vim&#8217;s feature set, and it falls short of being truly called a full vi or vim implementation.

Now, VimBindings.jl is on the path bringing the full power of vim to the REPL by integrating with neovim, a recent fork of vim, under the hood. This talk presents the technical progress made in the VimBindings.jl package in integrating with neovim. It will also discuss design challenges that emerge at the intersection of paradigms, and the opinionated design decisions made to resolve them. 

Soon, us vim users will be able to answer &#8220;yes&#8221; to the question of whether we can transform Julia into vim; whether we should will be left as an exercise for the viewer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://docs.google.com/presentation/d/1SMK8tTVN94onT64gNrW21IKY3ysd2p0xiKebK489fuE/edit?usp=sharing">Presentation Slides</link>
                
                    <link href="https://github.com/caleb-allen/VimBindings.jl">github</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/N9SAX7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/N9SAX7/feedback/</feedback_url>
            </event>
            <event guid='e5f454e4-dfb5-50a0-a41a-a004794b7ccf' id='43182' code='EFVEKH'>
                <room>For Loop (3.2)</room>
                <title>GPU Acceleration of Julia&apos;s SciML: ODEs, Optimization, and more</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Julia&apos;s SciML ecosystem is burgeoning in applying machine learning to scientific computing. Moreover, a key emphasis is the performance paradigm, accelerating scientific discovery. This is possible because at the core of the SciML are the numerical methods that automatically support hardware accelerators like GPUs, making the simulations tractable. This talk will provide a state of GPU acceleration in the SciML ecosystem and its applications, ranging from ODE solvers to Optimization methods.</abstract>
                <slug>juliacon2024-43182-gpu-acceleration-of-julia-s-sciml-odes-optimization-and-more</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='46464'>Oscar Smith</person><person id='55316'>Oscar Smith</person>
                </persons>
                <language>en</language>
                <description>Julia&apos;s SciML is an ecosystem similar to SciPy or MATLAB&apos;s built-in numerical solver libraries in that it provides the standard numerical solvers for the Julia ecosystem. Everything from ODE solvers, nonlinear solvers, optimization routines, and more are provided with one common interface. Something that makes the Julia ecosystem stand out is its direct compatibility with machine learning and its deep integration with GPUs. In this talk, we will focus on the latter, showcasing how the SciML stack employs various GPU toolsets in order to automate the process of translating a complex CPU-based model to a GPU-based model. We will discuss the way that this differs from standard machine learning frameworks, why it achieves 20x-100x acceleration over PyTorch and Jax for ODE solvers and some of the steps being taken to accelerate small optimization problems which traditionally have not been able to use parallelism.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EFVEKH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EFVEKH/feedback/</feedback_url>
            </event>
            <event guid='efc2b28e-80bd-57fd-821f-d021c11f614b' id='43429' code='YGZYWK'>
                <room>For Loop (3.2)</room>
                <title>Gradients for everyone: a quick guide to autodiff in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Automatic Differentiation (AD) is the art of letting your computer work out derivatives for you. The Julia ecosystem provides many different AD tools, which can be overwhelming. This talk will give everyone the necessary information to answer two simple questions:
- As a developer, how do I make my functions differentiable?
- As a user, how do I differentiate through other people&apos;s functions?

Video: &lt;https://www.youtube.com/live/ZKt0tiG5ajw?t=19747s&gt;</abstract>
                <slug>juliacon2024-43429-gradients-for-everyone-a-quick-guide-to-autodiff-in-julia</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='46362'>Guillaume Dalle</person><person id='46477'>Adrian Hill</person>
                </persons>
                <language>en</language>
                <description>The ability to take gradients of arbitrary computer programs is at the core of many breakthroughs in science and machine learning.
In Python, AD is fragmented into separate frameworks like TensorFlow, PyTorch or JAX. Each one of these has its own package ecosystem, and interoperability is limited. You first pick your AD framework, and then you write all your code in it.

Meanwhile on the Julia side, the dream is to make the whole language differentiable. Ideally, you should be able to write the code you want, and get gradients for free. In practice, there are multiple AD packages (ForwardDiff, ReverseDiff, Zygote, Enzyme, etc.) with distinct sets of tradeoffs. Should you use generic types? Can you perform mutating operations? Newcomers may not understand where these constraints come from, or whether they are inevitable.

The present talk is an introduction to AD in Julia, from two complementary point of views.
- package developers want to make their functions differentiable with as many backends as possible.
- package users want easy ways to compute derivatives with the best possible performance.

We will give both of these groups the right tools to make informed decisions. Here is a rough summary of our presentation:

1. Classification of AD systems - forward and reverse mode
2. Python versus Julia - two different approaches
3. Making code differentiable - quick fixes or custom rules
4. Using differentiable code - switching backends if needed

Presentation slides: &lt;https://gdalle.github.io/JuliaCon2024-AutoDiff/&gt;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/gdalle/DifferentiationInterface.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YGZYWK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YGZYWK/feedback/</feedback_url>
            </event>
            <event guid='c0c54079-d373-5890-9c43-3874c47be833' id='44254' code='ZSHGHJ'>
                <room>For Loop (3.2)</room>
                <title>Train a Llama(2) in Julia!</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Large Language Models (LLMs) have become ubiquitous in several areas. But so far, the Julia ecosystem has lacked an efficient way to train these models, hindering the adoption of Julia by ML practitioners and users. In this talk we demonstrate parallel training of LLMs using Dagger.jl and Flux.jl. We discuss the various components required to write an efficient parallel training routine. Further, we present the scaling performance achievable with this method, and discuss the future developments.</abstract>
                <slug>juliacon2024-44254-train-a-llama-2-in-julia</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47243'>Dhairya Gandhi</person><person id='46486'>Julian P Samaroo</person>
                </persons>
                <language>en</language>
                <description>Training large neural networks has been a hard challenge in the Julia ecosystem. It requires the infrastructure to scale training to many GPUs simultaneously. In this talk we demonstrate several pieces required to train LLMs such as Llama2 in Julia. Using [Dagger.jl](https://github.com/JuliaParallel/Dagger.jl), we demonstrate scaling to multiple GPUs during the training of a Flux.jl model.

This approach has several applications; since the underlying implementation is agnostic of the model being trained, it can thus be reused to parallelize training across a wide variety of models to solve current and emerging problems faster than before.

In practice, LLMs aren&apos;t trained from scratch. Pre-trained models are typically loaded and then fine tuned on specialised tasks with techniques such as Low Rank Adaptation of LLMs (LoRA). This greatly reduces the training time required to fit a model to become suitable for a specific task.

We will present the various components of the pipeline - from the model and data description to setting up the parallel training job. We will present the scaling in training time achieved, and the size of models we could accommodate with this approach. We will walk through the various challenges encountered during the process, and how we envision scaling of large GPU workloads using the Julia ecosystem in the future.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZSHGHJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZSHGHJ/feedback/</feedback_url>
            </event>
            <event guid='a7083128-61c8-52a4-996b-3b072707276f' id='41486' code='HHLKRR'>
                <room>For Loop (3.2)</room>
                <title>End-to-End AI (E2EAI) with Julia, K0s, and Argo Workflow</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>This talk will demonstrate an End-to-End AI (E2EAI) implementation by leveraging on Julia&#8217;s AutoMLPipeline package for developing AI solution together with K0s and Argo Workflow frameworks to automate the provisioning of the K8s cluster and the deployment and monitoring of AI solutions.</abstract>
                <slug>juliacon2024-41486-end-to-end-ai-e2eai-with-julia-k0s-and-argo-workflow</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='45114'>Paulito Palmes</person>
                </persons>
                <language>en</language>
                <description>Current implementations in cloud computing treat MLOps and IaC (infrastructure as a code) as separate activities. Without a unified view of both the needed infrastructure and the data processing and modelling tasks involved, current approaches put the burden of integrating the automation of both AI solutions and infrastructure to majority of stakeholders that typically lack the specialization of both technologies at the same time. E2EAI (End-to-End AI) aims to create a unified framework by tightly integrating MLOps and IaC workflows using high-level yaml description and APIs for zero to minimal coding leveraging on Julia&#8217;s performance and efficiency together with K0s high-level abstractions of k8s infrastructure and Argo Workflow&#8217;s ML pipeline stages of deploying micro-services.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/IBM/AutoMLPipeline.jl">Github</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/HHLKRR/resources/juliacon2024_e2eai_dlHVQi2.pdf">JuliaCon2024 Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/HHLKRR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HHLKRR/feedback/</feedback_url>
            </event>
            <event guid='f4a3d4d0-460e-5b6d-b2b7-485b9de30f42' id='44308' code='JDWKAC'>
                <room>For Loop (3.2)</room>
                <title>What&apos;s new with Explainable AI in Julia?</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>**ExplainableAI.jl**, a comprehensive set of XAI tools for Julia, has undergone significant development since our initial presentation at JuliaCon 2022, and has since been expanded into the **Julia-XAI ecosystem**. This lightning talk will highlight the latest developments, including new methods, the new XAIBase.jl core interface, and new utilities for visualizing explanations of vision and language models.</abstract>
                <slug>juliacon2024-44308-what-s-new-with-explainable-ai-in-julia</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='46477'>Adrian Hill</person>
                </persons>
                <language>en</language>
                <description>In machine learning, understanding the inner workings of black-box models is critical to ensuring their safety and trustworthiness. The field of Explainable AI (XAI) aims to provide practitioners with methods to gain insight into the decision-making processes of their models.
The Julia-XAI ecosystem provides such methods, with a focus on post-hoc, local input space explanations. Simply put, methods that try to answer the question *&quot;What part of the input is responsible for the model&apos;s output?&quot;*.

Since our first presentation of **ExplainableAI.jl** at JuliaCon 2022, the package has been expanded into the **Julia-XAI ecosystem**. This lightning talk will cover the latest additions and present new features:


- **XAIBase.jl:** Core package that defines the Julia-XAI interface, allowing developers to quickly implement or prototype new methods without writing boilerplate code.
- **VisionHeatmaps.jl and TextHeatmaps.jl:** Lightweight dependencies for visualizing explanations of vision and language models.
- **RelevancePropagation.jl:** A new package for Layer-wise Relevance Propagation (LRP) and Concept Relevance Propagation (CRP) for use with Flux.jl models, supporting ResNets and Transformer architectures.
- **New XAI methods in ExplainableAI.jl**</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/Julia-XAI">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/JDWKAC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JDWKAC/feedback/</feedback_url>
            </event>
            <event guid='817d44ad-cb07-5545-8d37-a36b7e125843' id='44452' code='FSMGKN'>
                <room>For Loop (3.2)</room>
                <title>Large Language Models: To Be or Not To Be</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Large Language models(LLMs) such as ChatGPT, Bard, Midjourney, Gemini, and many others are buzzwords in the present era of Artificial Intelligence. In this talk, I will address the impact of large language models on the environment and present small language models as the solution.</abstract>
                <slug>juliacon2024-44452-large-language-models-to-be-or-not-to-be</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47146'>Gajendra Deshpande</person>
                </persons>
                <language>en</language>
                <description>Large Language models(LLMs) such as ChatGPT, Bard, Midjourney, Gemini, and many others are buzzwords in the present era of Artificial Intelligence. The technologies such as Large Language Models are like a double-edged sword. On one hand, they offer lots of benefits and create new opportunities and on the other hand, they raise many concerns. One of the concerns, that is least discussed is the impact of large language models on the environment. The large language models are trained on billions and trillions of parameters and they require huge compute resources that contribute to carbon footprint. One of the possible solutions to reduce the carbon footprint and environmental impact of LLMs is to consider using Small Language Models and Modular Language Models. In many cases, small language models offer better solutions than large language models. This talk begins with an introduction to Large Language models and their impact on the environment and how they contribute to carbon footprint. Next, I will introduce Small Language models and how they will help in reducing the carbon footprint while offering a better solution. I will demonstrate a sample small language model application using Julia packages i.e., Transformers.jl, PromptingTools.jl and ConformalPrediction.jl. Finally, I will conclude the talk by comparing the impact of large language models and small language models on the environment.

Outline:
1. Introduction to Large Language models and their impact on the environment(05 Minutes)
2. Overview of Small Language models as a solution to reduce the carbon footprint(05 Minutes)
3. Introduction to Transformers.jl, PromptingTools.jl and ConformalPrediction.jl (08 Minutes)
4. Building an example small language model application in Julia(08 Minutes)
5. Comparison of the environmental impact of large language models and small language models(02 Minutes)
6. Conclusion and Questions (02 Minutes)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FSMGKN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FSMGKN/feedback/</feedback_url>
            </event>
            <event guid='90bf41ce-8059-5561-a3b0-5bd470250306' id='43382' code='H8AWEY'>
                <room>For Loop (3.2)</room>
                <title>Gatlab: Computer Algebra and Standard ML modules combined</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>What do computer algebra and Standard ML-style module systems have in common? In this talk, we will answer this question via exploration of GATlab.jl, a new package spun off of the GAT (generalized algebraic theories) system from Catlab. Rather than focusing on the mathematics of GATs, we will give a practical introduction on how to use GATlab as both a computer algebra system and a Standard ML-style module system, and how each use complements the other.</abstract>
                <slug>juliacon2024-43382-gatlab-computer-algebra-and-standard-ml-modules-combined</slug>
                <track>General</track>
                
                <persons>
                    <person id='47986'>Owen Lynch</person>
                </persons>
                <language>en</language>
                <description>The core idea of [GATlab](https://github.com/AlgebraicJulia/GATlab.jl) is the following. Consider the following module signature in OCaml.

```ocaml
module type MONOID =
  sig
    type t
    val zero : t
    val add : (t, t) -&gt; t
  end
```

A module can be said to &quot;implement&quot; this signature if the module contains a type `t` along with a &quot;zero value&quot; for `t` and a function which adds two elements of `t`.

```ocaml
module INTMONOID : MONOID =
  struct
    type t = int
    let zero = 0
    let add (x, y) = x + y
  end
```

However, we could also interpret that signature in a different way: we could interpret it as a *specification for syntax trees*. Specifically, we could make a data structure which looks like the following (we now switch back to Julia)

```julia
abstract type MonoidTerm{T} end

eltype(t::MonoidTerm{T}) where {T} = T

struct Zero{T} &lt;: MonoidTerm{T}
end

struct Add{T} &lt;: MonoidTerm{T}
  lhs::MonoidTerm
  rhs::MonoidTerm
end

struct Val{T} &lt;: MonoidTerm{T}
  value::T
end
```

We can then make implementations using multiple dispatch

```julia
abstract type Monoid{T} end

struct IntMonoid &lt;: Monoid{Int}
end

zero(::IntMonoid) = 0
add(::IntMonoid, x::Int, y::Int) = x + y
```

Using such a &quot;module&quot; of type `Monoid{T}`, we can *interpret* any `MonoidTerm{T}` to produce a `T`! That is, we can write a function

```julia
function interpret(M::Monoid{T}, t::MonoidTerm{T}) where {T}
  if t isa Zero
    zero(M)
  elseif t isa Add
    add(M, interpret(M, t.lhs), interpret(M, t.rhs))
  elseif t isa Val
    t.value
  end
end
```

If we build a signature+module system from the ground up using macros and multiple dispatch, we can also build in these syntax trees and corresponding interpreters. It is also possible to compile a syntax tree to a Julia function.

GATlab is an implementation of this... and significantly more. First of all, one can add *laws* to a signature to produce a *theory* (theory = signature + laws).

```julia
@theory ThMonoid begin
  T::TYPE
  zero::T
  add(x::T, y::T)::T
  add(x, zero) == x &#8867; [x::T]
  add(zero, x) == x &#8867; [x::T]
  add(add(x, y), z) == add(x, add(y, z)) &#8867; [x::T, y::T, z::T]
end
```

We call a law-abiding implementation of the signature of a theory a *model* of that theory.

Now, we cannot statically check that a model of a theory satisfies the laws, but the laws do provide a principled way of doing *rewriting* on the syntax trees associated to a signature. We use e-graphs to perform this rewriting, with a custom type-aware implementation.

The mathematics behind all of this is studied within [universal algebra](https://en.wikipedia.org/wiki/Universal_algebra). Many of the features of ML-style module systems have analogues within universal algebra. For instance, one can build up complex theories via inheriting simpler theories, or create maps between theories (analogous to ML-style functors), and these operations on theories can be used to generate new models from old ones.

However, universal algebra cannot capture certain structures important for our work in Catlab, first and foremost categories. To support categories, we upgrade from algebraic theories to generalized algebraic theories (or *GATs*, which is where the name of GATlab comes from), as introduced by [Cartmell](https://www.researchgate.net/publication/314154820_Generalised_Algebraic_Theories_and_Contextual_Categories). These support theories with *dependent types*, which looks like the following

```julia
@theory ThCategory begin
  Ob::TYPE
  Hom(dom, codom)::TYPE &#8867; [dom::Ob, codom::Ob]
  id(a::Ob)::Hom(a, a)
  compose(f::Hom(a, b), g::Hom(b, c))::Hom(a, c) &#8867; [a::Ob, b::Ob, c::Ob]
  compose(f, id(b)) == g &#8867; [a::Ob, b::Ob, f::Hom(a, b)]
  ...
end  
```

Just like with algebraic theories, we can work with syntax trees, we can write interpreters, and we can programmatically manipulate models.

GATlab can be compared to frameworks like [MMT](https://uniformal.github.io/doc/), but with the ability to have models compute fast. Another comparison would be to Julia libraries like Symbolics.jl. Symbolics.jl is far more advanced for traditional computer algebra, but the underlying assumption is that variables are some sort of number, while GATlab does not assume this. Finally, we might compare with Julia libraries like [WhereTraits.jl](https://github.com/jolin-io/WhereTraits.jl) which add traits/typeclasses to Julia. GATlab differs from these in being more similar to Standard ML modules rather than Haskell typeclasses or Rust traits, and in its CAS aspects. We hope to learn from these other projects and integrate their strengths as GATlab evolves.

In this talk, we will give an introduction to GATlab from a practical perspective, showing how to work with simple theories and modules, and emphasizing the connection (as described above) between computer algebra and module systems.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/H8AWEY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/H8AWEY/feedback/</feedback_url>
            </event>
            <event guid='48c6aeef-2faa-5e25-82a7-e7bfba776c90' id='49627' code='TZAVVB'>
                <room>For Loop (3.2)</room>
                <title>Diversity Dinner and Discussion</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2024-07-11T18:30:00+02:00</date>
                <start>18:30</start>
                <duration>03:00</duration>
                <abstract>Join us to learn how to get involved with diversity initiatives within the Julia community! This is a great opportunity to meet new people and work on a meaningful project.</abstract>
                <slug>juliacon2024-49627-diversity-dinner-and-discussion</slug>
                <track>Community</track>
                
                <persons>
                    <person id='52037'>Jacob Zelko</person><person id='47346'>Let&#237;cia Madureira</person><person id='44316'>Skylar Gering</person><person id='47422'>Kim Louisa Auth</person>
                </persons>
                <language>en</language>
                <description>We invite you to attend the Diversity Dinner and Discussion, an evening event focused on Diversity, Equity, and Inclusion (DEI) initiatives within the Julia Language community. At this event, various community DEI organizations will discuss their efforts to make the Julia community more welcoming and increase user diversity. We will have a hands-on activity where attendees will design a mentoring platform to help new members break into the Julia community and contribute to projects they care about. We hope to have a fun discussion-based event focused on empowering attendees to make an impact on diversity within the Julia community while creating networking opportunities between people from different backgrounds.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TZAVVB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TZAVVB/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Function (4.1)' guid='43a8b52a-e689-5901-ac76-e45345b9bfce'>
            <event guid='d62d1de0-7811-5106-8832-723bdccc3bc2' id='44459' code='7NF3SV'>
                <room>Function (4.1)</room>
                <title>CoupledElectricMagneticDipoles.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:10</duration>
                <abstract>We present CoupledElectricMagneticDipoles.jl, a Julia package implementing the coupled electric and magnetic dipole (CEMD) or discrete dipole approximation (DDA) method for electromagnetic multiple scattering calculations, as well as a plethora of side functionalities that might be useful for preparing such calculations or analyzing the obtained results.</abstract>
                <slug>juliacon2024-44459-coupledelectricmagneticdipoles-jl</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/7NF3SV/logo_light_jRBNiTq.svg</logo>
                <persons>
                    <person id='47430'>Augustin Muster</person>
                </persons>
                <language>en</language>
                <description>Authors: Augustin Muster, Diego R. Abujetas, Frank Scheffold, Luis S. Froufe-P&#233;rez
Affiliation: Department of Physics, University of Fribourg, 1700 Fribourg, Switzerland

The coupled electric and magnetic dipole (CEMD) and the discrete dipole approximation (DDA) methods are used extensively in nano-photonics or nano-optics, addressing problems of electromagnetic scattering in complex systems or on single discretized targets [1]. Nowadays, implementations of both CEMD and DDA methods can be found in almost all common programming languages [2], but not in the Julia language, renowned for its performance, simplicity and dynamism. 

In order to remedy this, we introduce CoupledElectricMagneticDipoles.jl, a Julia Package implementing the CEMD and DDA methods, as well as all the side functionalities that are needed to do simulations using these two methods. The package is organized in 8 modules organized around the main one, DDACore. This module allows to define and solve CEMD (DDA) problems using either CPU or GPU. The other modules can be used to give input to the functions of the DDACore module (with the Alphas, Geometries and InputFields modules), or for analyzing the obtained results (with the PostProcessing and Forces modules). Moreover, two modules are implemented as utilities, GreenTensors and MieCoeff.

We shall discuss the performances of CoupledElectricMagneticDipoles.jl, as well as its simplicity of use, showing typical examples from nano-photonics and nano-optics.

[1] Bruce T. Draine and Piotr J. Flatau, &quot;Discrete-Dipole Approximation For Scattering Calculations&quot;. J. Opt. Soc. Am. A 11, 1491-1499 (1994) 
[2] P.C. Chaumet, &#8220;The Discrete Dipole Approximation: A Review&#8221;. Mathematics, 10, 3049 (2022)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7NF3SV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7NF3SV/feedback/</feedback_url>
            </event>
            <event guid='eea2d130-e0e7-5d85-9e69-295b4f110cb0' id='44350' code='DK8EMZ'>
                <room>Function (4.1)</room>
                <title>Introducing MuJoCo.jl - Julia bindings for the MuJoCo simulator</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>In this talk, we will introduce our new package, [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl), bringing the advanced physics simulator **[MuJoCo](https://github.com/google-deepmind/mujoco)** to fellow Julia users. We will highlight the features that this package gives to users and give an example of how to make best use of the package and its visualiser.</abstract>
                <slug>juliacon2024-44350-introducing-mujoco-jl-julia-bindings-for-the-mujoco-simulator</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47332'>Jamie Mair</person>
                </persons>
                <language>en</language>
                <description>Link to the slides - [https://mujoco-jc2024.netlify.app/](https://mujoco-jc2024.netlify.app/)

**[MuJoCo](https://github.com/google-deepmind/mujoco)** is an advanced, high-performance physics engine designed for accurate and fast simulation of robotic applications. The engine, provided by Google DeepMind, can be used by robotics researchers and practitioners to design, calibrate and test control software for robotic systems in a simulated environment. MuJoCo is also utilised by the machine learning community, enabling state-of-the-art Reinforcement Learning techniques to be applied to robotics, as such techniques require millions of hours of high quality training data to be effective.

By creating [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl). we aim to provide the Julia community with modern bindings to the MuJoCo physics engine, integrated with a visualisation tool to allow simulations to be rendered in real-time, without users ever having to leave the Julia ecosystem. Our design was guided by several goals, ensuring that the package:
1) Offers a high-performance thin wrapper around the existing C library, enabling users to exert fine-grained control over performance, including support for multi-threading.
2) Provides a user-friendly experience, complete with comprehensive documentation of structs and functions, as well as bounds checking on inputs.
3) Presents native Julia interfaces to directly access array/matrix data from the engine, facilitating interoperability with other packages.

This talk will start by showcasing some of the main features of [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl), followed by a detailed example, along with usage tips, of how to use the package and its visualiser.

This work builds on some amazing previous work by [Lyceum](https://github.com/Lyceum), whose visualisation tools have been integrated directly into [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl) via Julia&apos;s package extension framework.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JamieMair/MuJoCo.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DK8EMZ/resources/Introducing_MuJoCo.jl_CbeUC8Q.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DK8EMZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DK8EMZ/feedback/</feedback_url>
            </event>
            <event guid='c0024287-df44-5934-95f4-22a9d5656b33' id='44293' code='F9FBWD'>
                <room>Function (4.1)</room>
                <title>What&apos;s new with VoronoiFVM.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>VoronoiFVM.jl solves nonlinear coupled multiphysics diffusion-reaction-convection partial differential equation systems in one, two an three space dimensions using the the Voronoi finite volume method, leveraging ForwardDifff.jl for the construction of the Jacobi matrices used by the nonlinear solver.
The talk will explain the basic ideas of the package API and give an overview on the developments since the first presentation at JuliaCon 2020, and highlight the integrative potential of Julia.</abstract>
                <slug>juliacon2024-44293-what-s-new-with-voronoifvm-jl</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47278'>J&#252;rgen Fuhrmann</person>
                </persons>
                <language>en</language>
                <description>After the first presentation at JuliaCon 2020, the package has undergone a number of improvements. These include
- Integration with DifferentialEquations.jl ODE solvers
- Integration with LinearSolve.jl providing easy access to different linear solvers
- New preconditioners for linear systems inlcuding AMGCLWrap.jl 
- Differentiability through Sparspak.jl
- Mesh generation capabilities in accompanying packages.
- Visualization capabilities in accompanying packages based on Makie.jl and PlutoVista.jl, among others 
- Multithreading (work in progress)

The package is used as the core solver in several research projects in fields like electrochemistry and semiconductor modeling.


As the contribution is planned as a lightning talk, presentation time will be short.  I however intend to present with the help of a Pluto notebook, which (or an extended version thereof) will be made available online at the time of the talk, giving interested participants the possibility to try out computational examples showcasing the package&apos;s capabilities.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://www.youtube.com/watch?v=v0RPD4eSzVE&amp;t=5120s">Video</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/F9FBWD/resources/pluto-voronoifvm-juliacon2024_ul6f4qx.html">Pluto notebook (HTML)</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/F9FBWD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/F9FBWD/feedback/</feedback_url>
            </event>
            <event guid='7f86c7c7-e426-583a-9629-4f71132c4446' id='47673' code='DKSM7H'>
                <room>Function (4.1)</room>
                <title>Nurturing a quantum open-source ecosystem</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>In this talk I&#8217;ll provide an overview of recent activities for the growth of an open-source ecosystem in quantum technology by Unitary Fund, a 501(c)3 non-profit, whose activities can be broadly divided into three groups: (1) Microgrants; (2) community activities; (3) research. I will provide an overview of 89+ microgrants awarded to date with some spotlights (Julia projects) and stats. Community activities include a lively Discord server (with many community calls and &quot;Quantum Wednesdays&quot; jour</abstract>
                <slug>juliacon2024-47673-nurturing-a-quantum-open-source-ecosystem</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='50346'>Nathan Shammah</person>
                </persons>
                <language>en</language>
                <description>In this talk I&#8217;ll provide an overview of recent activities for the growth of an open-source ecosystem in quantum technology by Unitary Fund, a 501(c)3 non-profit, whose activities can be broadly divided into three groups: (1) Microgrants; (2) community activities; (3) research. I will provide an overview of 89+ microgrants awarded to date with some spotlights (Julia projects) and stats. Community activities include a lively Discord server (with many community calls and &quot;Quantum Wednesdays&quot; journal clubs), the Quantum Open Source Survey (featuring Julia), unitaryHACK (a special hackathon) and more. The Unitary Fund tech staff is performing research enabling open source projects in error mitigation (Mitiq) and benchmarks of quantum computer metrics (Metriq.info).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DKSM7H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DKSM7H/feedback/</feedback_url>
            </event>
            <event guid='81438ee1-ab33-5c78-b8d8-81f1fbd6a93d' id='43603' code='U9NF3A'>
                <room>Function (4.1)</room>
                <title>Simulating quantum molecular dynamics with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>In this work, we present the progress of our MolKet&apos;s Julia package that can be used to implement quantum molecular simulations with the aid of physics-informed AI. We will show the performance of our package and how it can be used to implement quantum molecular simulations for several applications.</abstract>
                <slug>juliacon2024-43603-simulating-quantum-molecular-dynamics-with-julia</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46642'>Taha Selim</person><person id='46739'>Alain Chanc&#233;</person>
                </persons>
                <language>en</language>
                <description>Quantum molecular simulations are computationally expensive and require a large amount of memory. Moreover, accurate simulations may require the use of machine learning algorithms, physics-informed neural networks, and other types of algorithms such as quantum computing and quantum-inspired algorithms. Such algorithms require different types of hardware like CPUs, GPUs, TPUs, NPUs, and quantum computers. Therefore Julia is of much interest to implement quantum molecular simulations. 

In this work, we present the progress of our MolKet&apos;s Julia package that can be used to implement quantum molecular simulations with the aid of physics-informed AI. We will show the performance of our package and how it can be used to implement quantum molecular simulations for several applications.


Keywords: Julia, quantum molecular dynamics, physics-informed neural networks, machine learning, quantum computing, quantum-inspired algorithms, high-performance computing, GPUs, TPUs, quantum computers.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/U9NF3A/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/U9NF3A/feedback/</feedback_url>
            </event>
            <event guid='4741fec5-a735-5762-89fb-1c80e0c1baac' id='43574' code='98REDT'>
                <room>Function (4.1)</room>
                <title>Computer-Aided Design of Quantum Integrated Circuits</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>We present Layout.jl, a package for computer-aided design (CAD) of superconducting quantum integrated circuits. The package supports schematic-driven layout, 2D geometry rendering, and the construction and meshing of 3D models. It also provides an interface to Palace, an open-source 3D finite element solver for computational electromagnetics.</abstract>
                <slug>juliacon2024-43574-computer-aided-design-of-quantum-integrated-circuits</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46621'>Greg Peairs</person>
                </persons>
                <language>en</language>
                <description>Layout.jl is a package developed at the AWS Center for Quantum Computing for computer-aided design (CAD) of quantum hardware&#8212;specifically, for superconducting integrated circuits operating at microwave frequency. The package supports the generation of 2D layouts and 3D models of complex devices using a low-level geometry interface together with a high-level schematic-driven workflow. At the geometry level, the user writes code to draw 2D geometric entities like polygons and paths, optionally using units with Unitful.jl; position and orient these entities with coordinate transformations; organize them into a hierarchy of local coordinate systems and references; apply operations like rounding, offsetting, or geometric Booleans; and assign each entity metadata that can be used in different ways by different backends. In the schematic-driven workflow, the user defines components and the connectivity between them, followed by automated placement and routing with the schematic API to construct a layout. The results can be rendered with various backends, including for output in the GDSII format; used to construct and mesh a 3D model; and interfaced with other tools like the open-source electromagnetics solver Palace. Finally, we leverage the Julia package manager for process design kit (PDK) management, allowing users to maintain a library of versioned process technologies and components for portable, reproducible layout scripts.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/98REDT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/98REDT/feedback/</feedback_url>
            </event>
            <event guid='723711e9-637f-52cc-9f99-4b03f5303e8e' id='47669' code='WVWTEB'>
                <room>Function (4.1)</room>
                <title>Tensor network for quantum error correction</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Unlike classical computers, quantum computers are inherently error-prone. Quantum error correction (QEC) is a method to protect quantum information from errors. In this talk, I will introduce the basic concepts of QEC and the recent development of tensor network based QEC. I will also present the software tools: TensorQEC.jl, a Julia package for tensor network based QEC. This package will be open-sourced before the conference.</abstract>
                <slug>juliacon2024-47669-tensor-network-for-quantum-error-correction</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='50380'>JinGuo Liu</person><person id='50382'>Zhongyi Ni</person>
                </persons>
                <language>en</language>
                <description>Unlike classical computers, quantum computers are inherently error-prone. Quantum error correction (QEC) is a method to protect quantum information from errors. In this talk, I will introduce the basic concepts of QEC and the recent development of tensor network based QEC. I will also present the software tools: TensorQEC.jl, a Julia package for tensor network based QEC. This package will be open-sourced before the conference.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/nzy1997/TensorQEC.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/WVWTEB/resources/juliacon2024_kRBcve3.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/WVWTEB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WVWTEB/feedback/</feedback_url>
            </event>
            <event guid='aaa23c73-732c-5d06-98da-0d6aede9d732' id='44208' code='3UP39Z'>
                <room>Function (4.1)</room>
                <title>Piccolo.jl: an integrated stack for quantum optimal control</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>We are presenting updates to the Piccolo.jl family of Julia packages, including NamedTrajectories.jl and QuantumCollocation.jl. New features include robust control, leakage suppression, subspace gate optimization, improved unitary geodesic initialization, easy-to-use and powerful plotting tools, expanded documentation, and new examples. We will also present some of our results on hardware and the future roadmap for Piccolo.jl.</abstract>
                <slug>juliacon2024-44208-piccolo-jl-an-integrated-stack-for-quantum-optimal-control</slug>
                <track>Quantum Minisymposia</track>
                <logo>/media/juliacon2024/submissions/3UP39Z/piccolo-logo_MpP8xGK.jpg</logo>
                <persons>
                    <person id='49077'>Aaron Trowbridge</person><person id='53464'>Andy Goldschmidt</person>
                </persons>
                <language>en</language>
                <description>[Piccolo.jl](https://github.com/aarontrowbridge/Piccolo.jl) is a meta-package for setting up, solving, and analyzing quantum optimal control problems using Pad&#233; Integrator Collocation (PICO) method, detailed in our award-winning, peer-reviewed paper [Direct Collocation for Quantum Optimal Control](https://arxiv.org/abs/2305.03261) (submitted and received best paper award at IEEE QCE23). Software development is supported by [the Unitary Fund](https://unitary.fund/) where we host weekly live-coding sessions in the discord channel!

---
_AG was supported by an appointment to the Intelligence Community Postdoctoral Research Fellowship Program at University of Chicago administered by Oak Ridge Institute for Science and Education (ORISE) through an interagency agreement between the U.S. Department of Energy and the Office of the Director of National Intelligence (ODNI)._</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/kestrelquantum/Piccolo.jl">Piccolo.jl</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/3UP39Z/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3UP39Z/feedback/</feedback_url>
            </event>
            <event guid='4fd49bee-4cb5-5c2d-aac1-379618d647fa' id='44450' code='KUUH8B'>
                <room>Function (4.1)</room>
                <title>Composable API for Quantum Networking Protocols</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>The lack of composable APIs for the design and development of networking protocols in most available modeling tools is a severe drain on developer productivity. We present a family of abstractions and APIs, together with their implementation in the QuantumSavory.jl package, which make it possible to design large-scale quantum networking simulations in a scalable and manageable way.</abstract>
                <slug>juliacon2024-44450-composable-api-for-quantum-networking-protocols</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='47420'>Stefan Krastanov</person>
                </persons>
                <language>en</language>
                <description>A number of popular simulation frameworks exist for modeling quantum networks, aiming at both research questions and at informing future designs and hardware deployments. Developing and testing network protocols is a core capability for such tools, however good abstractions in that domain are sorely missing: it is hard to create a stack of protocols that do not depend on each-other&apos;s internals, a recipe for bugs, slow progress, and developer pain. In this talk we present a family of abstractions and an API which make protocol development much easier.

Behind the scenes we build on the QuantumSavory package we are developing at the the NSF&apos;s Center for Quantum Networks. The tool includes a symbolic algebra system for describing quantum states, multiple backend simulators that can seamlessly interoperate, and strong debugging and visualization capabilities, which are presented throughout the talk.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KUUH8B/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KUUH8B/feedback/</feedback_url>
            </event>
            <event guid='7a9d7d83-88f4-5b30-a102-837253bf0302' id='46579' code='8AJJ9U'>
                <room>Function (4.1)</room>
                <title>On physics-informed automatic differentiation</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>The growing availability of automatic differentiation (AD) tools promises numerous applications for enhancing large-scale scientific simulations, from sensitivity analysis to machine learning. However, the interplay of AD (&quot;the gradient you get&quot;) and numerical analysis, implicit differentiation and physical symmetries (&quot;the gradient you want&quot;) is nontrivial. I will briefly present such considerations on examples from materials science (density-functional theory) in DFTK.jl.</abstract>
                <slug>juliacon2024-46579-on-physics-informed-automatic-differentiation</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='49319'>Niklas Schmitz</person>
                </persons>
                <language>en</language>
                <description>The growing availability of automatic differentiation (AD) tools promises numerous applications for enhancing large-scale scientific simulations, from sensitivity analysis to machine learning. However, the interplay of AD (&quot;the gradient you get&quot;) and numerical analysis, implicit differentiation and physical symmetries (&quot;the gradient you want&quot;) is nontrivial. I will briefly present such considerations on examples from materials science (density-functional theory) in DFTK.jl.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8AJJ9U/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8AJJ9U/feedback/</feedback_url>
            </event>
            <event guid='ba1ee566-3dcd-5c5d-ab93-e0cce87bf972' id='44549' code='EML8NG'>
                <room>Function (4.1)</room>
                <title>Equivalence Checking of Dynamic Quantum Circuits</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Given two quantum circuits, that differ in their number of qubits, how can we determine they behave in the same way? This talk discusses how equivalence checking has been implemented in ZXCalculus.jl using OpenQASM.jl, YaoHIR.jl and QuantumEquivalence.jl</abstract>
                <slug>juliacon2024-44549-equivalence-checking-of-dynamic-quantum-circuits</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='47514'>Liam</person>
                </persons>
                <language>en</language>
                <description>In order to overcome platform limitations of NISQ, namely the limit amount of qubits and high noise ration, IBM introduced a new type of quantum circuits named Dynamic Quantum Circuits (DQCs). 
They contain non-unitary operations such as mid-circuit measurements, active-reset and classically controlled logic. Yet most state-of-the-art equivalence checkers are not efficient and effective for verification of DQCs.

Previously ZXCalculus.jl did not support importing circuits from OpenQASM or checking the equivalence of two quantum circuits. This talk presents how dynamic quantum circuits can be converted into quantum circuits, that only contain unitary operations, which can be proven equivalent using ZXCalculus.jl. Furthermore this approach is scalable in regard to the number qubits, allowing us to verify the equivalence of quantum circuits with more than 1000 Qubits.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaEDA/DynamicQuantumCircuits.jl">DynamicQuantumCircuits.jl Pluto Notebooks</link>
                
                    <link href="https://github.com/contra-bit/ZXCalculus.jl/tree/feature/plots/notebooks">ZXCalculus.jl Pluto Notebooks</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/EML8NG/resources/juliacon24_qJhV4SP.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/EML8NG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EML8NG/feedback/</feedback_url>
            </event>
            <event guid='42bb8446-1384-591a-9217-3b06e677b5f0' id='43450' code='YTXKB7'>
                <room>Function (4.1)</room>
                <title>ITensorNetworks.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>ITensorNetworks.jl is a Julia package for constructing, optimizing and contracting tensor networks of arbitrary structure. The library combines the unique indexing system from ITensors.jl with code for generic graphs which can host meta-data on the vertices and edges.  The result is a highly flexible, generic codebase which can be leveraged to perform state-of-the-art research with tensor networks.</abstract>
                <slug>juliacon2024-43450-itensornetworks-jl</slug>
                <track>Quantum Minisymposia</track>
                <logo>/media/juliacon2024/submissions/YTXKB7/JuliaConImage_mLY5eB5.png</logo>
                <persons>
                    <person id='46499'>Joseph Tindall</person>
                </persons>
                <language>en</language>
                <description>Tensor networks are a representation of high dimensional tensors as a connected network of lower dimensional tensors. This means they can be used to solve problems, such as those involving many-body quantum systems, which are beyond the reach of conventional brute-force methods. Existing codes and algorithms for manipulating tensor networks, however, are often hard-coded to specific network structures &#8211; most prominently the one-dimensional chain. ITensorNetworks.jl moves beyond this by being built upon code which makes no explicit assumption about the geometry of the tensor network, providing an unprecedented degree of freedom to the user when tackling high-dimensional problems. In this talk I will detail the structure and features of the ITensorNetworks.jl package. I will present examples of code written using the library and discuss its ongoing application in quantum simulation. Finally, I will discuss future plans for the library.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YTXKB7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YTXKB7/feedback/</feedback_url>
            </event>
            <event guid='4a6c7afe-5df1-54e5-9386-bc98805431b5' id='43505' code='TTSXAN'>
                <room>Function (4.1)</room>
                <title>Projector Monte Carlo and exact diagonalisation with Rimu.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Rimu.jl aims to be an extensible platform for quantum many-body calculations. We have implemented the full configuration interaction quantum Monte Carlo (FCIQMC) algorithm and exact diagonalisation for quantum many-body models defined through a universal interface. The pure Julia implementation relies on native threading and uses MPI.jl for inter-node parallelism on the HPC. We will showcase solving an impurity problem in the Bose-Hubbard model where the linear matrix dimension exceeds `10^60`.</abstract>
                <slug>juliacon2024-43505-projector-monte-carlo-and-exact-diagonalisation-with-rimu-jl</slug>
                <track>Quantum Minisymposia</track>
                
                <persons>
                    <person id='49075'>Joachim Brand</person>
                </persons>
                <language>en</language>
                <description>Quantum many-body physics problems map into linear-algebra problems of a size that grows exponentially with the number of constituent particles. While exact diagonalisation is useful for small toy problems, it quickly becomes infeasible. Projector quantum Monte Carlo aims at providing a stochastic sample of the ground state wave function (or extremal eigenpair) for larger quantum Hamiltonians.

In this talk we will discuss how we implemented a flavour of projector quantum Monte Carlo (FCIQMC), which can be seen as a simple stochastic extension of exact diagonalisation, in native Julia. The package is designed to be fully extensible with interfaces. This allows for the easy implementation of custom many-body models or modification of the stochastic algorithms. Besides the option to convert small-enough models into sparse matrices for use with standard linear algebra solvers, Rimu.jl also allows for the matrix-free exact diagonalisation of model Hamiltonians with the external package Krylovkit.jl.

The choice of Julia as a language was ideal for this software project where speed and performance-tuning of hot-loop code is critical, while the flexibility of experimenting with models and algorithms as well as the ease of data analysis (all in the same language) enhances productivity greatly. After giving a quick tour of what you can do with Rimu.jl, we will discuss the structure of the package and some of the design choices around parallelisation by threading and message passing (mpi).

FCIQMC is already popular in quantum chemistry (targeted by existing Fortran codes) and could be useful in a number of different domains. We are looking for new users, collaborators and contributors who may be interested in exploring new use cases or extensions for Rimu.jl.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/joachimbrand/Rimu.jl">GitHub</link>
                
                    <link href="https://github.com/joachimbrand/juliacon24-Rimu-talk/tree/main">talk repo with slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TTSXAN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TTSXAN/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='While Loop (4.2)' guid='892ce152-be7e-5cad-974c-13ba80dc75d2'>
            <event guid='9f1b74dc-6703-5ad6-a5d2-5645c3f6d325' id='39850' code='NCVSZ3'>
                <room>While Loop (4.2)</room>
                <title>MATLAB |&gt; Julia &#128522;</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:00:00+02:00</date>
                <start>10:00</start>
                <duration>00:30</duration>
                <abstract>In this talk I will walk through 4 different practical examples of using Julia and share some of the things that caught my attention coming from MATLAB. The talk will go through the 4 projects I used to get my hands dirty with Julia. It is a representation of the things I stumbled across in my first 10h of Julia.</abstract>
                <slug>juliacon2024-39850-matlab-julia</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/NCVSZ3/1550068462547_wNEYAT1.jpeg</logo>
                <persons>
                    <person id='43824'>Gareth Thomas</person>
                </persons>
                <language>en</language>
                <description>In this talk I will walk through 4 different practical examples of using Julia and share some of the things that caught my attention coming from MATLAB, as an experienced MATLAB developer. The talk will go through the 4 projects I used to get my hands dirty with Julia.

The 4 examples are:
- 2D and 3D plotting
- Reading external files and working with tables
- Step Response of a Control System
- Testing and developing a Julia Package</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/NCVSZ3/resources/MATLAB2Julia_fyD0c1f.pdf">PDF of Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/NCVSZ3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NCVSZ3/feedback/</feedback_url>
            </event>
            <event guid='71ff65a3-7e7b-59ef-9ffb-808b2c20412d' id='44403' code='FBTMTQ'>
                <room>While Loop (4.2)</room>
                <title>Blending the gap: mixing MATLAB with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Interfacing MATLAB with Julia (and the other way) is still clunky and not very &quot;ergonomic&quot; (from a software development point of view).  We propose for a new software component that sits in between MATLAB and Julia that would allow to transparently interface these two worlds.</abstract>
                <slug>juliacon2024-44403-blending-the-gap-mixing-matlab-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47380'>Paolo Accordini</person><person id='50029'>Joris Belier</person>
                </persons>
                <language>en</language>
                <description>Julia and MATLAB are very different beasts and they cannot easily talk to each other. Multiple solutions were developed to allow these two worlds to communicate. But most of these solutions relies on methods of communications that are not very &quot;ergonomic&quot; from a software developer point of view. In other words, there is always a syntactic price to pay in order to call a function or access a data structure. This is undesirable from multiple aspects, mostly because it renders the code hard to read and might introduce extra complexity in order to marshal data structures between these two worlds. There is another way that might be useful to craft a series of interfaces that might allow MATLAB to transparently call Julia, allowing MATLAB developers to try what Julia can provide without the initial cost of learning another programming language or using a weird API to call/translate data structures between worlds.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FBTMTQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FBTMTQ/feedback/</feedback_url>
            </event>
            <event guid='dd9d789e-e773-540b-987a-56ac65726aaa' id='43332' code='DGGFYA'>
                <room>While Loop (4.2)</room>
                <title>Bias correcting methods for climate models</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>In this talk, we present [QuantileMatching.jl](https://github.com/JuliaExtremes/Quantile), a package that provides exhaustive high-performance functions to perform quantile matching of an actual distribution and a target distribution with Julia. The functionalities will be illustrated in this talk with stationary examples of climate models and the impacts of bias correction.</abstract>
                <slug>juliacon2024-43332-bias-correcting-methods-for-climate-models</slug>
                <track>General</track>
                
                <persons>
                    <person id='46398'>Charles Marois</person>
                </persons>
                <language>en</language>
                <description>Quantile mapping is a statistical technique used in hydrology and climatology to adjust the distribution of observed data to match a desired distribution, typically that of a climate model or historical record. This method involves mapping the quantiles of the observed data to the corresponding quantiles of the reference distribution, ensuring a more accurate representation of extreme events and improving the reliability of climate projections. By aligning the distributions, quantile mapping helps address biases in climate model outputs and enhances the utility of climate information for impact assessments and decision-making.

There are several types of quantile mapping methods, each with its specific approach to adjust the distribution of observed data to a reference distribution. Generally speaking, methods are classified within parametric or non-parametric categories.

In a stationary context, quantile mapping assumes a constant relationship between observed and reference distributions over time.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DGGFYA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DGGFYA/feedback/</feedback_url>
            </event>
            <event guid='0ae3ae6a-c00d-5e42-9b4b-4e96774e03a1' id='44311' code='FWD39E'>
                <room>While Loop (4.2)</room>
                <title>Retro6502 for 8-bit dev: smashing a mosquito with a pile driver</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>Developing for the 6502 8-bit microprocessor is hard with your code confined to the platform. Retro6502 has a fast, pure Julia emulator that lets your code call Julia where development is orders of magnitude faster &#8211; you can code in assembly after your Julia version works and passes your tests. You get
- macros / code gen in Julia
- Assembly in the Julia REPL
- Pure Julia 6502 emulation
- Live coding
- Automated testing
- Julia prototyping you can test against your 6502 code
- Read-only memory</abstract>
                <slug>juliacon2024-44311-retro6502-for-8-bit-dev-smashing-a-mosquito-with-a-pile-driver</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/FWD39E/talk_BOp0ma3.png</logo>
                <persons>
                    <person id='47294'>William R Burdick</person>
                </persons>
                <language>en</language>
                <description>Youtube: https://www.youtube.com/live/PzgFzorRtoo?si=W9TENH5mxrax2bgf&amp;t=8919

Background music: https://www.youtube.com/watch?v=5ZoLphdE7l8 -- I had intended to play PRESS PLAY ON TAPE&apos;s cover of Martin Galway&apos;s classic Comic Bakery. This cover song is famous for certain values of &quot;nerd&quot;.

Also, thanks to Roy Riggs, author of Hired Sword II for inspiration and guidance (and being my roommate in college).

This talk will demonstrate and discuss Retro6502, an open source Julia package licensed under the MIT license and available on GitHub at https://github.com/zot/Retro6502.jl

Developing for the 6502 8-bit microprocessor typically means compiling/assembling code, loading it into an emulator or a physical machine, and running and testing it there. There are advanced debugging environments like C64Debugger and the beta RetroDebugger that let you visualize memory and even use omniscient debugging, stepping backwards in time and finding the code and point in time that drew a particular pixel.

Despite these advantages, there is plenty of room for improvement. Coding and testing for the 6502 is tedious. Failure is always part of programming but the slow, error prone aspects of assembly language programming make it cost even more. If your 6502 code could somehow call Julia code outside the emulator, you could prototype and test in Julia and then, after the prototype code worked properly, you could write the 6502 code, radically reducing development time and relieving a lot of pain.

Retro6502 allows you to do just that. It does not implement Julia for the 6502 instruction set but it does allow you to use Julia code during development that interoperates reentrantly with 6502 code inside the emulator. Also, you don&#8217;t have to write (or wait for) a C++ plugin to support extra features you want or need because you can just write them in Julia.

Retro6502 initially focuses on the VIC-20 and Commodore-64 6502 architectures but provides hooks for extending into other architectures like Atari, Apple II, NES, etc.

Retro6502 also supports
- A Julia REPL extension:
    * Designated pure Julia 6502 emulator instance,
    * files watching for live coding.
- Custom assembler where Julia is the scripting language,

Exciting future directions like:
- Rewindable execution (after a test, etc.)
- Scrubbing back and forth in time and starting execution in the past to make alternate timelines.
- Showing divergent future screens based on input variations.
- Debugging with breakpoints and watchpoints that invoke custom Julia code.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/FWD39E/resources/Retro6502_Talk_a5Sxtah.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/FWD39E/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FWD39E/feedback/</feedback_url>
            </event>
            <event guid='fcdd8d21-1715-538a-8b12-ae92cc5b1d59' id='52827' code='DWMEL7'>
                <room>While Loop (4.2)</room>
                <title>Effective Julia Computation as a Service</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:25</duration>
                <abstract>One of Julia&apos;s greatest strengths is processing gigabytes of tabular data in seconds. However, getting code ready for production and performant for web app users is another challenge. With Julia experience since 2015, this talk presents GLCS.io&#8217;s best practices in using Julia as a Service for large in-memory computation.</abstract>
                <slug>juliacon2024-52827-effective-julia-computation-as-a-service</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='55086'>Michael Bologna</person>
                </persons>
                <language>en</language>
                <description>Perhaps one of the longest-running Julia applications used in production (since 2015) is for medical financial modeling. This data has many columns (100+), and one model can be upwards of 10GB+ on disk. Now consider giving users access to *multiple* models from a GUI that can ask database-like questions such as filter, groupby, transform, and join.

Is this all possible to accomplish in a small number of seconds? The answer: generally, yes. After an initial start using JuliaDB.jl, [GLCS.io](http://GLCS.io) has moved away from this defunct package and utilized DataFrames.jl with a few more tricks. As a result, this database-like application has increased in stability and performance for end-users. 

This talk generically diagrams the architecture of this back-end service. We follow by covering the Julia packages utilized to make this service performant and available, ultimately resulting in a queryable endpoint that returns a database-like result set. The most important tips for writing data-heavy julia applications are discussed. Finally, we relect on where Julia can be used elsewhere and answer further questions.

This Julia success story aims to encourage industry professionals (Managers and Developers alike!) to use Julia for their existing and greenfield projects. The hope is that existing Julia users will share this story with non-Julians they know and utilize Julia for themselves and their industry!

Slides: [here](https://pretalx.com/media/juliacon2024/submissions/DWMEL7/resources/glcs_effective_julia_service_atxWiHK.pdf)

Other useful links:
- https://glcs.io
- https://blog.glcs.io
- https://github.com/GLCS</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DWMEL7/resources/glcs_effective_julia_service_atxWiHK.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DWMEL7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DWMEL7/feedback/</feedback_url>
            </event>
            <event guid='d4433265-a9e9-51ee-b6a7-323662ea280e' id='44292' code='YK9RRU'>
                <room>While Loop (4.2)</room>
                <title>PPTX.jl an open-source package by ASML</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T14:25:00+02:00</date>
                <start>14:25</start>
                <duration>00:10</duration>
                <abstract>For many companies PowerPoint presentations are a common means of communication. The PPTX.jl package allows for automatically generating PowerPoint presentations filled with pictures tables and text.</abstract>
                <slug>juliacon2024-44292-pptx-jl-an-open-source-package-by-asml</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='47276'>Xander</person>
                </persons>
                <language>en</language>
                <description>Within the Julia community there are many creative and exciting ways of presenting data, however, some companies still like the safe familiarity of a PowerPoint presentation. It may not be the most fancy way of presenting data, but it gets the job done. In this talk I would like to show an open-source contribution that ASML has made to the Julia ecosystem in the form of PPTX.jl a package that allows autmatic generation of PowerPoint presentations.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YK9RRU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YK9RRU/feedback/</feedback_url>
            </event>
            <event guid='1da3091a-cfeb-5503-b883-0e3e22cba58d' id='50740' code='9WMRXU'>
                <room>While Loop (4.2)</room>
                <title>Workflow for developing multiple interdependent packages</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:25</duration>
                <abstract>When developing a big project, there are good reasons to split it up into multiple packages. We look into the setup and workflow for developers where they need to make changes in multiple packages at once, while working with a team.

We discuss the aspects of version management, testing, compilation times and deployment. We consider where the Julia tooling limits us and what could possibly lead to improvements.</abstract>
                <slug>juliacon2024-50740-workflow-for-developing-multiple-interdependent-packages</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='53155'>Koen Rutten</person>
                </persons>
                <language>en</language>
                <description>When developing a big project, there are good reasons to split it up into multiple packages. We look into the setup and workflow for developers where they need to make changes in multiple packages at once, while working with a team.

We discuss the aspects of version management, testing, compilation times and deployment. We consider where the Julia tooling limits us and what could possibly lead to improvements.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/9WMRXU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9WMRXU/feedback/</feedback_url>
            </event>
            <event guid='70e891e1-bfe8-5f12-bcd8-8c377153065b' id='44104' code='SMPJ9S'>
                <room>While Loop (4.2)</room>
                <title>&#128663; Integrating Julia for Perception task in autonomous driving</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:10</duration>
                <abstract>The talk focuses on integrating Julia in a demonstrator car (Ford mondeo) to perform perception tasks (lidar pointcloud segmentation) in real-time. 
A special focus is set on the Phyton - Julia interface and how both languages can work well together.</abstract>
                <slug>juliacon2024-44104-integrating-julia-for-perception-task-in-autonomous-driving</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='47106'>Gerhard Dorn</person>
                </persons>
                <language>en</language>
                <description>Future autonomous vehicles need to process a million LIDAR points in real time. Julia is a perfect fit for these perception tasks including ground segmentation, creation of a semantic occupancy grid or object detection. 
The talk shows how to use Julia in the development of ML algorithms and integration process in a real car. Special focus will be at the algorithmic development process (compared to PyTorch), experience with the training phase, integration process in C++ / Python environments, parallelism and runtime issues.
The results presented in this talk have been created within the EU project AI4CSM (ai4csm.eu) (ECSEL Joint Undertaking program).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/SMPJ9S/resources/JuliaCon_IndustrialSymposium_without_videos_2_tcl3fra.pdf">Slides without videos</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/SMPJ9S/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SMPJ9S/feedback/</feedback_url>
            </event>
            <event guid='6536cb4a-7b23-536c-9f94-3edf2072c109' id='44296' code='U7JMMZ'>
                <room>While Loop (4.2)</room>
                <title>Unveiling Full Stack Development with PeaceFounder</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T15:20:00+02:00</date>
                <start>15:20</start>
                <duration>00:25</duration>
                <abstract>PeaceFounder is a centralised E2E verifiable e-voting system that enhances privacy and simplifies deployment by leveraging history trees and pseudonym braiding. This talk introduces it and highlights the use of Julia for its development, emphasising its strengths in suitability for complex, full-stack applications.</abstract>
                <slug>juliacon2024-44296-unveiling-full-stack-development-with-peacefounder</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='46577'>Janis Erdmanis</person>
                </persons>
                <language>en</language>
                <description>In conventional E2E verifiable e-voting systems such as Helios, Verificatum, ElectionGuard and others, the vote is stored in a group element, encrypted and signed with a digital identity provider, and then submitted to the bulletin board. When the vote closes, votes go through the reencryption shuffle and are decrypted in the threshold decryption ceremony. Voters can ensure that their vote has been counted by finding their encrypted vote within the list of inputs of the mix cascade. Furthermore, everyone can verify the final tally by counting the decrypted votes and verifying supplemented zero-knowledge proofs without compromising privacy. In this way, the integrity of the election result can be assured.

However, issues like forced abstention and potential vote substitution of unverified votes can happen if authorities are corrupt and auditing/monitoring does not occur. Publishing vote-casting signatures can alleviate many of those issues, but that violates participation privacy. The threshold decryption ceremony further compounds the system&apos;s complexity; if more than a few collude, votes remain encrypted, while a low threshold risks privacy breaches. The result is that deploying current E2E verifiable voting systems is the unreachable goal for small and medium-sized organisations if privacy, integrity and robustness are assured. 

PeaceFounder is an alternative approach that is the first to revitalise the work proposed by Haenni &amp; Spycher and improve it using history trees. The immutability of the bulletin board is maintained replication-free by voter&#8217;s client devices with locally stored consistency-proof chains. Meanwhile, pseudonym braiding done via an exponentiation mix before the vote allows anonymisation to be transactional with a single braider at a time. In contrast to existing E2E verifiable e-voting systems, it is much easier to deploy as the system is fully centralised, free from threshold decryption ceremonies, trusted setup phases and bulletin board replication. Furthermore, the body of a vote is signed with a braided pseudonym, enabling unlimited ballot types.

You might wonder why Julia is for such a project. Julia is known for high-performance computing but has yet to be the first pick for e-voting systems, cryptographic protocols or, in fact, full-stack applications. However, its rich ecosystem and code readability, adaptability, and performance make it an excellent choice. Furthermore, Julia&apos;s robust type system and multiple dispatch capability have been instrumental in precisely modelling and efficiently implementing the core structures of PeaceFounder.

In the talk, following the introduction, I&apos;ll present a brief demo of the system. This will include server setup, registration of members, braiding, proposal announcement, voting, and, finally, the overview and auditing of the public evidence. Then, after the short demo, I will outline the project&apos;s requirements and how Julia ecosystem helps to address those needs.

The last part of the talk will concern an obvious question of why the project is not done in the Rust. The reasons will include reliance on heterogonous lists, garbage collection, and operator overloading for cryptographic operations to keep the notations aligned with pseudocodes in the papers. A rich standard library has been a big plus. In contrast, using complex external libraries like QML or SMTPClient without worrying about compilation and linking issues has been a stellar experience. Furthermore, parallelising a proof of shuffle (if the scaling ever would need to be addressed) would be a much more pleasant experience in Julia as it is a simple HPC problem and even allows to explore the utilisation of GPU with elliptic curves on binary fields while also maintaining readability of the code. 

However, the lack of ability to deploy mobile apps written in Julia will likely make Rust relevant in the future, and this will be fine. Meanwhile, figuring out the exact details of how the PeaceFounder should function and include all imaginable features that do not impede deployability is much easier in Julia. Ultimately, a detailed specification of the PeaceFounder system will be necessary, and it&apos;s better if this specification is tested in practice rather than remaining theoretical. 

Through this talk, I present a convincing case for Julia as a viable candidate for complex full-stack applications. Additionally, I will introduce the PeaceFounder e-voting system, which may inspire some to try its deployment, report issues, and contribute to the project.

For more details on the system, refer to a preprint that expanded upon work presented as [a poster at the EVoteID 2023](https://janiserdmanis.org/artefacts/EVOTEID-2023-poster.pdf). The preprint is available at https://eprint.iacr.org/2024/1040.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="http://peacefounder.camdvr.org">A Demo Set Up on Raspberry PI</link>
                
                    <link href="https://github.com/PeaceFounder/PeaceFounder.jl">GitHub</link>
                
                    <link href="https://github.com/PeaceFounder/PeaceFounderClient/releases/tag/v0.1.0-alpha">PeaceFounder Client Installers</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/U7JMMZ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/U7JMMZ/feedback/</feedback_url>
            </event>
            <event guid='e86e09b7-0548-558e-a121-0ac76f613e7e' id='43540' code='VCPCRS'>
                <room>While Loop (4.2)</room>
                <title>Julia at Fugro</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T15:45:00+02:00</date>
                <start>15:45</start>
                <duration>00:10</duration>
                <abstract>Fugro is a global leader in geospatial data analytics, and as a part of our product workflows we need to deal with large amounts of data as efficiently as possible. In this presentation, we will describe how we use Julia to accelerate our HPC applications and how we integrate this with Amazon Web Services to distribute computing on the cloud. We will also cover some of the challenges and the insights we&#8217;ve gained on working with Julia in industry.</abstract>
                <slug>juliacon2024-43540-julia-at-fugro</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='46587'>Ben Curran</person><person id='46588'>Dr. Megan Dawson</person>
                </persons>
                <language>en</language>
                <description>Here at Fugro, we process large amounts of geospatial data in numerous HPC workflows to provide our clients with insights about real-world assets. Efficient processing enables faster delivery times for clients and reduced costs. We write our applications in Julia and have built systems using Github Actions that can seamlessly integrate these applications with cloud infrastructure hosted by Amazon Web Services (AWS).  

In this talk, we will outline our process at Fugro to develop a production-ready HPC application with Julia. This will start with how we build these packages into binary system images and integrate them into docker images. We will then show how to use AWS and Github to deploy these docker images to a cloud environment, as well as some design considerations along the way to ensure you get the most out of your application. Throughout we will share our experiences and lessons learnt for anyone starting or considering using Julia in an industrial application.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VCPCRS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VCPCRS/feedback/</feedback_url>
            </event>
            <event guid='2cd37dd0-c3e0-594f-bcf4-f0fafa54b097' id='43442' code='F8VJAC'>
                <room>While Loop (4.2)</room>
                <title>How a Julia Backend Accelerates Model Based App Development</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-11T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:25</duration>
                <abstract>Integrating a model into a useful application is made challenging with today&apos;s tools.  The difference in productivity that Julia offers for model-based app development creates a paradigm shift.  This talk will demonstrate the workflow for developing a model integrated into an algorithm and application business logic in pure Julia, then wrapped in a c# windows desktop frontend.  Benefits of this framework will be demonstrated and compared with an alternative Modelica workflow.</abstract>
                <slug>juliacon2024-43442-how-a-julia-backend-accelerates-model-based-app-development</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='46489'>Bradley Carman</person><person id='46491'>Avinash Subramanian</person>
                </persons>
                <language>en</language>
                <description>One of the biggest inefficiencies engineers and developers face when integrating a model into a useful algorithm or application is the dual language problem.  Tools for building mathematical models are often designed purely for that task alone and are not written in a full featured programming language that allows the user to consume the model in a more useful way, such as integrating into a deployable application.  The difference in productivity that Julia offers having solved the dual language problem offers a paradigm shift for model-based app development.  This talk will demonstrate the workflow for developing a model using ModelingToolkit.jl and then integrating the model into a c# Windows based desktop application.  The process of discovering a model bug at the end of the workflow and how this can be fixed nearly instantaneously will be demonstrated and compared with a Modelica workflow, proving an orders of magnitude improvement in development efficiency.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/F8VJAC/resources/How_a_Julia_Backend_Accelerates_Model_Based_Ap_qsCS8E5.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/F8VJAC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/F8VJAC/feedback/</feedback_url>
            </event>
            <event guid='74ac8812-2453-5c77-8f6f-d6e31ad852d0' id='44369' code='ABAQSK'>
                <room>While Loop (4.2)</room>
                <title>TulipaEnergyModel.jl: An efficient and flexible energy model</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-11T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:10</duration>
                <abstract>TulipaEnergyModel.jl is a Julia/JuMP package developed by TNO and eScience Center that models the electricity market and its coupling with other energy sectors (e.g., hydrogen, heat, natural gas, etc.). Its main features are flexible connection based on graph theory, flexible temporal resolution, and the use of representative periods without losing accuracy.</abstract>
                <slug>juliacon2024-44369-tulipaenergymodel-jl-an-efficient-and-flexible-energy-model</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='47354'>Diego Tejada</person><person id='54528'>Lauren Clisby</person>
                </persons>
                <language>en</language>
                <description>TulipaEnergyModel.jl provides an optimization model for the electricity market and its coupling with other energy sectors (e.g., hydrogen, heat, natural gas, etc.). The optimization model determines the optimal investment and operation decisions for different types of assets (e.g., producers, consumers, conversion, storage, and transport). Currently, TulipaEnergyModel.jl has two main core features. The first one uses graph theory for a more adaptable model representation. This representation provides a more flexible framework to model energy assets in the system as vertices, and to model flows between energy assets as edges. This carrier-agnostic approach makes it adaptable to different systems. Furthermore, in the classic approach, nodes play a crucial role in modelling. By implementing our approach, as the nodes are no longer needed to connect assets, we can connect assets directly to each other, thus reducing the model size. The other core feature is fully flexible time resolution. TulipaEnergyModel.jl can handle different time resolutions on the assets and the flows even if they are not multiples of each other. Typically, the time resolution in an energy model is hourly and fixed through most of the model. Depending on the input data and the level of detail you want to model, hourly resolution in all the variables might not be necessary. TulipaEnergyModel.jl allows different time resolutions for each asset and flow to simplify the optimization problem and approximate hourly representation. This feature is particularly useful for large-scale energy systems that involve different sectors, so greatly speeding solving times since detailed granularity is not always necessary due to the unique temporal dynamics of each sector.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/TulipaEnergy/TulipaEnergyModel.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ABAQSK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ABAQSK/feedback/</feedback_url>
            </event>
            <event guid='bcb31671-3151-5715-9fbf-764571ed5325' id='41880' code='VWDUHM'>
                <room>While Loop (4.2)</room>
                <title>Industrial Julia Panel Discussion</title>
                <subtitle></subtitle>
                <type>Minisymposium</type>
                <date>2024-07-11T16:40:00+02:00</date>
                <start>16:40</start>
                <duration>00:20</duration>
                <abstract>A minisymposium dealing with the social and technical challenges of adopting Julia in an industrial environment. Speaking out on the qualms that we -- and our colleagues -- have with the language, we can start to address the real bottlenecks. At the same time, we indubitably have much to learn from each other&apos;s experiences. It could also be a motivation for others to start to make the push for Julia in their organization.</abstract>
                <slug>juliacon2024-41880-industrial-julia-panel-discussion</slug>
                <track>Industrial Julia</track>
                
                <persons>
                    <person id='45145'>Keith Myerscough</person><person id='47901'>Tom Lemmens</person>
                </persons>
                <language>en</language>
                <description>Call for Proposals:
Have you deployed Julia in an industrial setting? Have you tried to teach your colleagues about Julia? We are keen to learn from you about the ups and downs of these experiences. 

We are aiming to make this an open session with plenty of room for discussion with the goal of improving the adoption of Julia as an industrial language. This can focus both on actions we can immediately take ourselves as well as on actions that require input from the wider Julia community and/or the Julia core developers.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VWDUHM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VWDUHM/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='4' date='2024-07-12' start='2024-07-12T04:00:00+02:00' end='2024-07-13T03:59:00+02:00'>
        <room name='REPL (2, main stage)' guid='5c6ee87c-db8a-5bb4-a19f-c5cdf33da22a'>
            <event guid='c6ada548-d1ca-5610-8b0f-b6eba9742123' id='53125' code='7V7FX8'>
                <room>REPL (2, main stage)</room>
                <title>Opening Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-12T08:50:00+02:00</date>
                <start>08:50</start>
                <duration>00:10</duration>
                <abstract>Opening the last day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</abstract>
                <slug>juliacon2024-53125-opening-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>Opening the last day of JuliaCon Global 2024 at Eindhoven with organizing committee chair Raye Kimmerer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/7V7FX8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7V7FX8/feedback/</feedback_url>
            </event>
            <event guid='48518b37-8974-5cc0-b4a4-0715311c8a0a' id='45605' code='H3LLTK'>
                <room>REPL (2, main stage)</room>
                <title>Natural Artificial Intelligence</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-12T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>01:00</duration>
                <abstract>Large language model-based chatbots such as chatGPT are very impressive, but you cannot ask them to go out and learn how to ride a bike. Learning how to ride a bike is about an agent that learns a skill through efficient, real-time interactions with a dynamic environment. In this presentation, I will discuss the underlying technology that enables brains to learn new skills and acquire knowledge solely through unsupervised environmental interactions.</abstract>
                <slug>juliacon2024-45605-natural-artificial-intelligence</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47180'>Bert de Vries</person>
                </persons>
                <language>en</language>
                <description>Large language model-based chatbots such as chatGPT are very impressive, but you cannot ask them to go out and learn how to ride a bike. Learning how to ride a bike is about an agent that learns a skill through efficient, real-time interactions with a dynamic environment. In this presentation, I will discuss the underlying technology that enables brains to learn new skills and acquire knowledge solely through unsupervised environmental interactions. How much do we understand about what brains compute? And is this knowledge transferable to AI engineering systems? I will discuss Karl Friston&#8217;s Free Energy Principle, which is the theory on what, why and how brains compute. I will also discuss the efforts of our research lab (http://biaslab.org) at TU Eindhoven to develop a Julia ecosystem of packages to support transfer of these ideas to working AI engineering tools.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/H3LLTK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/H3LLTK/feedback/</feedback_url>
            </event>
            <event guid='a6173fe0-880c-5ad7-879c-2e6886766bb2' id='44236' code='KMKBYH'>
                <room>REPL (2, main stage)</room>
                <title>CodeEvaluation.jl: emulating Julia code evaluations</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>[CodeEvaluation.jl](https://github.com/JuliaDocs/CodeEvaluation.jl) and its companion [IOCapture.jl](https://github.com/JuliaDocs/IOCapture.jl) are two small Julia packages that offer simple interfaces for emulating(*) Julia code execution (e.g. when evaluating code examples in documents). The talk will give a brief overview of the packages&apos; interfaces, and discusses the challenges of trying to emulate Julia code execution.</abstract>
                <slug>juliacon2024-44236-codeevaluation-jl-emulating-julia-code-evaluations</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47461'>Morten Piibeleht</person>
                </persons>
                <language>en</language>
                <description>CodeEvaluation.jl is a higher-level package that offers an interface for executing Julia code snippets, and then capturing the outputs. You provide a code snippet as a string, and the package then tries to run it as if you pasted it into a clean REPL or started it as a script from the command line. The captured outputs aim to be a faithful representation of what you would see in the terminal.

One non-trivial piece of the puzzle is the output capture. IOCapture.jl is a lightweight package that offers a simple interface to capture outputs (in particular, the standard output and error streams, and also the output from the logging macros) from arbitrary code execution, hiding away the complexity from you.

Their main users for these packages is tooling that evaluates user-written code snippets, such as documentation and report generators. The code in these packages has been battle tested in the Documenter.jl code base for a long time, and is now factored out in the hopes is that it will be useful people writing similar tools.

Acknowledgments: much of the hard implementation work was done by other contributors, and my main contribution here is factoring this into a separate package.

(*) Just for clarity, the CodeEvaluation is not a Julia emulator, but evaluates the code snippets in the running Julia process. However, does tricks to make it look as if the code is running in a clean Main module.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaDocs/CodeEvaluation.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/KMKBYH/resources/Emulating_Julia_code_evaluation_Fa9kK6M.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/KMKBYH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KMKBYH/feedback/</feedback_url>
            </event>
            <event guid='f4d6b0dd-14a9-54ea-aaeb-bf244a9c0560' id='43245' code='DBKMFD'>
                <room>REPL (2, main stage)</room>
                <title>Building a customized application dashboard with Pluto.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>This project goes through the process of building an application dashboard with Pluto.jl. Although Pluto provides an excellent way to interact with notebooks, the result is always... well, a notebook! We exploit Pluto&apos;s flexible design and reactivity to customize it with a clear objective: make it look more like a dashboard and less like a notebook! But Julians are greedy, so we want to combine them by offering a &quot;secret&quot; developer mode for advanced users. Let&apos;s make Pluto-dashboards a thing!</abstract>
                <slug>juliacon2024-43245-building-a-customized-application-dashboard-with-pluto-jl</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/DBKMFD/dashboard_overview_26cqoDb.png</logo>
                <persons>
                    <person id='45233'>Filippos Christou</person><person id='46334'>Niels Hermsen</person>
                </persons>
                <language>en</language>
                <description>## Motivation for a [Pluto.jl](https://plutojl.org/) dashboard
Dashboards are a great way for users to interact with a large set of information. They are lightweight, trivial to use, and appealing. On the other hand, [Pluto.jl](https://plutojl.org/) is a Julia package that is excellent for experimenting with all kinds of Julia code using notebooks. [Pluto.jl](https://plutojl.org/) notebooks integrate code and their output in a browser and provide flexible bindings with HTML, CSS, and JavaScript. In this talk we will demonstrate how these two can be combined!

## Previous efforts
There has been **independent** previous work on creating reactive dashboards with [Pluto.jl](https://plutojl.org/). 

- [Visualization Dashboards with Pluto](https://www.youtube.com/watch?v=dP9UuEL00iM) uses [Pluto.jl](https://plutojl.org/)&apos;s isolated cell view to only show cell outputs instead of using JavaScript scripts to move or hide certain notebook parts. 
- [Pluto, Dashboards and ... Excel](https://www.youtube.com/watch?v=nRmLfB-bKdc) aims to create a dashboard with adding a new mode to notebooks where one can freely move cells around.

Both projects make it easy for the user to create a dashboard, but offer less fredoom that one would have with using JavaScript scripts combined with HTML and CSS, like we do it in our approach.


## Presentation content
- Motivation behind the project, why is it useful for the community and why can&apos;t we just use a normal notebook?
- Using [Pluto.jl](https://plutojl.org/) to add HTML elements to the notebook as well as deploy JavaScript and modify the whole notebook.
- Simplifying things and wrapping functionality in an external package.
- Fusing everything together and creating a [Pluto.jl](https://plutojl.org/) dashboard!
- A little bit about the future of the project.

## Background
[Pluto.jl](https://plutojl.org/) notebooks consist of so-called cells that are filled with Julia code and output the result. The output can also be HTML code, which is appropriately rendered in the output section of that cell. The HTML code can also contain a `&lt;script&gt;` tag, so we can write custom JavaScript which is then executed in the browser. To make the application interactive, [Pluto.jl](https://plutojl.org/) offers a macro to bind custom HTML elements (e.g. buttons, sliders) to a Julia variable. 
The most interesting part is also the simplest, just bare [Pluto.jl](https://plutojl.org/) cells! We can move them on the dashboard and thus give the user the ability to add custom Julia code to the dashboard! This code can be everything, e.g. printing variables that aren&apos;t visible from the outside or even modifying parts of the dashboard - all limited by the user&apos;s creativity!

## Building the dashboard
With all those functionalities, it is possible to

- Render custom HTML code as output of a cell
- Resize cell outputs to be fullscreen as well as move cells or hide [Pluto.jl](https://plutojl.org/) HTML elements completely
- Load custom CSS frameworks like Bootstrap or Tailwind
- Make custom interactive HTML elements that interact with the notebook as in triggering a change of a Julia variable
- Give advanced users the possibilty to write Julia code in traditional [Pluto.jl](https://plutojl.org/) cells

To keep the notebook file clean, we wrote a package that contains all needed functions which can directly be used by a notebook to build a dashboard.

## Working example
The current working example of such a dashboard in [Pluto.jl](https://plutojl.org/) focuses on the libraries [MINDFul.jl](https://github.com/UniStuttgart-IKR/MINDFul.jl) and [MINDFulMakie.jl](https://github.com/UniStuttgart-IKR/MINDFulMakie.jl). They are simulation tools for intent-based multi-domain networking, which means we can create, edit and visualise connectivity intents, a perfect use case for a dashboard to show off capabilities of a library. The dashboard has buttons and drop down menus for creating and editing intents as well as boxes to put the plots which visualise those intents in. On top of that, we also have a developer mode, which gives the user access to [Pluto.jl](https://plutojl.org/) cells, so they can tinker with the library and do more advanced things - limited by the creativity of the user!
A static HTML export of said notebook can be found [here](https://unistuttgart-ikr.github.io/MINDFulNotebookExamples.jl/plutodash.html). The full notebook with instructions on how to run it can be found [here](https://github.com/UniStuttgart-IKR/MINDFulNotebookExamples.jl)!

## Where to?
Currently all work goes into creating one customized dashboard which doesn&apos;t scale fast, that&apos;s why we have high interests in building a general framework to allow other users with interests in building a [Pluto.jl](https://plutojl.org/) dashboard creating those easier! In the future there will be a discussion about this project, where it will be decided whether we create said framework.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DBKMFD/resources/intent_table_Y6xdanp.png">Table of created intents</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DBKMFD/resources/devmode_tCJtClf.png">Developer mode</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DBKMFD/resources/presentation_pfsr1Zh.pdf">presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DBKMFD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DBKMFD/feedback/</feedback_url>
            </event>
            <event guid='6dd38ce1-116a-5683-b98c-e9d9f670f626' id='53113' code='TPVJ8Z'>
                <room>REPL (2, main stage)</room>
                <title>Building Bridges with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Sioux is a high-tech service provider in the brainport region. Its Mathware department has a long-standing history as a technology translator, linking novel research to real-world applications. In this talk, I will showcase how we are adopting the Julia language for this purpose.</abstract>
                <slug>juliacon2024-53113-building-bridges-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='45145'>Keith Myerscough</person>
                </persons>
                <language>en</language>
                <description>Sioux is a high-tech service provider in the brainport region. Its Mathware department has a long-standing history as a technology translator, linking novel research to real-world applications. In this talk, I will showcase how we are adopting the Julia language for this purpose.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TPVJ8Z/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TPVJ8Z/feedback/</feedback_url>
            </event>
            <event guid='74298533-7552-5f90-9471-3c1fbaf11ddf' id='43593' code='HRW3EU'>
                <room>REPL (2, main stage)</room>
                <title>Molly.jl: Molecular dynamics in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>Much of science can be explained by the movement and interaction of molecules. Molecular dynamics (MD) is a computational technique used to explore these phenomena, from noble gases to biological macromolecules. Molly.jl is a pure Julia package for MD, and for the simulation of physical systems more broadly. This talk will introduce Molly.jl and its features, which include a flexible interface for custom interactions and support for differentiable simulations.</abstract>
                <slug>juliacon2024-43593-molly-jl-molecular-dynamics-in-julia</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46634'>Joe Greener</person>
                </persons>
                <language>en</language>
                <description>Molecular dynamics (MD) is the physical simulation of a molecular system using Newton&apos;s equations of motion. It can be used to gain mechanistic insight into experiments and to make predictions. There are a variety of mature, widely-used packaged for MD including Gromacs, NAMD, LAMMPS and OpenMM. Due to the performance requirements of MD, however, these all consist of an interface layer and fast code running under the hood in one or more low-level languages.

Julia presents an opportunity to write a MD package in the same language all the way down, making it easier to interact with and extend. Molly.jl, which has grown steadily since its inception in 2018, is such a package. It has had 13 non-trivial contributors and has been the focus of 3 Summer of Code projects. This talk will introduce Molly.jl including its features, its unique selling points, and the challenges of competing with mature software whilst allowing differentiability.

Implemented features include classical biomolecular force field potentials, various integrators and thermostats, Monte Carlo simulation, enhanced sampling methods, support for different boundary types, and some analysis functions. The package is designed to be modular and extensible, with user-implemented potentials and simulators being as fast as the built-in versions. There is support for different precision and custom number types; for example, the recommended approach is to use Unitful.jl to ensure that all quantities have compatible units. The flexible logging interface allows user-defined properties to be recorded during a simulation, and there is simple functionality to animate trajectories using GLMakie.jl. Molly.jl is part of the JuliaMolSim ecosystem and is compatible with the AtomsBase.jl interface, allowing interoperability with packages such as ACEpotentials.jl and DFTK.jl.

The emerging research field of differentiable molecular simulation (DMS) uses automatic differentiation, the technique usually used to train neural networks, to improve the force fields used in MD. DMS can also be used to train neural networks. It usually requires specialist MD software such as Jax MD or TorchMD. Molly.jl allows fast differentiable simulations of biomolecules on multi-threaded CPU and GPU by making use of Zygote.jl and Enzyme.jl. The ability to take gradients through GPU kernels written in a high-level language with CUDA.jl is a unique feature of Julia.

To date Molly.jl has been used in research to improve biomolecular force fields with differentiable simulation and to compute transport coefficients. It is starting to attract users from the materials modelling and machine learning potential communities due to its flexibility and ease of use within the wider Julia package ecosystem. Future developments including bond and angle constraints, Ewald summation methods, better system setup and faster GPU performance aim to make Molly.jl a widely useful package for biomolecular simulation.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://docs.google.com/presentation/d/1E7Ez4WQAOfizXirQdsILZp1UZfgV0U_BBoxEQm86ZVE/edit?usp=sharing">Talk slides</link>
                
                    <link href="https://github.com/JuliaMolSim/Molly.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HRW3EU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HRW3EU/feedback/</feedback_url>
            </event>
            <event guid='3b9cb3d1-55a4-5d87-ac5c-1e1ac803c30d' id='39351' code='PSNXJ9'>
                <room>REPL (2, main stage)</room>
                <title>Migrating from Julia 0.4 to Julia 1.6</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>When Julia 1.0 was released several years ago, we were faced with the challenge of migrating over our large Julia 0.4 codebase while making sure our customers didn&apos;t notice a thing. This talk is a story about reassessing life choices, keeping customers happy, and a quick build, slow release, 5 year, 40 step migration from 0.4 to 1.6. We hope to never have to do this again!</abstract>
                <slug>juliacon2024-39351-migrating-from-julia-0-4-to-julia-1-6</slug>
                <track>General</track>
                
                <persons>
                    <person id='43274'>Philip Tellis</person>
                </persons>
                <language>en</language>
                <description>We started our Julia journey with version 0.2 over 10 years ago, and upgraded fairly quickly up to 0.4.7 as new versions were released. Then we started getting more customers, and our APIs stabilised, and migrations became expensive, so we sat at 0.4.7, watching every quarter as various dependencies reached the end of their supported lives.

Given that migrations were expensive, we knew that whenever we migrated, it we&apos;d have to make it count for many years to come. We started migrating our code to 1.0, deciding to skip all the advice about migrating to 0.7 first.  While this was happening, Julia moved to 1.1, 1.2, 1.3, 1.4, and 1.5, so we decided to jump to 1.5 instead, and then Julia released 1.6.

Over the course of the migration we developed a series of 40 steps that allowed us to change the underlying library while requiring only minimal changes to our customers&apos; code.

In this talk, we will quickly go over some of the more surprising changes we&apos;ve had to make. We will not discuss plans for 1.10 or 1.11.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://speakerdeck.com/bluesmoon/migrating-from-julia-0-dot-4-to-1-dot-6">Online Presentation</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PSNXJ9/resources/Migrating_from_Julia_0.4_to_1.6_P0Nzf1Y.pdf">Downloadable Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PSNXJ9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PSNXJ9/feedback/</feedback_url>
            </event>
            <event guid='ca8b3b7f-6484-50d1-b6c8-ed99f5fb9fa7' id='43430' code='P8E8D9'>
                <room>REPL (2, main stage)</room>
                <title>JuliaHub&apos;s AskAI: Enhancing ChatGPT with julia-specific context</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>How can you teach ChatGPT to write well informed Julia code? In this talk we&#8217;ll address the basic retrieval augmented generation (RAG) ideas that back JuliaHub&#8217;s AskAI feature; one of the most popular code generation tools for Julia.</abstract>
                <slug>juliacon2024-43430-juliahub-s-askai-enhancing-chatgpt-with-julia-specific-context</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='46478'>Panagiotis Georgakopoulos</person>
                </persons>
                <language>en</language>
                <description>JuliaHub&#8217;s AskAI feature has been generating good Julia code since the Spring of 2023. To power it up, we are processing a big archive of julia knowledge, and we are combing through it, to find the most relevant knowledge regarding the user&#8217;s query. In this talk we will discuss issues with Julia documentation maintenance, the splitting of this knowledge into chunks the retrieval and the context engineering required to achieve improved performance over plain ChatGPT. We&#8217;ll show that our methods improve ChatGPT (3.5) at least over two dimensions:
 
- serving the latest relevant information and 
- reducing the hallucinations that make ChatGPT think that Julia is just python.jl

Finally we&#8217;ll discuss limitations and next steps in Julia code generation, along with potential integrations into IDEs (Pluto, Jupyter)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/P8E8D9/resources/20240712_-_JuliaHubs_AskAI_1_a5HCet7.pdf">slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/P8E8D9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/P8E8D9/feedback/</feedback_url>
            </event>
            <event guid='07907f45-a466-5714-98bb-cbbeee7520ad' id='43600' code='DBXQMA'>
                <room>REPL (2, main stage)</room>
                <title>What&apos;s new with Turing.jl and its ecosystem</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Turing.jl is a probabilistic programming language in Julia which have been around for a while now. Over the years it has seen a steady increase in use and adoption, with many users and contributors.

Moreover, over the past few years Turing.jl has seen a lot of development in terms of new features and improvements, both in its core and in the surrounding ecosystem.

And so in this talk I will give an overview of the current state of Turing.jl and where it is headed in the future.</abstract>
                <slug>juliacon2024-43600-what-s-new-with-turing-jl-and-its-ecosystem</slug>
                <track>General</track>
                
                <persons>
                    <person id='46766'>Tor Erlend Fjelde</person>
                </persons>
                <language>en</language>
                <description>Turing.jl is a probabilistic programming language in Julia, i.e. a framework that let&apos;s you do Bayesian inference for your problem at hand without too much hassle.

Turing.jl is one of the older packages in Julia, with the first commits dating all the way back to when Julia was a mere v0.4. Since then it has seen a steady increase in use and adoption, with many interesting applications and contributions. And as Julia has matured and improved, so has Turing.jl.

In addition to development on Turing.jl itself, the TuringLang team has also been working on a number of other packages that feed into the Turing ecosystem with the aim of modularizing the ecosystem and making it easier to use and extend, both inside and outside of Turing.jl.

And so, as we just passed Julia v1.10 and internal whispers of the first major release (v1.0) of Turing.jl are forming, I thought it would be a good time to give an overview of the current state of Turing.jl and what the future holds. I&apos;ll also give an overview over the full ecosystem of packages that make up the Turing ecosystem and how this can be used to hook your code into the Turing ecosystem or simply use it to build your own stuff on top of. Finally, I&apos;ll showcase some success stories of people using Turing.jl to solve real-world problems.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/DBXQMA/resources/2024-07-12-Turingjl-JuliaCon2024_rk23YDK.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/DBXQMA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DBXQMA/feedback/</feedback_url>
            </event>
            <event guid='c3cabe7a-d425-588f-a9db-669c67949112' id='44160' code='MGRXYP'>
                <room>REPL (2, main stage)</room>
                <title>Julia.Kitchen &#128104;&#8205;&#127859;: The finest Julia recipes!</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Julia documentation is one of the sore points and usual barrier to entry for newcomers. To try to solve this we setup a website where curated examples and recipes can be contributed and shared to the community!</abstract>
                <slug>juliacon2024-44160-julia-kitchen-the-finest-julia-recipes</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47156'>Jorge Alberto Vieyra Salas</person>
                </persons>
                <language>en</language>
                <description>Julia documentation is one of the sore points and usual barrier to entry for newcomers.
Users coming from MATLAB suffer because MathWorks documentation has been curated and refined for commercial use. Python users have the advantage of python&apos;s ubiquity ... even though arguably python&apos;s documentation is as good or bad as Julia&apos;s there is *a lot* of it! 

With Julia.kitchen we are trying to provide documentation, examples and most important recipes a place to exist and to share.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MGRXYP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MGRXYP/feedback/</feedback_url>
            </event>
            <event guid='11dccbd6-9dbd-5d32-bf4a-e535bf81a853' id='44388' code='ZH3JN3'>
                <room>REPL (2, main stage)</room>
                <title>Python.jl&#8212;Seamlessly blend Python and Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Python.jl takes seamless language blending to a new level, nearly creating a superset of Python and of Julia simultaneously. As an experiment on taking &quot;just works&quot; and &quot;magical behavior&quot; to the extreme, this package is not viable for use in critical applications but still provides insight on what is possible within a Julia package. In just a few hundred loc, this package uses dual parsing, language detection, and global variable transfer to create a remarkably native dual-language experience.</abstract>
                <slug>juliacon2024-44388-python-jl-seamlessly-blend-python-and-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47368'>Lilith Hafner</person>
                </persons>
                <language>en</language>
                <description>Slide link: https://raw.githack.com/LilithHafner/JuliaCon2024_Python_Talk/main/reveal.js/index.html

This talk will include demonstrations of Python.jl&apos;s capabilities; a description of how it enables those features; demonstrations of its failings and various tricky to reconcile differences between the two languages; and finally a discussion on what we can learn from a package like this. I hope that this talk will have impressive demos; a comedic air (as the package is of a lighthearted and exploratory nature); and provide insights into the possibilities uncovered when taking embedding DSLs into Julia to the extreme.

The source code is available for review at https://github.com/LilithHafner/Jokes/tree/main/Python</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/LilithHafner/Jokes/blob/main/Python/README.md">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZH3JN3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZH3JN3/feedback/</feedback_url>
            </event>
            <event guid='04c96143-066f-5657-8140-f2372decea0d' id='39781' code='MSHLDP'>
                <room>REPL (2, main stage)</room>
                <title>Kezdi.jl: A data analysis package for economists</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>This talk introduces Kezdi.jl, a Julia package designed to ease the transition for Stata users into Julia&apos;s data analysis ecosystem. Recognizing Stata&apos;s limitations with big data and its cost, Kezdi.jl offers Stata-like syntax for data wrangling, exploratory analysis, and regression in Julia, leveraging the strengths of DataFrames.jl and Tidier.jl. The presentation will discuss the challenges Stata users face in adopting open source alternatives, and demonstrate Kezdi.jl&apos;s capabilities.</abstract>
                <slug>juliacon2024-39781-kezdi-jl-a-data-analysis-package-for-economists</slug>
                <track>Economics</track>
                
                <persons>
                    <person id='43763'>Mikl&#243;s Koren</person>
                </persons>
                <language>en</language>
                <description>Stata (registered TM) is widely used by economists for data wrangling, exploratory analysis and regressions. Its scripting language is easy to learn and provides a user friendly syntax for these tasks. There is a large and active community of Stata users, discussing problems and developing custom packages. 

The cost of Stata and its performance limitations with big data encourage analysts to seek open source alternatives. Switching to popular R, Python or Julia solutions, however, requires very different syntax and, more importantly, mental models for analysts. 

The aim of our package, Kezdi.jl, is to help Stata users adopt Julia as their main language for data analysis. It implements the key data wrangling, exploratory analysis and regression operations in Julia, using Stata-like syntax. Inspired by and building on DataFrames.jl and Tidier.jl, it provides a user interface familiar for Stata users, while retaining the flexibility and high performance of Julia.

The talk will illustrate the problem and the gap between existing solutions and user needs. We will showcase the Kezdi.jl implementation of the most widely used data analysis commands and discuss further development plans.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://cdn.thnk.ng/html/JuliaCon2024/">Slides</link>
                
                    <link href="https://docs.koren.dev/Kezdi.jl/">Documentation</link>
                
                    <link href="https://github.com/codedthinking/Kezdi.jl/">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MSHLDP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MSHLDP/feedback/</feedback_url>
            </event>
            <event guid='751139ed-a565-52a0-8138-f1c64a2cfbfe' id='44429' code='8Y9WVR'>
                <room>REPL (2, main stage)</room>
                <title>Horus - Robust Background Jobs in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Many interactive applications will, at some point, need to move work out of the primary user loop, into a background process that operates asynchronously. To do this easily, scalably, efficiently and robustly is a non trivial problem. This talk introduces _Horus.jl_, a Julia package that makes it easy create and run background jobs in any Julia application.</abstract>
                <slug>juliacon2024-44429-horus-robust-background-jobs-in-julia</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47403'>Avik Sengupta</person>
                </persons>
                <language>en</language>
                <description>Users expect interactive applications to always be responsive, even when doing large computations, or connecting to to unstable network services such as mail servers. So when an application needs heavy compute, or to perform action such as sending emails that don&apos;t need to be finished before a response is sent back to the user, a background job can be used to shift the work out of the main user loop. 

This can be done somewhat trivially with a thread or even an async task. However, that does not account for some requirements of robust multiuser systems. What happens if the application server crashes before the background job is completed?  How do you distribute the load if a large number of simultaneous request are received? What happens if the task depends on a service (say a mail server) that is down at the moment?  

*Horus.jl* is a new Julia package that allows you to create background jobs easily. It uses Redis as a transactional queue, and that job will run successfully only once. It provides facilities for error handling and retries. It provides somewhat similar functionality, in Julia, to Python libraries such as Celery, or Ruby libraries like Sidekick. It is the missing piece to building large interactive applications in Julia.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8Y9WVR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8Y9WVR/feedback/</feedback_url>
            </event>
            <event guid='37cf673d-dbee-59c3-8ea9-f239679a2f1e' id='44499' code='NYEBZW'>
                <room>REPL (2, main stage)</room>
                <title>Service monitoring with Prometheus.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>[Prometheus](https://prometheus.io/) is an open-source monitoring system designed for reliability and scalability and is widely used to collect and analyze metrics from running systems and applications. In this talk I will present [Prometheus.jl](https://github.com/fredrikekre/Prometheus.jl) which is Prometheus client library written in Julia.</abstract>
                <slug>juliacon2024-44499-service-monitoring-with-prometheus-jl</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47449'>Fredrik Ekre</person>
                </persons>
                <language>en</language>
                <description>To collect metrics Prometheus *pulls* data from the server. In practice this means that Prometheus periodically sends an HTTP request to the server, and the server responds with the metrics it currently exposes. A metric can be almost anything, for example the total number of HTTP requests the server have received, or the total amount of allocated memory. On the server side it is thus necessary with a client library that gathers the metrics and responds to the HTTP request.

In this talk I will present the Julia client library [Prometheus.jl](https://github.com/fredrikekre/Prometheus.jl) which seemlessly enables Prometheus integration for services running Julia. I will showcase the available functionality and demonstrate how to integrate into an existing Julia application. Finally, as a case study, I will discuss how Prometheus.jl has been integrated into the global package server network behind Pkg.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NYEBZW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NYEBZW/feedback/</feedback_url>
            </event>
            <event guid='1c1823ed-3e0d-591c-a22f-476202c13bd3' id='43274' code='83ZWZN'>
                <room>REPL (2, main stage)</room>
                <title>RxEnvironments: Reactive multi-agent environments</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>In reinforcement learning problems, interactions between an agent and its environment are simulated in discrete time steps: after a pre-determined amount of time passes, the agent and environment exchange observations and actions that are used to generate new observations for the agent, etc. RxEnvironments.jl changes this assumption and uses a Reactive Programming framework to model agent-environment interactions, allowing interactions at any time and natively supporting multi-agent environments</abstract>
                <slug>juliacon2024-43274-rxenvironments-reactive-multi-agent-environments</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='46339'>Wouter Nuijten</person>
                </persons>
                <language>en</language>
                <description>Introduction

At the core of Reinforcement Learning and self-organizing systems are agent-environment interactions, forming the framework for designing agents that learn by interacting with an external environment. In traditional Reinforcement Learning implementations, the agent and environment have a synchronized clock and communicate on a predetermined frequency. While this framework is convenient, it imposes a fixed temporal discretization on the communication protocol between the agent and the environment. Furthermore, because the environmental transition function usually takes the agent action into account, these environments are unable to simulate a multi-agent environment. The package RxEnvironments.jl alleviates these shortcomings by employing a reactive programming strategy to model agent-environment interactions. Users specify how agents and environments react to different stimuli and how internal states change in the absence of external stimuli. In this paradigm, the agent and environment can handle infrequent stimuli at any time and can react accordingly. Furthermore, by modeling the impact of agent-environment interactions, environments written in RxEnvironments generalize to multi-agent settings. The reactive behavior of RxEnvironments is implemented using Rocket.jl.

Markov blankets

RxEnvironments is inspired by the Active Inference community. This means that every agent and environment is separated from its environment by a Markov Blanket. By implementing interactions on these Markov Blankets, we fully specify how agents and environments incorporate stimuli from their Markov Blankets and determine the data to emit to subscribers. This separates the internal states of the agent and the environment from the observable states witnessed and emitted on the Markov Blanket. 

The power of reactivity

Reactivity is at the core of the philosophy of RxEnvironments. A consequence of this is that the transition function in reinforcement learning is decomposed into two separate functions in RxEnvironments: A state transition function that models the behavior of an environment in the absence of any stimuli, and a function that describes the influence of actions on the environment internal state. By continually calling the state transition function and calling the action incorporation function reactively whenever an action is observed, the environment is simulated even in the absence of stimuli, or whenever an agent emits multiple actions in a short period. This decomposition of the transition function also enables multi-agent environments natively, since the environment knows how to react to any incoming action. As the action is not part of the transition function over time, we can add multiple agents to the same environment and the environment will behave accordingly.

Contrast with traditional frameworks

The impact of splitting this transition function is apparent when compared to popular Reinforcement Learning frameworks like OpenAI Gym. In Gym, the environmental simulation can only proceed when presented with an action from an agent, fixing both the amount of agents as well as the time simulated by the transition function. By introducing reactivity and splitting the transition function, we are not limited by these constraints: the environmental simulation will continue running until any agent conducts an action, and the environment will react to this action by updating its internal state. This allows more complex agent-environment interactions with a framework closer to real-world interactions.

Conclusions

RxEnvironments implements a different paradigm for simulating self-organizing agents in an environment than is common in reinforcement learning literature. By alleviating the constraints on the communication protocol between agents and environments we can model a wider scope of environments. A reactive programming approach keeps this paradigm computationally feasible while providing interesting byproducts, such as multi-agent environments.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/83ZWZN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/83ZWZN/feedback/</feedback_url>
            </event>
            <event guid='7a8a5f02-a2f1-5975-8ad2-6d2f3141219b' id='44420' code='XYTURN'>
                <room>REPL (2, main stage)</room>
                <title>A cloud-native parallel data processing application in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>We discuss the design, development, and debugging of a highly parallel cloud-native application, with a deep dive into the tooling used, while highlighting difficulties and possible improvements within Julia&#8217;s ecosystem.</abstract>
                <slug>juliacon2024-44420-a-cloud-native-parallel-data-processing-application-in-julia</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='47394'>Ian Butterworth</person><person id='47395'>Ryan Benasutti</person>
                </persons>
                <language>en</language>
                <description>Julia is a great choice for researchers and developers to write expressive and performant code, and promises a smooth transition to production level systems. This talk focuses on that intersection between research and production by explaining a cloud-native application we have built in Julia for highly parallel data processing. We will explain the application&apos;s design, demonstrate Julia&apos;s strengths, show how we debugged and profiled that application, discuss some of Julia&apos;s shortcomings when building such an application, and point out avenues of future work which can address these shortcomings. 
Topics include:
- design: AWS, containerization, parallel Julia
- debugging/profiling: Tracy.jl, Intel VTune, Profiling.jl
- work in progress: easier identification of performance impeding lock contention</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XYTURN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XYTURN/feedback/</feedback_url>
            </event>
            <event guid='fe143bdc-540f-5786-abb6-ad84c3f9a2f7' id='45601' code='G3HMAP'>
                <room>REPL (2, main stage)</room>
                <title>Why I use Julia for Quantum Computing</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2024-07-12T17:10:00+02:00</date>
                <start>17:10</start>
                <duration>01:00</duration>
                <abstract>Quantum computing is an emerging field, with a variety of hardware platforms in development and proposed applications. We will review some of these hardware approaches and quantum algorithms in a way accessible to experts in classical computing, discussing the challenges that lie ahead for practical applications of quantum technology. Finally, we&apos;ll discuss the role Julia and its community can play in the field and opportunities to fix some of what Julia lacks in this area.</abstract>
                <slug>juliacon2024-45601-why-i-use-julia-for-quantum-computing</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47972'>Katharine Hyatt</person>
                </persons>
                <language>en</language>
                <description>Quantum computing is an emerging field, with a variety of hardware platforms in development and proposed applications. We will review some of these hardware approaches and quantum algorithms in a way accessible to experts in classical computing, discussing the challenges that lie ahead for practical applications of quantum technology. Finally, we&apos;ll discuss the role Julia and its community can play in the field and opportunities to fix some of what Julia lacks in this area.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/G3HMAP/resources/juliacon_keynote_YSG4kB5.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/G3HMAP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/G3HMAP/feedback/</feedback_url>
            </event>
            <event guid='bc66209f-3836-58e6-b641-e2b3e5eac119' id='53121' code='SSGKJ9'>
                <room>REPL (2, main stage)</room>
                <title>Closing Ceremony</title>
                <subtitle></subtitle>
                <type>Ceremony</type>
                <date>2024-07-12T18:10:00+02:00</date>
                <start>18:10</start>
                <duration>00:20</duration>
                <abstract>Closing the final day of JuliaCon 2024.</abstract>
                <slug>juliacon2024-53121-closing-ceremony</slug>
                <track></track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>Closing the last and final day of JuliaCon Global 2024 at Eindhoven with our full organizing committee.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SSGKJ9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SSGKJ9/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='If (1.1)' guid='e430f2f2-8d07-5f24-97d4-9f303ac45cce'>
            <event guid='0211d81b-9c82-59ce-a1d5-1fe46ddcf12b' id='44500' code='JCRRLL'>
                <room>If (1.1)</room>
                <title>Literate package development using Pluto</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>Notebooks like Pluto provide a great environment for enhancing code with explanations and interactive explorability. While popular with experimental research code, this is rarley found in package implementations. Since Pluto notebooks are actually plain Julia code under the hood, they can be used to implement a package while still being a descriptive place for exploration. In this talk, we learn how to use packages like PlutoDevMacros and PlutoTest to go from quick and dirty to reusable!</abstract>
                <slug>juliacon2024-44500-literate-package-development-using-pluto</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='46528'>Andreas Kr&#246;pelin</person>
                </persons>
                <language>en</language>
                <description>We have come a long way since Donald Knuth&apos;s WEB programming language for literate programming from the 1980s. His vision of interweaving code for the computer and text for humans is still popular today, however. Nowadays, notebooks like Jupyter and Pluto are the most popular tools for that purpose. While Jupyter notebooks are stored as JSON files and can therefore only be interpreted as notebooks, Pluto uses plain Julia files and annotates it with some comments to specify the notebook structure. This means that other Julia code does not have to concern itself with the Pluto-origin of that file and can just interact with it as with any other Julia file. Among many others, one benefit of this fact is that the Pluto notebook can contain the implementation of a reusable package. Such a package often naturally evolves from a script or notebook that answers one specific research question when the broader context and applicability become evident. Usually, this evolution then means starting from scratch and reimplementing the logic from the exploration. The extracted package will also miss all the deeper explanations and derivations of the implemented algorithms that were present in the notebook, making it literal in Knuth&apos;s sense. Additionally, more often than not, one will continue to experiment with the original code and, at this point, much effort is necessary to keep the code bases in sync. Therefore, transforming the explorative notebook into the package itself can be an alternative worth considering. A growing package quickly becomes impractical to maintain in a single file or notebook. Here, packages like PlutoDevMacros and PlutoLinks help because they are able to connect multiple Pluto notebooks with eachother. With PlutoTest, we can even add interactive testing for our code.
In this talk, we follow an example that starts as a typical research notebook and then showcases the evolution towards a reusable package by employing the mentioned packages step by step. The devolper experience is not yet perfect at this point, so the purpose of this talk is merely to suggest a workflow for literate package development and hint at where further improvements could be beneficial.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/JCRRLL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JCRRLL/feedback/</feedback_url>
            </event>
            <event guid='f57810a8-597d-5d8d-98a0-76e5813a6c47' id='44472' code='TVDJ3H'>
                <room>If (1.1)</room>
                <title>Build real-time processes with Pluto&apos;s reactivity</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>Pluto Notebooks are awesome for building quick experiments and dashboards. But did you know that you can also create real-time processes by reusing Pluto&apos;s reactivity?

In this talk I will demonstrate to you how powerful Pluto notebooks really are.</abstract>
                <slug>juliacon2024-44472-build-real-time-processes-with-pluto-s-reactivity</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47441'>Stephan Sahm</person>
                </persons>
                <language>en</language>
                <description>PlutoHooks.jl has been out for quite some time, but not many know about these hidden Pluto gems. While PlutoUI is about client-side triggers, PlutoHooks is about server-side triggers, also called self-updates. Actually the mechanism is built into Pluto itself.

This talk I will showcase a concrete example: Applying RxInfer.jl for real time probabilistic prediction of  financial bitcoin data.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/TVDJ3H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TVDJ3H/feedback/</feedback_url>
            </event>
            <event guid='93404dfb-5a01-535a-a96e-6e994fae18a7' id='44153' code='MKDTV3'>
                <room>If (1.1)</room>
                <title>&#127880; Pluto.jl &#8211; Interactive package development and debugging</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Interactive package development in Julia is possible thanks to Revise.jl, which is an amazing tool but still has a few drawback like the need to restart julia when modifying struct definitions. This talk will introduce a set of tools from the PlutoDevMacros.jl and PlutoVSCodeDebugger.jl packages which aim to improve the package development and debugging workflow using Interactive Pluto notebooks.</abstract>
                <slug>juliacon2024-44153-pluto-jl-interactive-package-development-and-debugging</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47148'>Alberto Mengali</person>
                </persons>
                <language>en</language>
                <description>This talk will introduce and explain the use of the `@frompackage` macro from PlutoDevMacros which can be used to load a target local package under development inside a Pluto notebook. This macro also emulates a manual Revise-like workflow that reloads the latest package definitions within the notebook on demand. Thanks to Pluto reactivity and its capability of redefining structs, this workflow will automatically trigger re-execution of test code in the notebook when reloading a package code and will reduce the need of restarting the julia sessione when changing struct definition inside package code. A part of this talk will also be allocated to the introduction of the PlutoVSCodeDebugger.jl package which provides a streamlined way to attach a VSCode instance to a running Pluto notebook for debugging notebook code via the VSCode debugger GUI. The two packages can be used together to greatly streamlined package development and debugging inside Pluto</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MKDTV3/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MKDTV3/feedback/</feedback_url>
            </event>
            <event guid='4e5583fe-a8ec-5f85-bc30-1f55866ba88d' id='43410' code='JGT893'>
                <room>If (1.1)</room>
                <title>Quarto Extensions for the Julia Community</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>[Quarto](https://quarto.org/) is an open-source scientific and technical publishing system that was first presented at JuliaCon 2022. We propose new extensions and workflows that we hope will help the community embrace this promising new tool and boost developers&apos; efforts toward effective communication and reproducibility.</abstract>
                <slug>juliacon2024-43410-quarto-extensions-for-the-julia-community</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/JGT893/intro_cbQtgY6.gif</logo>
                <persons>
                    <person id='45766'>Patrick Altmeyer</person><person id='46467'>Ronny Bergmann</person>
                </persons>
                <language>en</language>
                <description>What if there was a single tool, an engine that can turn your work into all kinds of different output formats? Markdown, PDF, LateX, beamer, HTML, reveal.js, ePub, MS Office, OpenOffice, entire websites, dashboards &#8230; all of that starting from the same place: a plain Markdown document blended with chunks of your favorite programming language. That is the prospect that Quarto offers.

**Note**: Please find the Revealjs slides [here](https://www.patalt.org/quarto-julia-website/examples/contributed/juliacon_2024/quarto_extensions/presentation.html#/sec-quarto) or see the PDF slide pack attached.

### &#129301; Those Damn Edge Cases ...

The problem is that this is a very ambitious prospect. Even though Quarto is being continuously improved by a committed and responsive development team, there will always be edge cases that require customization. Your presentation at work, for example, might have to comply with certain styling rules. Similarly, the journal you are targeting for your next research project almost definitely has very specific editing guidelines that (if you&apos;re lucky enough) are specified in a LaTeX template. In both cases, you will need to invest some time into modifying or extending the behavior of Quarto.

### &#128657; Quarto Extensions to the Rescue

Thankfully - and in true open-source spirit - Quarto has come up with a way to ensure that such efforts never go in vain: [extensions](https://quarto.org/docs/extensions/). Producing and sharing extensions is so simple that it feels almost like a by-product of tailoring Quarto to your specific use case. 

&gt; When I first learned about extensions, I had already created a custom template for myself to create reveal.js presentations in the iconic white-blue theme of Delft University of Technology. Releasing that [template](https://github.com/pat-alt/quarto-tudelft) to the public was almost as easy as creating my first Julia package (obligatory hat tip to the folks behind PkgTemplates.jl). 
&gt;
&gt; &#8212; Speaker 1
 
A few months later, Speaker 1 heard from at least a few of their colleagues that they had presented pretty HTML slides in white and blue right from their browser. 

### &#128308;&#128994;&#128995; Julia-Themed Quarto

[Julia-Themed Quarto](https://www.paltmeyer.com/quarto-julia-website/) presents a number of Quarto extensions that are specific to Julia and will be the topic of this talk. 

1. The [quarto-julia](https://github.com/pat-alt/quarto-julia) extension contributes various basic format templates for Julia-themed HTML content. It ships with standard Julia colors and fonts to provide your next presentation with a beautiful look. 
2. The [quarto-juliacon-proceedings](https://github.com/pat-alt/quarto-juliacon-proceedings) extension is a more ambitious project. This extension adds support for writing JuliaCon Proceedings papers in Quarto. It is based on the existing [JuliaCon Proceedings LaTeX template](https://github.com/JuliaCon/JuliaConSubmission.jl) and can be used to render standard [PDF](https://www.paltmeyer.com/quarto-juliacon-proceedings/template.pdf) while leveraging all of Quarto&apos;s functionalities such as executable code chunks. On top of that, it provides a new [HTML](https://www.paltmeyer.com/quarto-juliacon-proceedings/template.html) template that currently inherits the style of [quarto-julia](https://github.com/pat-alt/quarto-julia). This provides new opportunities for JuliaCon Proceedings papers to include animated and interactive content.
3. Finally, the [Julia-Themed Quarto](https://www.paltmeyer.com/quarto-julia-website/) website also includes a section on the marriage of Quarto and Documenter.jl. This has not yet been turned into a fully-fledged extension but we provide guides for common workflows that facilitate this marriage. This topic will be presented by Speaker 2. 

### &#127919; Goals and Limitations

The [quarto-juliacon-proceedings](https://github.com/pat-alt/quarto-juliacon-proceedings) is not yet officially supported and there remain some [issues](https://github.com/pat-alt/quarto-juliacon-proceedings/issues) that need to be addressed to make it fully compatible with the existing LaTeX template. Similarly, there is scope for improvement concerning the experience of using Quarto with Documenter.jl. We hope that through this talk we can stimulate discussion in the community and encourage others to contribute to these efforts.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/pat-alt/quarto-julia-website/">Github</link>
                
                    <link href="https://www.patalt.org/quarto-julia-website/examples/contributed/juliacon_2024/quarto_extensions/presentation.html">Link to slides (Revealjs)</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/JGT893/resources/presentation_FVSNxre.pdf">PDF Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/JGT893/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JGT893/feedback/</feedback_url>
            </event>
            <event guid='122b6fae-c046-5b38-8483-efc42d8e48d9' id='43795' code='KZNFPS'>
                <room>If (1.1)</room>
                <title>SummaryTables: Publication-ready tables in docx HTML LaTeX Typst</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>At PumasAI, we create a lot of tables. No existing package could deliver minimalistic, aesthetic, flexible tables with the same look across docx, HTML, LaTeX and Typst formats. So we wrote our own! This talk introduces SummaryTables.jl, showcasing its included pharma-focused table functions and options to create your own formats. We&apos;ll also take a brief look at WriteDocx.jl, another new package which allows to create docx files from scratch in Julia (and put SummaryTables tables into them!).</abstract>
                <slug>juliacon2024-43795-summarytables-publication-ready-tables-in-docx-html-latex-typst</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/KZNFPS/summarytables_example_wJUMHoe.png</logo>
                <persons>
                    <person id='46827'>Julius Krumbiegel</person>
                </persons>
                <language>en</language>
                <description>The workflows of many pharma companies we work with at PumasAI involve creating reports in a mixture of formats: HTML, pdf via LaTeX and Typst, or docx files which are often the easiest way to quickly edit together the assets our users need at any given moment.

While general-purpose tools like pandoc allow targetting many output formats, including HTML, pdf and docx, style information is usually lost in translation. This was not good enough for our purposes, we wanted a tool to create our tables with the same look across all formats. This requirement also prompted the development of WriteDocx.jl, which through its detailed mapping of the actual docx XML spec, allows creating docx files with much higher precision than using a generic conversion tool.

The other purpose of SummaryTables.jl is to offer a collection of statistical table formats that are commonly found in pharma-related workflows. Currently, we have implemented listing tables, parameter summary tables and what&apos;s commonly called a &quot;table 1&quot; in our field.

With the open-sourcing of SummaryTables.jl and WriteDocx.jl, we want to contribute back to the Julia ecosystem and strengthen its arsenal of utility packages which are useful in the pharma world and beyond.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KZNFPS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KZNFPS/feedback/</feedback_url>
            </event>
            <event guid='d65a4128-43ac-5612-897b-a2c53fcfefb5' id='43479' code='QPMKZP'>
                <room>If (1.1)</room>
                <title>Jlyfish: Reproducible documents with Julia and Typst</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>Typst is a modern type setting system excelling at user experience and compilation speed. In this talk, I present the package Jlyfish for Typst and Julia that allows users to include Julia code directly in the Typst source, have it executed, and its output inserted into the document. Similar to PythonTeX for LaTeX, this enables a workflow where results of computations are not hardcoded in the document but dynamically inserted, making the latter reproducible and in sync with the rest of the code.</abstract>
                <slug>juliacon2024-43479-jlyfish-reproducible-documents-with-julia-and-typst</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/QPMKZP/logo_FHxZqgE.svg</logo>
                <persons>
                    <person id='46528'>Andreas Kr&#246;pelin</person>
                </persons>
                <language>en</language>
                <description>[Jlyfish on GitHub](https://github.com/andreasKroepelin/TypstJlyfish.jl)
There are many software solutions that combine code, its output, and prose. Beginning with interactive notebooks such as Pluto or Jupyter, over code presentation focused systems like Weave.jl or Quarto, to extensions for general purpose typesetting software like PythonTeX for LaTeX or showman for Typst. Jlyfish can be found in the last catergory and aims at providing the best interaction between Typst and Julia. To this end, it consists of a package for Typst and one for Julia and makes use of Julia&apos;s powerful features. As Typst supports displaying text, PNG, JPG, and SVG, Jlyfish will use Julia&apos;s display system to display the result of a computation in the richest possible MIME type. It additionally supports the MIME `&quot;text/typst&quot;` that will then be interpreted as Typst source code on the Typst side, allowing emitting markup or more complex document features. Users can also configure whether the Julia code, the standard output, and/or logs should be shown in the document. Julia&apos;s support for metaprogramming facilitates parsing the user provided code and evaluating it in an encapsulated module and its own environment. The Julia package is used like a standalone program by calling a `watch()` function. It then watches the Typst source file for changes and automatically reruns evaluation, but only if the Julia code has actually changed.
In this talk, I will briefly introduce Typst and why one should consider preferring it over LaTeX. Then, I will present how to use Jlyfish and how it works behind the scenes, focussing on the Julia parts. After demonstrating what is possible with Jlyfish today, I will close with some ideas for its future development.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/QPMKZP/resources/jlyfish-presentation_UrB8TRQ.pdf">presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/QPMKZP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QPMKZP/feedback/</feedback_url>
            </event>
            <event guid='22e297d4-f1e3-5959-93a2-7603897e97aa' id='42845' code='CJ3P9D'>
                <room>If (1.1)</room>
                <title>TidierPlots.jl: Bringing ggplot2 to Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:10</duration>
                <abstract>TidierPlots.jl is a faithful reimplementation of R&apos;s ggplot2 package in Julia. It relies on AlgebraOfGraphics and Makie to generate plots while retaining syntax that will be very familiar to users coming from the tidyverse. This lightning talk will discuss the development process, the current state of the package, and the future goals for its capabilities and use.</abstract>
                <slug>juliacon2024-42845-tidierplots-jl-bringing-ggplot2-to-julia</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='45974'>Randall Boyes</person>
                </persons>
                <language>en</language>
                <description>TidierPlots.jl is part of the Tidier ecosystem of packages in Julia which aim to bring the functionality and syntax of R&apos;s tidyverse packages to Julia users. TidierPlots.jl is the reimplementation of ggplot2, which provides data visualization capabilities. This lightning talk will discuss the origins and motivations of the package, challenges I have encountered in development and their solutions, and my future goals for the package. I will also highlight the areas where the design of the Julia Language has already allowed for extensions on the capability of TidierPlots as compared to the original ggplot2.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/TidierOrg/TidierPlots.jl">Link to Package</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CJ3P9D/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CJ3P9D/feedback/</feedback_url>
            </event>
            <event guid='796ac677-78d1-5820-a846-10c645c78c6d' id='44446' code='CXVZMP'>
                <room>If (1.1)</room>
                <title>What&apos;s new with Makie.jl?</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T12:10:00+02:00</date>
                <start>12:10</start>
                <duration>00:10</duration>
                <abstract>This talk will highlight the year&apos;s most interesting developments around Makie, the powerful and high-performance data visualization ecosystem written almost entirely in Julia.</abstract>
                <slug>juliacon2024-44446-what-s-new-with-makie-jl</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/CXVZMP/makie_banner_USF41xp.png</logo>
                <persons>
                    <person id='47262'>Simon Danisch</person><person id='46827'>Julius Krumbiegel</person>
                </persons>
                <language>en</language>
                <description>Makie is Julia&apos;s most extensive and powerful &quot;native&quot; plotting ecosystem, where everything but the lowest level drawing routines is written in Julia. This also makes it one of the most flexible and hackable systems to build interactive or static data visualizations with. It supports gpu-accelerated rendering on desktops and in web browsers, vector graphics, as well as experimental ray tracing.

Makie has seen a lot of development in the last year, and in this talk, we&apos;ll summarize the most important aspects for you. Get inspired by the cool things people are creating with Makie right now, and get excited by what&apos;s in store for the next year!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CXVZMP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CXVZMP/feedback/</feedback_url>
            </event>
            <event guid='765fae74-815a-5574-94d9-9ca5e49f02a5' id='44275' code='GA7JNJ'>
                <room>If (1.1)</room>
                <title>Interactive Dashboards with WGLMakie and Bonito</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:10</duration>
                <abstract>How to create and deploy interactive Dashboards with Makie and Bonito.</abstract>
                <slug>juliacon2024-44275-interactive-dashboards-with-wglmakie-and-bonito</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47262'>Simon Danisch</person>
                </persons>
                <language>en</language>
                <description>In this brief talk, we&apos;ll explore the essentials of creating interactive dashboards in Julia using the Makie and Bonito packages. 
I&apos;ll introduce the fundamental capabilities of Makie for dynamic data visualization and demonstrate how to build an interactive dasbhoard for it with Bonito. The talk will include a quick walkthrough of a basic dashboard setup, highlighting key features, a few notes about deployment and the seamless integration of both tools in Julia. 
Attendees will leave with an understanding of how to get started with these tools for interactive data visualization.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GA7JNJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GA7JNJ/feedback/</feedback_url>
            </event>
            <event guid='9f3ad1c2-7ad5-5fbd-abb1-7e94a39d1d11' id='44248' code='WKX8SB'>
                <room>If (1.1)</room>
                <title>Optimization Methods for Robot Motion Planning in JuMP</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Path planning is used in applications from self-driving cars, unmanned aerial vehicles and in robotics. Recent developments in mathematical optimization theory and more capable solvers will enable exciting optimization-based techniques to further improve performance and reliability of autonomous systems. This talk will walkthrough from theory to application how trajectory optimization can be applied in the context of path planning for your desired application.</abstract>
                <slug>juliacon2024-44248-optimization-methods-for-robot-motion-planning-in-jump</slug>
                <track>Optimization</track>
                
                <persons>
                    <person id='47235'>Alexander Leong</person>
                </persons>
                <language>en</language>
                <description>The optimization problem is as follows: our objective is to find the &#8220;smoothest&#8221; path from a starting point to an end point such that we avoid collision with any obstacles. The obstacles are assumed stationary for all time. Smooth means not jerky (i.e. low rate of change in acceleration over time).
To represent this problem, the map is divided into a set of safe regions. A safe region is one that does not contain any part of an obstacle. This is done so we can use mixed integer programming to assign path segments to safe regions. The paths themselves will be represented as polynomials. Using Hypatia, a generic conic solver with MOSEK solver one can solve this problem.

Once a feasible and optimal solution is found we need to visualize to verify the results. The talk will demonstrate using Makie to analyze these results. Furthermore, using IJulia, one can develop dashboards in an REPL like fashion so researchers and scientific programmers alike can focus on the problem at hand. We will discuss some main concepts such as observables, accepting user input and dynamically updating charts.

Finally, the talk will discuss the main results for a numerical experiment and outline the challenges associated with optimization-based approaches and techniques the practitioner can apply. This includes exploring some of the main APIs in JuMP and related math packages used to solve this optimization problem.

The talk is appropriate for a general audience especially for those in applied math, engineering, and robotics.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/alexander-leong/MotionPlanningOptimization.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/WKX8SB/resources/Optimization_Methods_for_Robot_Motion_Plannin_akEzegL.pptx">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/WKX8SB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WKX8SB/feedback/</feedback_url>
            </event>
            <event guid='4404a00e-09a1-5a3a-a244-4366f4c09361' id='44059' code='YDS7HF'>
                <room>If (1.1)</room>
                <title>GeoCombSurfX - exploring properties of polygonal complexes</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Polygonal complexes are combinatoric objects that arise from polyhedra and facilitate various combinatoric and geometric studies. In this talk, we present the Julia package GeoCombSurfX which enables the study of polygonal complexes and the construction of their corresponding embedding. Moreover, we demonstrate the usage of our package by targeting the problem of deciding whether a given asssembly of 3D-blocks gives rise to a topological interlocking.</abstract>
                <slug>juliacon2024-44059-geocombsurfx-exploring-properties-of-polygonal-complexes</slug>
                <track>Math(s)</track>
                <logo>/media/juliacon2024/submissions/YDS7HF/assembly3_6431_nViE3uG.png</logo>
                <persons>
                    <person id='47047'>Sascha St&#252;ttgen</person><person id='55580'>Reymond Akpanya</person>
                </persons>
                <language>en</language>
                <description>By denoting the incidence structure of the vertices, edges and facets of a given polyhedron, a polygonal complex is obtained. In our talk we give an overview of the basic definitions and the underlying theory of convex and non convex polyhedron and their corresponding polygonal complex. A given polygonal complex can be analysed from a combinatoric point of view by examining the corresponding isomorphism group, different vertex- and edge-colorings and manipulations of the incidence structure  that give rise to new polygonal complexes, whereas geometric properties that can be highlighted are convexity properties of the given complex and the problem of embedding the complex into 3-space as a polyhedron. Julia&apos;s diverse package ecosystem and great performance makes it a suitable candidate to develop a software that contains implementations to analyse all aspects that arise in the study of polygonal complexes. 

As an example for the usage of our package we formulate the interlocking problem of an assembly of 3D-blocks. This problem can be summarised as follows: Suppose you are given a collection of blocks, which are in contact with one another and a subset of the blocks (frame) that is fixed in space. Are there non-zero simultaneous motions of the remaining blocks such that applying these motions to the blocks of the assembly does not result in penetrations of any blocks? If there are no such motions, the assembly is called topologically interlocking. Furthermore, we describe a sufficient criterion for a given assembly to be topologically interlocked and outline how Julia and its ecosystem, in particular the packages Polyhedron.jl, JuMP.jl and HiGHS.jl, can be used to tackle this problem.

Finally, we describe future projects and features that we aim to include into GeoCombSurfX-package. We want to make use of the OSCAR project to answer algebraic questions about polygonal complexes. In particular, OSCAR offers an interface to the computer-algebra system GAP that is being developed at RWTH Aachen University and for which a package has already been implemented that deals with combinatorial aspects of polygonal complexes. Further, we want to parameterise all embeddings of polygonal complexes into 3-space with triangular faces and given edge lengths algebraically, which requires the exact solutions of multivariate polynomial systems over the reals.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/YDS7HF/resources/GeoCombSurfX_-_JuliaCon_2024_Presentation_Os2Yzn0.pptx">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/YDS7HF/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YDS7HF/feedback/</feedback_url>
            </event>
            <event guid='39b6abf6-5717-5b06-9465-569653fad6fd' id='39588' code='ABCYFC'>
                <room>If (1.1)</room>
                <title>Attractors.jl: next-gen (multi-)stability analysis</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>This talk is about Attractors.jl, the newest module of DynamicalSystems.jl. It is the result of two _featured_ scientific articles, and implements several new cutting edge tools to study stability in dynamical systems. It goes beyond traditional continuation tools by focusing explicitly on multistability and global stability, concepts extremely relevant for modern applications of dynamical systems such as climate tipping points or power grid stability.</abstract>
                <slug>juliacon2024-39588-attractors-jl-next-gen-multi-stability-analysis</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='43577'>George Datseris</person>
                </persons>
                <language>en</language>
                <description>Attractors.jl is a Julia package (part of the DynamicalSystems.jl) focusing on finding attractors of dynamical systems and continuing them along a parameter axis. Attractor is a concept that generalizes established concepts such as &quot;fixed point&quot; and &quot;steady state&quot;. Our approach with Attractors.jl was inspired by modern applications of dynamical systems: where multistability is crucial, and transitions between attractors (often termed as &quot;tipping points&quot;) is one of the most important aspects of the system to understand. 

That is why we designed Attractors.jl to be different than traditional &quot;continuation&quot; software. Our approach is like a &quot;birds-eye-view&quot; of the state space, instead of focusing locally on a particular point. This approach comes with two strong benefits: 1) multistability can be detected automatically, 2) stability of attractors is quantified in terms of more powerful and general concepts of global stability (versus the established standard concepts of local stability). Additionally, Attractors.jl has been designed so that its core interfaces are extendable out-of-the-box, allowing future progress in stability analysis to be directly integrated with the package!

In this talk we will discuss the following points:
- Introduction to multistable dynamical systems for a general audience (with some background in math or natural sciences)
- Overview of the features of Attractors.jl
- The importance of multistability and global stability in real-world applications of dynamical systems
- The interface(s) of Attractors.jl and their extendable design
- Comparison with traditional continuation software
- A runnable code snippet using the package</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ABCYFC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ABCYFC/feedback/</feedback_url>
            </event>
            <event guid='69f423b5-d7e7-5ee5-a681-cbdbdf8d9778' id='44492' code='ELKWRN'>
                <room>If (1.1)</room>
                <title>Using KeplerGl Visualizations in Pluto</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>In this 10-minute talk, we will explore the usage of the open source geospatial visualization app, KeplerGl (formerly Uber but now under OpenJS foundation) within a Pluto notebook ecosystem. Users are able to add data in the form of DataFrames and add filter configurations in a similar manner.</abstract>
                <slug>juliacon2024-44492-using-keplergl-visualizations-in-pluto</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47457'>Thaddeus Low</person>
                </persons>
                <language>en</language>
                <description>At Teleport, we run Agent-Based-Modeling simulations on OpenStreetMaps to simulate ridesharing in different cities. In this quick, 10-minute chat, we&apos;ll dive into how you can use the KeplerGl toolkit to spice up your geospatial data visualization in Julia&apos;s Pluto notebooks. Think of it as a cool way to make your maps and spatial data analysis more interactive and visually impressive, all within the easy-to-use Pluto notebook environment.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ELKWRN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ELKWRN/feedback/</feedback_url>
            </event>
            <event guid='912bee06-4499-5bd3-8960-cd42885a7c47' id='44382' code='MZUBGM'>
                <room>If (1.1)</room>
                <title>What&apos;s new in QML.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>One of the options to build a GUI in Julia is the [QML.jl](https://github.com/JuliaGraphics/QML.jl) package, which provides the tools to connect a Qt QML GUI to Julia code. The package has been around for some years, but in 2023 it was updated to use Qt 6 and a new, more flexible model was introduced for working with tables. This talk will focus on these enhancements. In addition, there will be some remarks on graphical GUI design tooling and future Makie.jl integration plans.</abstract>
                <slug>juliacon2024-44382-what-s-new-in-qml-jl</slug>
                <track>Notebooks &amp; Graphics</track>
                
                <persons>
                    <person id='47363'>Bart Janssens</person>
                </persons>
                <language>en</language>
                <description>The [Qt QML language](https://doc.qt.io/qt-6.5/qmlapplications.html) allows users to describe graphical user interfaces using a declarative programming style, similar in style to a JSON file. A simple example for showing a rectangle is:

```qml
import QtQuick
import QtQuick.Controls

ApplicationWindow {
  Rectangle {
    width: 100; height: 100; color: &quot;red&quot;

    Text {
      anchors.centerIn: parent
      text: &quot;Hello!&quot;
    }
  }
}
```

The QML.jl package offers the infrastructure to launch the GUI from within Julia, and link Julia functions and values to elements of the GUI. This makes it possible to e.g. execute a Julia function when clicking a button, or show the output of a plot command in the GUI.

Since the previous presentation of QML.jl at JuliaCon 2020 Qt has been upgraded to version 6, and QML.jl now supports this. Aside from overall improvements in quality and performance, this change also enables full compatibility with Wayland on Linux and the matching of the native platform desktop style has improved, so applications can take on a Windows or macOS look automatically on the respective platform. Qt 6 also introduces a new way of using tabular data, which prompted the development of the new `JuliaItemModel` type, which makes it easier than ever to present and modify tabular data in any of the standard QML elements that take a table or list of items. One possible application for this is to make an interactive `DataFrame` editor, for example.

The objective of this talk is to illustrate these new features, based on a simple demo application for working with tables, which we will first design in a GUI design tool. Even though QML is an easy language to read and write, many people prefer to design GUIs visually, so we will show that this workflow is also possible for QML.jl, using the standard tools provided by Qt. Once the GUI design is complete, we will show how to link it to Julia code and data.

Finally, we will end with some remarks on future work, such as more elaborate and up-to-date support for Makie.jl. Indeed, QML.jl already supports overlaying both regular OpenGL content and Makie.jl scenes with QML elements, but the idea is to split off this functionality into a separate package, so it becomes easier to use and keeps up better with the latest Makie version.

## Resources
* [Slides](https://slides.bartjanssens.org/juliacon2024/)
* [Demo code](https://github.com/barche/QMLJuliaCon2024)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaGraphics/QML.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MZUBGM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MZUBGM/feedback/</feedback_url>
            </event>
            <event guid='6034ac45-620d-57eb-8276-de402f080e82' id='44352' code='CGNHDG'>
                <room>If (1.1)</room>
                <title>Rosenbrock methods within OrdinaryDiffEq.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Rosenbrock methods are known to be efficient within OrdinaryDiffEq.jl for stiff ODEs and DAEs in mass matrix form. This is especially true if the dimension of the problem is not too high or the evaluation of the Jacobian matrix of the right-hand side of the differential equation system is not too expensive.
There are implementations of many different Rosenbrock and Rosenbrock-W methods. In the talk we want to give an overview, present new methods and show some benchmarks and applications.</abstract>
                <slug>juliacon2024-44352-rosenbrock-methods-within-ordinarydiffeq-jl</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='47338'>Gerd Steinebach</person>
                </persons>
                <language>en</language>
                <description>Currently, more than 30 Rosenbrock-type methods are implemented in the widely used Julia package OrdinaryDiffEq.jl.  We discuss the differences and similarities of the various methods and explain why there is room for further improvements. In particular, this concerns the solution of time dependent algebraic equations and continuous output within the solution of DAE problems. 
We present new methods Rodas23W and Rodas3P that are equipped with an error control of the interpolation. We compare this approach with alternative concepts such as residual control or modification of the stiffly accurate embedded method of Rodas5P, we perform some 
benchmarks and present an application in the field of energy network simulation.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/CGNHDG/resources/vortrag_steinebach_Z75lZfP.pdf">Talk</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/CGNHDG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CGNHDG/feedback/</feedback_url>
            </event>
            <event guid='6afe3267-3c6d-5de7-8f98-1b0a37042f92' id='44425' code='QDMQQL'>
                <room>If (1.1)</room>
                <title>Automated Theorem Proving with dL in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>In this talk, we introduce a Julia package that transforms hybrid system models into a formal language for theorem proving, providing a new tool to analyze your model. We explore how, with the help of our package, you can automatically find proofs to verify system properties. By explaining key concepts such as quantifier elimination and loop invariants, we show the core principles of proof search. Finally, we compare our approach to other methods in the Julia ecosystem.</abstract>
                <slug>juliacon2024-44425-automated-theorem-proving-with-dl-in-julia</slug>
                <track>Math(s)</track>
                
                <persons>
                    <person id='47401'>Jonathan Hellwig</person>
                </persons>
                <language>en</language>
                <description>In the realm of software engineering, uncovering bugs lurking within code can prove to be a challenging task. However, theorem proving offers a formal and rigorous approach to verifying program correctness, providing a valuable tool for software verification. This is particularly important in hybrid systems like cars, robots or planes, where both continuous and discrete dynamics are present. 

As a system modeler, having theorem proving in your tool belt alongside other software verification techniques can be a useful addition to ensure the reliability and correctness of your code.

In this talk, we introduce Elenchos, a Julia package aimed at simplifying the theorem proving process for hybrid system models. Elenchos introduces a Julia macro that makes it easier to translate a model from ModelingToolkit.jl into differential dynamic logic, a formal language for verification of hybrid systems. Additionally, the package provides macros to interface with the theorem prover KeYmaera X to automatically verify system properties. 

Throughout the talk, we explain the technologies behind proof automation by exploring fundamental theorem proving concepts such as loop invariants and quantifier elimination.

Furthermore, we will compare the theorem proving approach with other existing methods like simulation, reachability analysis, or manual analysis to highlight its unique advantages.

Join us as we explore the intricacies of theorem proving and its application in hybrid system verification.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/QDMQQL/resources/slides_A3BHdLg.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/QDMQQL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QDMQQL/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Else (1.3)' guid='4bf3eb99-fea3-5d57-a632-0b5d9a5a54c2'>
            <event guid='8aba6759-c412-5f6b-9e0f-b8d4117c1c49' id='44433' code='FCPJU9'>
                <room>Else (1.3)</room>
                <title>GNSSReceiver GNSS signal processing and positioning in real time</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>With GNSSReceiver.jl you can process GNSS (Global Navigation Satellite System) signals in real time.
It supports streaming from a SDR (Software Defined Radio) platform such that you can hook up an antenna to your Laptop and calculate your position and velocity.</abstract>
                <slug>juliacon2024-44433-gnssreceiver-gnss-signal-processing-and-positioning-in-real-time</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/FCPJU9/Screenshot_20240131_193937_ui3IiZT.png</logo>
                <persons>
                    <person id='47404'>S&#246;ren Sch&#246;nbrod</person>
                </persons>
                <language>en</language>
                <description>Processing GNSS signals with a general purpose CPU is a challenging task. The signal has a high bandwidth (between 2 MHz and 25 MHz) which demands a high computational throughput. In addition, multiple satellite signals need to be decoded in order to estimate a reliable position.
GNSSReceiver.jl achieves that in real time using Julia. Furthermore, it is capable to stream signals from multiple antennas coherently in order to enhance the Signal to Noise Ratio (SNR) with some sophisticated beamforming techniques.
In its current implementation, it supports GPS and Galileo satellite signals, with more to follow.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaGNSS">Github</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FCPJU9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FCPJU9/feedback/</feedback_url>
            </event>
            <event guid='da47b4d2-743e-550b-98f9-798f4133e732' id='44295' code='P7N7GB'>
                <room>Else (1.3)</room>
                <title>Bayesian non-linear mixed effects model for safer powder storage</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>Powders are ubiquitous in industry, from pharmaceutical powders to food powders. Powders are often stored in silos, where the powder builds up stress under its own weight. The Janssen model describes this build up, but this model has unknown parameters that must be estimated from experimental data. This parameter estimation involves several challenges, such as unidentifiability and correlated measurements. To overcome these challenges, a Bayesian NLME model is implemented in Turing.jl.</abstract>
                <slug>juliacon2024-44295-bayesian-non-linear-mixed-effects-model-for-safer-powder-storage</slug>
                <track>General</track>
                
                <persons>
                    <person id='47277'>Arno Strouwen</person>
                </persons>
                <language>en</language>
                <description>Powders are ubiquitous in the chemical industry, from pharmaceutical powders for tablet production, to food powders like sugar. Powder flowability is a crucial aspect for smooth processing in all these applications. When powder is stored in silos, it builds up stress under its own weight. This stress can affect its flowability, leading to problems like arching or ratholing.

Janssen&#8217;s approach is the most used stress model for silos [1]. This model contains unknown parameters that must be estimated from experimental data at lab scale.  One of these parameters is the relation between horizontal and vertical stress in the system. This parameter enables the correct prediction of the stress propagation throughout the system. To estimate this parameter, measurements of both stresses need to be linked. However, no commercial set-ups are readily available to measure the relation between the horizontal and vertical stress directly. Data from a new experimental protocol was published in [2], extracting the stress relationship from wall friction measurements and an analytical set-up measuring the vertical stress propagation in a vertical pipe. This data will be used in the analyses in this presentation.

In this presentation, we will perform a Bayesian non-linear mixed effects analysis on these data. The non-linear model is derived from a force balance. Random effects are introduced because high variability between repetitions of experiments under the same set of conditions is observed, compared to the measurement noise within a set of conditions.

The choice for the Bayesian paradigm is twofold. First, because we have physical bounds available for most parameters of interest, which can serve as prior information in the Bayesian estimation. Second, because data from two different measurement setups must be combined to be able to identify all the parameters of interest. The joint likelihood over both measurement setups is readily calculated, as are posterior densities. In contrast, incorporating data from both setups would be less straightforward in the frequentist framework. The presence of prior information and an easily calculated likelihood thus makes the Bayesian framework a natural choice.

The Bayesian inference is implemented in Turing.jl. The choice of Turing and the Julia programming language was motivated by the close resemblance of the code to the mathematical description of the Janssen equation.

References

[1] Schulze, Dietmar (2008). &#8220;Stresses in vertical channels (Janssen&#8217;s approach)&#8221;. In: Powders And Bulk Solids. Springer, pp. 259&#8211;262.
[2] Coppens, Margot et al. (2023). &#8220;Combination and analysis of the lateral stress ratio and wall friction measurements&#8221;. In: Powder Technology 418, p. 118286.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/P7N7GB/resources/Arno_Strouwen_JuliaCon_2024_zSLJWNx.pptx">Arno Strouwen JuliaCon 2024</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/P7N7GB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/P7N7GB/feedback/</feedback_url>
            </event>
            <event guid='4673619a-064b-5672-8d88-d01c427677a7' id='43921' code='M3QTGC'>
                <room>Else (1.3)</room>
                <title>Ray.jl: Julia runtime and client for the Ray compute framework</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>The [Ray compute framework](https://ray.io) is widely used for distributed computing, supporting multiple compute environments and client languages.
[Ray.jl](https://github.com/beacon-biosignals/Ray.jl) is a Julia client library and runtime for distributing Julia computation on Ray developed by Beacon Biosignals.
Ray.jl can be used to scale distributed workloads from local machines to large cloud instances to Kubernetes clusters, without needing deep expertise in distributed computing.</abstract>
                <slug>juliacon2024-43921-ray-jl-julia-runtime-and-client-for-the-ray-compute-framework</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='54428'>Curtis Vogt</person><person id='46914'>Dave Kleinschmidt</person><person id='53011'>Glenn Moynihan</person>
                </persons>
                <language>en</language>
                <description>The [Ray compute framework](https://ray.io) is a widely used framework for distributed computing supporting multiple compute environments.  While Ray is focused on Python, it supports workflows authored in multiple client languages, including Python, Java, and C++.  In this talk we&apos;ll describe [Ray.jl](https://github.com/beacon-biosignals/Ray.jl), a Julia-language client library and runtime for distributing Julia computation on Ray developed at Beacon Biosignals.

Ray has a number of properties that make it a good fit for our Julia-based distributed computing needs at Beacon.
1. Ray has a simple &quot;core&quot; mental model (of Objects, Tasks, and Actors) that allows our developers to reason about distributed computing without requiring deep expertise.
2. Ray provides a set of back-end features that are battle-tested and used in production by other organizations of various scales.  These features---including a distributed object store, scheduler, and worker orchestration---bridge the gap between &quot;local dev&quot; and &quot;massively scalable Kubernetes cluster&quot; environments and provide a landing zone for distributed workloads that frees our developers from worrying about provisioning compute resources.  While many of these features are provided by existing solutions, no single solution provided all of them, and to fill in any of the gaps to the level of robustness we need would have been impractical with a small engineering team.
3. Because the Ray compute framework supports multiple client languages (Python, Java, and C++) each with their own runtime, the core C++ API has been pared down to something that is reasonably language-agnostic, and having multiple client language implementation to reference made it possible to implement our own client and runtime.

In this talk we&apos;ll cover some of the challenges involved in building out a functional MVP of Ray.jl, including interfacing with a complex C++ API, building binary artifacts with a build toolchain not supported by BinaryBuilder.jl, serializing functions across Julia processes, and more.  We&apos;ll also present case studies of how we&apos;ve used Ray.jl to scale workloads at Beacon, demonstrate the basic functionality that Ray.jl provides, and discuss future features we plan to add to the package.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/M3QTGC/resources/JuliaCon_2024_Ray.jl_S0tM0yw.pdf">Ray.jl Talk Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/M3QTGC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/M3QTGC/feedback/</feedback_url>
            </event>
            <event guid='b4d175f9-8c19-5ecd-ab95-43edee9634d6' id='43449' code='DLC7TH'>
                <room>Else (1.3)</room>
                <title>Extrae.jl: Advance profiling of Julia code in HPC clusters</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>`Extrae` is a tracer and sampler profiler developed at the Barcelona Supercomputing Center (BSC). In this talk we will showcase its feature and demonstrate how to use it to optimise the performance of Julia applications, in particular in the high-performance computing domain.</abstract>
                <slug>juliacon2024-43449-extrae-jl-advance-profiling-of-julia-code-in-hpc-clusters</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='46913'>Mos&#232; Giordano</person><person id='46500'>Sergio S&#225;nchez Ram&#237;rez</person><person id='47344'>Artur Garcia Saez</person>
                </persons>
                <language>en</language>
                <description>Julia has revolutionized the development of high-performance applications. Yet its native profiling capabilities limit to callstack sampling (i.e. periodic statistical sampling of the process callstack). Although useful for identifying bottlenecks, callstack sampling fails to explain the source of performance degradation. Without querying hardware counters, it is impossible to know if vector units are fully used or that memory access pattern is provoking many cache misses.

In this work, we present the bindings to the `Extrae` tracer and sampler profiler developed at BSC.
It lets you:

- Annotate user regions
- Sample hardware counters
- Inspect the callstack inside C libraries
- Mark inter-node, inter-process, inter-thread communication
- Intercept MPI, CUDA and OpenMP calls
- Emit custom user events

We will showcase the performance evaluation of a some scientific apps written in Julia on  x86_64 and AArch64 architectures. Some of these architectures features interesting capabilities such as scalable vector ISA (i.e. SVE) or unified memory between CPU and GPU (e.g. NVIDIA Grace Hopper). `Extrae` will show to be vital to understand its performance behaviour, and to later optimize it.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/bsc-quantic/Extrae.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DLC7TH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DLC7TH/feedback/</feedback_url>
            </event>
            <event guid='c2b147aa-cce9-5859-8c3d-046d1b145c33' id='43411' code='DLJXNY'>
                <room>Else (1.3)</room>
                <title>Parallel algebraic multigrid in Julia with PartitionedArrays.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>We present the current state of PartitionedArrays.jl. This library is a parallel sparse linear algebra toolkit implemented in Julia, which was first introduced to the Julia community in JuliaCon 2022. This time, we discuss the new tools and enhancements introduced since then, including parallel algebraic multigrid (AMG) methods and other parallel linear solvers. With this work, we want to contribute towards a native Julia alternative to well known HPC packages such as PETSc.</abstract>
                <slug>juliacon2024-43411-parallel-algebraic-multigrid-in-julia-with-partitionedarrays-jl</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='46457'>Francesc Verdugo</person>
                </persons>
                <language>en</language>
                <description>Algebraic multigrid (AMG) methods [1] are among the most popular techniques to solve large systems of linear algebraic equations on supercomputers. They are widely used in the computational solid and fluid dynamics communities to solve problems with several millions of unknowns in parallel. Even though AMG schemes are key in many high-performance computing (HPC) applications, there are not many Julia alternatives available. AMG methods have been implemented in pure Julia in AlgebraicMultigrid.jl [2], which is a very valuable tool for the Julia community, but its implementation is sequential and thus not suitable for large-scale problems on supercomputers. Parallel AMG schemes remain available almost exclusively in packages with a long history such as PETSc [3] and Hypre [4], and implemented in traditional HPC languages like Fortran and C/C++. Even though these packages can be used from Julia via bindings (see e.g. HYPRE.jl [5]), a modern Julia implementation of parallel AMG methods is still missing. Without this implementation, the Julia package ecosystem misses a key feature in its otherwise rich scientific computing toolkit.

In this talk, we present the latest additions to PartitionedArrays.jl [6]. The package was initially introduced in JuliaCon 2022, and we want to share the key updates introduced since then with our users and the broader Julia community. In particular, we will focus on the implementation and usage of parallel AMG methods and other large-scale linear solvers in Julia.

The goal of this work is not to merely translate existing implementations of AMG  into Julia, but to addresses some of their key limitations. Virtually all large-scale linear solvers are based on the Message Passing Interface (MPI) for parallelization. While MPI provides an efficient communication layer, it makes challenging the development cycle, specially in Julia. When debugging MPI code, a portion of the bugs can be tracked with conventional tools in a single MPI rank, but genuine parallel errors need to be debugged in parallel. Fixing an application that requires at least 100 ranks to crash can be very challenging, even with state-of-the-art (often proprietary) MPI debuggers. The situation is even worse in Julia. MPI codes are executed in batch mode with a fresh Julia session at each run. This makes difficult to reuse compiled code between runs, which is a major problem if your Julia code takes few minutes to compile from scratch. In addition, packages like Debugger are hard to use in combination with MPI on several processes. 

For this reason, PartitionedArrays.jl introduces an alternative parallel programming interface that aims at solving these problems. This interface exposes a set of communication directives, which are defined as simple operations on arrays (hence the name PartitionedArrays.jl). These operations are implemented both for standard (sequential) Julia arrays as well as for MPI-distributed arrays.  One can rely on standard arrays (and thus standard Julia tools) in the development and debugging process, and then change to MPI-distributed arrays when deploying large production runs in HPC clusters. This interface has been proven successful to implement distributed linear algebra data structures (vectors and sparse matrices), and key computational kernels (distributed sparse matrix-vector product). In this talk, we will show how it can also be exploited to implement AMG schemes and other important functions such as distributed sparse matrix-matrix multiplication kernels. With this, we aim at simplifying the development process of such complex algorithms.

References

[1] https://doi.org/10.1016/S0377-0427(00)00516-1
[2] https://petsc.org/release/
[3] https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods
[4] https://github.com/JuliaLinearAlgebra/AlgebraicMultigrid.jl
[5] https://github.com/fredrikekre/HYPRE.jl
[6] https://github.com/fverdugo/PartitionedArrays.jl</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/DLJXNY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/DLJXNY/feedback/</feedback_url>
            </event>
            <event guid='4d8505ad-89da-5a18-8722-a6b56024ae1c' id='42602' code='XLCNXN'>
                <room>Else (1.3)</room>
                <title>Trustworthy AI in Julia meets Supercomputing</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>[Taija](https://github.com/JuliaTrustworthyAI) is a growing ecosystem of packages geared towards *T*rustworthy *A*rtificial *I*ntelligence in *J*uli*a*.  Various ongoing efforts towards trustworthy artificial intelligence have one thing in common: they increase the computational burden involved in training and using machine learning models. This talk will introduce [TaijaParallel.jl](https://github.com/JuliaTrustworthyAI/TaijaParallel.jl): Taija&apos;s recent venture into supercomputing.</abstract>
                <slug>juliacon2024-42602-trustworthy-ai-in-julia-meets-supercomputing</slug>
                <track>Accelerated &amp; large-scale computing</track>
                <logo>/media/juliacon2024/submissions/XLCNXN/wide_logo_SsN4tSe.png</logo>
                <persons>
                    <person id='45766'>Patrick Altmeyer</person>
                </persons>
                <language>en</language>
                <description>In the wake of recent rapid advances in artificial intelligence (AI), it is more crucial than ever to ensure that the technologies we deploy are trustworthy. Efforts surrounding [Taija](https://github.com/JuliaTrustworthyAI) have so far centered around explainability and uncertainty quantification for supervised machine learning models. [CounterfactualExplanations.jl](https://github.com/JuliaTrustworthyAI/CounterfactualExplanations.jl), for example, is a comprehensive package for generating counterfactual explanations for models trained in [Flux.jl](https://fluxml.ai/Flux.jl/dev/), [MLJ.jl](https://alan-turing-institute.github.io/MLJ.jl/dev/) and more. 

### &#127760; Why supercomputing?

In practice, we are often required to generate many explanations for many individuals. A firm that is using a machine learning model to screen out job applicants, for example, might be required to explain to each unsuccessful applicant why they were not admitted to the interview stage. In a different context, researchers may need to generate many explanations for [evaluation](https://juliatrustworthyai.github.io/CounterfactualExplanations.jl/stable/tutorials/evaluation/) and [benchmarking](https://juliatrustworthyai.github.io/CounterfactualExplanations.jl/stable/tutorials/benchmarking/) purposes. In both cases, the involved computational tasks can be parallelized through multi-threading or distributed computing. 

### &#129300; How supercomputing?

For this purpose, we have recently released [TaijaParallel.jl](https://github.com/JuliaTrustworthyAI/TaijaParallel.jl): a lightweight package that adds custom support for [parallelization](https://juliatrustworthyai.github.io/CounterfactualExplanations.jl/stable/tutorials/parallelization/) to Taija packages. Our goal has been to minimize the burden on users by facilitating different forms of parallelization through a simple macro. To multi-process the evaluation of a large set of `counterfactuals` using the [MPI.jl](https://juliaparallel.org/MPI.jl/latest/) backend, for example, users can proceed as follows: firstly, load the backend and instantiate the `MPIParallelizer`,

```julia
using CounterfactualExplanations, TaijaParallel
import MPI
MPI.Init()
parallelizer = MPIParallelizer(MPI.COMM_WORLD)
```

and then just use the `@with_parallelizer` macro followed by the `parallelizer` object and the standard API call to evaluate counterfactuals:

```julia
@with_parallelizer parallelizer evaluate(counterfactuals)
```

Under the hood, we use standard [MPI.jl](https://juliaparallel.org/MPI.jl/latest/) routines for distributed computing. To avoid depending on [MPI.jl](https://juliaparallel.org/MPI.jl/latest/) we use [package extensions](https://www.youtube.com/watch?v=TiIZlQhFzyk). Similarly, the `ThreadsParallelizer` can be used for multi-threading where we rely on `Base.Threads` routines. It is also possible to combine both forms of parallelization.

### &#127941; Benchmarking Counterfactuals (case study)

This new functionality has already powered [research](https://arxiv.org/abs/2312.10648) that will be published at AAAI 2024. The project involved large benchmarks of counterfactual explanations that had to be run on a supercomputer. During the talk, we will use this as a case study to discuss the challenges we encountered along the way and the solutions we have come up with. 

### &#127919; What is next?

While we have so far focused on [CounterfactualExplanations.jl](), parallelization is also useful for other Taija packages. For example, some of the methods for predictive uncertainty quantification used by [ConformalPrediction.jl](https://github.com/JuliaTrustworthyAI/ConformalPrediction.jl) rely on repeated model training and prediction. This is currently done sequentially and represents an obvious opportunity for parallelization. 

### &#128101; Who is this talk for?

This talk should be useful for anyone interested in either trustworthy AI or parallel computing or both. We are not experts in parallel computing, so the level of this talk should also be appropriate for beginners.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaTrustworthyAI/TaijaParallel.jl">Github</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/taija-supercomp/presentation.html#/title-slide">Link to slides (Revealjs)</link>
                
                    <link href="https://www.patalt.org/content/talks/posts/2024-juliacon/taija-supercomp/presentation.html?print-pdf=#/title-slide">Link to slides (PDF)</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XLCNXN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XLCNXN/feedback/</feedback_url>
            </event>
            <event guid='1ff55e7a-e67c-5d45-8668-9c6cbc62eb47' id='44193' code='BDHASB'>
                <room>Else (1.3)</room>
                <title>Advancements in Peridynamics.jl for Dynamic Fracture Simulations</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>This talk will present the latest developments in Peridynamics.jl, a Julia package designed for dynamic fracture simulations. We rewrote the package from scratch to enhance multithreading and enable MPI support, redesigned the API to catch errors earlier, and implemented new material models to match the state-of-the-art peridynamics research. The talk will focus on how and why we changed the package and provide simple tutorials on the new API using fascinating examples of dynamic fracture.</abstract>
                <slug>juliacon2024-44193-advancements-in-peridynamics-jl-for-dynamic-fracture-simulations</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/BDHASB/logo_zWncC0G.png</logo>
                <persons>
                    <person id='47175'>Kai Partmann</person>
                </persons>
                <language>en</language>
                <description>Peridynamics is a nonlocal continuum formulation that uses an integro-differential equation to describe the relative displacement and forces between material points. This equation is also fulfilled for material discontinuities, allowing for modeling of crack propagation, fragmentation, and many other effects. Peridynamics has been shown to correctly map complex fracture problems with different materials, making it suitable for various engineering applications.

Our ongoing development aims to address the package&apos;s critical limitations and needed functionality enhancements. The newest version of the package acknowledges these challenges, particularly the limited support for high-performance computing. To improve this, we have rewritten the package from scratch, incorporating a dual strategy: multithreading via Threads.jl for an interactive user experience and MPI.jl integration for scaling simulations on HPC clusters. This effort involved rethinking the underlying data structure and implementing a customized halo-exchange approach to communicate between threads and MPI ranks. Additionally, a new API focuses on early error detection, addressing past issues where wrong user input could only be caught at the start of a simulation. Inspired by user feedback, the new API offers a more streamlined experience for single and multi-body simulations.

The bond-based model is the first peridynamics formulation with significant limitations and a high sensitivity to discretization errors. New material models that overcome these limitations exist. In the new version of the package, we introduce some of them, like the correspondence formulation, allowing for advanced simulations with higher accuracy and fewer discretization errors. The talk will feature simple tutorials on example simulations, highlighting the functionality of the new API and the expanded capabilities due to new material models and MPI integration.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/BDHASB/resources/JuliaCon2024_lzhAkmC.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/BDHASB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BDHASB/feedback/</feedback_url>
            </event>
            <event guid='902da231-cd05-517c-b182-498faf813504' id='43493' code='MXUGRG'>
                <room>Else (1.3)</room>
                <title>DistributedWorkflows.jl - A task-based workflow system interface</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>In this talk, we present a serializer-independent interface to a task-based workflow management system. This package aims at simplifying the process of writing a distributed application. Given a workflow pattern as a Petri net and the code for the workflow tasks, our package can be used on a cluster (e.g. with Slurm), to automate the application&apos;s parallel deployment. Hence, DistributedWorkflows.jl will be an invaluable addition to the growing high-performance computing packages in Julia.</abstract>
                <slug>juliacon2024-43493-distributedworkflows-jl-a-task-based-workflow-system-interface</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='43331'>Firoozeh Dastur</person>
                </persons>
                <language>en</language>
                <description>Over the last few years, Julia has gained rising amounts of attention in the High-performance computing community. 
Similarly, Julia developers have come up with packages making the use of HPC tools approachable for domain scientists. This is mainly due to Julia&apos;s design in performance and ease of use. ```Distributedworkflows.jl``` is an addition to this increasing collection of useful HPC packages in Julia.

In this talk, we will showcase ```DistributedWorkflows.jl```, a Julia interface to a task-based workflow management system that enables users to build domain-specific workflows in the form of high-level Petri nets and rely on the runtime system for the workflow&apos;s task scheduling. The underlying ecosystem of the workflow manager &quot;auto-manages&quot; the application runs with dynamic scheduling, in-built distributed memory transfer and distributed task execution. 

An important feature of ```DistributedWorkflows.jl``` is that it is independent of serialization format which makes it flexible to use and compatible with all serializer formats that are supported by Julia. The main objective of this package is to simplify the process of writing a parallel distributed application and enable HPC experts as well as domain scientists to easily deploy their workflow code from within the Julia environment.

The workflow is defined in the form of a high-level Petri net, which at the moment needs to be written in an xpnet file format following a certain XML schema. In the future, we will provide the generation of the Petri nets as a feature of this package for a better user experience. Using this interface, one can test the deployment of their parallel application locally before launching it on expensive cluster resources with ```Slurm``` or other cluster management tools. We will demonstrate this using various examples (locally), starting with a simple example and showing a more advanced example with a complex Petri net workflow design.

In the future, this package could also pair up with Julia&apos;s ```Distributed``` package, from its standard library. The ```Distributed``` package could take care of the resource management while this package handles the workflow management. This makes our package even more attractive for users who rely on the ```Distributed``` package for their applications.

In the end, we will show a list of features and upgrades to look forward to with regards to distributed computing and expand this package with user feedback. We provide an easy installation process and tutorials on the GitHub repository, ```https://github.com/FiroozehDastur/DistributedWorkflows.jl```, for anyone interested. This approach guarantees that everyone has the opportunity to benefit from the automated deployment of their distributed application, which will create the possibility to compute large examples that would have previously been considered infeasible to compute in their respective domains.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/FiroozehDastur/DistributedWorkflows.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MXUGRG/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MXUGRG/feedback/</feedback_url>
            </event>
            <event guid='ebcf7cc2-4ded-50ce-bc35-ba92071cf4ea' id='42915' code='SLLVYC'>
                <room>Else (1.3)</room>
                <title>Rembus.jl: a Pub/Sub and Remote Procedure Call middleware</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>The talk will be about Rembus: a new package for implementing distributed applications using a pub/sub communication style and/or a RPC communication style. 

Rembus integrates into a single middleware the Publish/Subscribe and the Remote Procedure Call pattern: this is a unique feature amongst similar existing solutions (for example kafka, MQTT, grpc).</abstract>
                <slug>juliacon2024-42915-rembus-jl-a-pub-sub-and-remote-procedure-call-middleware</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='46172'>Attilio Don&#224;</person>
                </persons>
                <language>en</language>
                <description>Rembus targets microservices oriented enterprise systems.

Main goals are:
- Make it easy implementing distributed applications avoiding the boilerplate of connections management.
- Overall performance.
- Broker and broker-less architecture.
- Exchange primitive types but also binary data and Dataframes objects between components.

Rembus leverages Julia&apos;s metaprogramming capabilities to propose a novel API approach for transforming a function into a &quot;distributed&quot; function, for example:

#### Pub/Sub: 1 publisher and N subscribers  

The application &quot;publisher&quot; produces a message:

```julia
@component &quot;publisher&quot;
@publish mytopic(arg1, arg2, arg3)
```

&gt; **NOTE:** arguments `arg1, arg3, arg3` are encoded as the data content of the published message with topic `mytopic`.

The application &quot;consumer1&quot; subscribes to the topic `mytopic`:

```julia
@component &quot;consumer1&quot;

# invoked for each received message on topic mytopic
function mytopic(arg1, arg2, arg3)
    # body
end

@subscribe mytopic   # declare interest to topic mytopic
```
The same hold true for &quot;consumer2&quot; .. &quot;consumerN&quot; applications each of them with specific body implementation of `mytopic` method.

#### Talk outline 

The talk session will be organized as follows:

- Introduction: motivations and Rembus main features.
- Fault-tolerance features: brief explanation of a non trivial use of [Visor.jl](https://github.com/cardo-org/Visor.jl)   
- How to implements pub-sub and RPC systems with Rembus: code examples.
- Demo: exchanging dataframes between Julia, Python and Rust.
- Q&amp;A</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/SLLVYC/resources/Rembus.jl_V5FLWWe.pptx">Rembus slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/SLLVYC/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SLLVYC/feedback/</feedback_url>
            </event>
            <event guid='87ad2797-e04c-5bae-b897-1e84721c90b0' id='44148' code='ARKMTV'>
                <room>Else (1.3)</room>
                <title>A live coding music performance with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>_Are you sick of practicing arpeggios? Is the metronome your natural enemy? Are you suffering from Julia withdrawal symptoms when you play music?_

_No worries, Julia can help._ Simply learn live coding, the art of changing a program that generates music _while it generates music!_ Generative music and improvisation combined. 

This presentation is a short music performance with Julia followed by a breakdown and tutorial into live coding with Julia.</abstract>
                <slug>juliacon2024-44148-a-live-coding-music-performance-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47939'>Steffen Plunder</person>
                </persons>
                <language>en</language>
                <description>_The core of this presentation is a live coding music performance using hot code reloading and [PortMidi.jl](https://github.com/JuliaMusic/PortMidi.jl)._

Live coding essentially combines musical improvisation with generative music. Expanding on the idea of the REPL (read-evaluate-print-loop), one can consider live coding as a performance during which &apos;the human&apos; changes &apos;the program&apos; that generates the music; all done in a way that does not interrupt the musical flow. This allows interactive exploration of musical ideas, and live coding is a very cool subgenre of electronic music.

There exist many domain-specific languages for this task: Extempore, Impromptu, Max, Pure Data, TidalCycles, and SuperCollider. The common challenge is to combine _hot code reloading_ during execution without introducing timing issues. These are all features Julia already has, making it a fun environment for live coding. 

To implement hot code reloading, we rely on _temporal recursion_. Imagine a function that calls itself after a given delay using `Base.invokelatest`. If we redefine the function during this sleeping time, we can change it without interrupting the &quot;read-evaluate-play music-recursion&quot;. Together with a bit of asynchronous programming, plain Julia is basically all you need for live coding. 

Now, the cool part is that Julia&apos;s ecosystem is much larger than most other live coding environments. For example, what about using [DifferentialEquations.jl](https://docs.sciml.ai/DiffEqDocs/stable/) to generate the notes? Or using [Makie](https://docs.makie.org/stable/)&apos;s reactive programming for visuals! And, of course, how about using the packages from [JuliaMusic](https://github.com/JuliaMusic) for the theory? Unlimited options to make the next hit (or extremely crappy tunes).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/SteffenPL/MusicTalk2024">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ARKMTV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ARKMTV/feedback/</feedback_url>
            </event>
            <event guid='c5f2ce28-49d8-5760-b1a7-897cee275a9e' id='43099' code='3M8WUH'>
                <room>Else (1.3)</room>
                <title>Randomized Diagonal Estimation in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>Implicit diagonal estimation is a long-standing problem that is concerned with approximating the diagonal of a matrix (function) that can only be accessed through matrix-vector products. We present RandomizedDiagonalEstimation.jl, which implements existing and novel randomized methods for accomplishing this task in a scalable way. The practical applications of the provided algorithms extend across diverse domains such as network science, material science, optimization and machine learning.</abstract>
                <slug>juliacon2024-43099-randomized-diagonal-estimation-in-julia</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/3M8WUH/RandDiag_logo_32a20Qz.svg</logo>
                <persons>
                    <person id='46196'>Niclas Popp</person>
                </persons>
                <language>en</language>
                <description>RandomizedDiagonalEstimation.jl provides the first comprehensive toolkit of methods for implicit diagonal estimation. It features established algorithms for approximating the diagonal of large matrices when one has only access to matrix-vector products. This problem is of interest in various fields of application, examples include the estimation of subgraph centralities in network science, the approximation of charge densities in material science or efficient second-order optimization methods in machine learning. The package includes the Girard-Hutchinson estimator and Diag++, recently proposed by Baston and Nakatsukasa. In addition, we propose and implement novel extensions tailored at the diagonal of matrix functions, such as the exponential and the inverse of a matrix, using polynomial interpolation and Krylov methods. The package integrates well within the Julia ecosystem and provides the possibility to easily add additional algorithms in the future.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/3M8WUH/resources/JuliaCon_Talk_YgJ86Ir.pdf">Slides RandomizedDiagonalEstimation.jl</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/3M8WUH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3M8WUH/feedback/</feedback_url>
            </event>
            <event guid='90b54988-9671-54c6-89ce-e19e459aad44' id='44435' code='QLVPSN'>
                <room>Else (1.3)</room>
                <title>Sustainable Development of Stencil-based HPC Applications</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>We present a successful approach for a sustainable development of stencil-based HPC applications in Julia. The approach includes automatic performance optimization for hardware-agnostic high-level kernels, data layout abstractions enabling memory layouts optimized per backend, and GPU-aware inter-process communication that is automatically hideable behind computation. We demonstrate on multiple examples near optimal performance and scaling on thousands of GPUs.</abstract>
                <slug>juliacon2024-44435-sustainable-development-of-stencil-based-hpc-applications</slug>
                <track>Accelerated &amp; large-scale computing</track>
                <logo>/media/juliacon2024/submissions/QLVPSN/logo_ParallelStencil_8sfZXE3.png</logo>
                <persons>
                    <person id='46673'>Ludovic R&#228;ss</person><person id='47405'>Samuel Omlin</person><person id='46679'>Ivan Utkin</person>
                </persons>
                <language>en</language>
                <description>In the context of the rapid evolution of hardware over the last decades and the fastly growing hardware diversity, the High Performance Computing (HPC) community has identified the three &quot;P&quot;s, (scalable) Performance, (performance) Portability, Productivity, as key goals for sustainable HPC developments. In order to bring these orthogonal goals under one hood, the challenge needs to be split up into manageable tasks, where the demanding computer science tasks are largely solved in what we call &quot;HPC building blocks&quot;. We present here a successful approach for sustainable development of stencil-based HPC applications, where the HPC building blocks are implemented in the three Julia packages ParallelStencil.jl, ImplicitGlobalGrid.jl and CellArrays.jl.

In our approach, numerical algorithms are formulated with architecture-agnostic math-close code, which hides computer science aspects as, e.g., parallelization and optimization as much as possible or sensible. Writing such code leads to a productivity like in a classical prototyping environment. The HPC building blocks turn then these codes into massively scalable high performance multi-GPU/CPU applications or frameworks. More concretely, the HPC building blocks 1) perform automatic performance optimization and parallelization for hardware-agnostic kernels written explicitly or in math-close notation (ParallelStencil.jl), 2) contain data layout abstractions enabling memory layouts optimized per backend (CellArrays.jl), and 3) enable GPU-aware  distributed parallelization that is automatically hideable behind computation (ImplicitGlobalGrid.jl).

Other important aspects of our approach are 1) extensibility of the math-close notation for writing computation kernels, 2) integration into the ecosystem enabling, e.g., Enzyme-powered automatic differentiation using high level syntax, and 3) compatibility of our architecture-specific code generation with Julia&apos;s extension feature. We discuss these points briefly.

We report performance and scaling of benchmarks and real-world applications on the EuroHPC flagship AMD GPU supercomputer, LUMI, and on the Nvidia GPU supercomputer Piz Daint at the Swiss National Supercomputing Centre. We show that near optimal performance and scaling on thousands of GPUs on the world&apos;s fastest supercomputers is possible.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QLVPSN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QLVPSN/feedback/</feedback_url>
            </event>
            <event guid='14ae019c-8200-5f97-b5ae-eb22b3bf0be4' id='44251' code='XQFTZB'>
                <room>Else (1.3)</room>
                <title>Robust Calibration of Industrial HVAC and Battery Systems</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Industrial systems often rely on modeling and simulation from design to operation and require robust, performant and scalable computational approaches. In this talk we will focus on techniques used to build robust calibration methods for HVAC and Battery systems in JuliaSimModelOptimizer, part of JuliaSim, a commercial product from JuliaHub.</abstract>
                <slug>juliacon2024-44251-robust-calibration-of-industrial-hvac-and-battery-systems</slug>
                <track>General</track>
                
                <persons>
                    <person id='47242'>Sathvik Bhagavan</person><person id='47240'>Sebastian Miclu&#539;a-C&#226;mpeanu</person>
                </persons>
                <language>en</language>
                <description>ModelingToolkit.jl provides a scalable and performant way of building large scale models for industrial systems due to its advanced symbolic manipulation techniques and its acasual nature.
Once these models are constructed, fine-tuning becomes essential to align their behavior with real-world industrial systems. This calibration process entails incorporating design constraints and integrating experimentally measured real-world data into the models.

Calibrating models to data can be difficult due to the behavioral complexity of the models and the challenges that are brought in by the data, such as noise, partial observability or sparsity of the measurements.

The JuliaSim Model Library includes high performance, composable, domain specific tools for industrial systems. JuliaSim-HVAC is one such component, which can be used to describe refrigeration, air conditioning systems etc. Additionally, JuliaSim-Batteries can be used to design and simulate electrochemical models of large battery packs.

In this talk we will explore techniques such as Single Shooting, Multiple Shooting, Collocation and Prediction Error Method exemplified on HVAC and Battery systems and show how they can help avoid local minima during calibration procedures. In order to demonstrate the robustness of our results, we will compare our predictions against validation data sets. Moreover we can investigate the effects of unidentifiability of parameters using Bayesian priors on the parameters.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XQFTZB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XQFTZB/feedback/</feedback_url>
            </event>
            <event guid='1c1affca-117d-5d8e-b850-fa7bfdd7e5d0' id='40009' code='VGEXHQ'>
                <room>Else (1.3)</room>
                <title>QSS: a solver for a large sparse stiff discontinuous system</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Quantized State System (QSS) solver is an alternative method to classic numerical integration methods in solving sparse systems of Ordinary Differential Equations (ODE), which exhibits stiffness and discontinuities. I will explain the internals of a package that implements these methods, and I will provide its results in the simulation of some well-known systems in comparison to the DifferentialEquations.jl package.</abstract>
                <slug>juliacon2024-40009-qss-a-solver-for-a-large-sparse-stiff-discontinuous-system</slug>
                <track>Math(s)</track>
                <logo>/media/juliacon2024/submissions/VGEXHQ/Elmongi_elbellili_poster_C9tw1JO.png</logo>
                <persons>
                    <person id='43966'>elmongi elbellili</person>
                </persons>
                <language>en</language>
                <description>In classic methods, the difference between tk (the current time) and tk+1 (the next time) is called the step size. In QSS, the difference between xk (the current value of one variable) and xk+1 (the next value) is called the quantum &#8710;. The step size is determined by the smallest time that is needed for a variable to exceed the threshold &#8710;. Since in QSS algorithms, variables of the system do not necessarily get updated at the same time, they can outperform classic solvers in large sparse stiff discontinuous systems such as switched power converter circuits. I built a family of explicit and implicit QSS algorithms of orders 1,2, and 3 in Julia. The package is in the testing phase, and many systems of ODEs are successfully tested as well as well-known problems such as the Tyson model and the Advection Diffusion Reaction problem. While the package is optimized to be fast, extensibility is not compromised. It is divided into 3 modules that can be extended separately: Problem, Algorithm, and Solution. The package uses other packages such as MacroTools.jl for user-code parsing, SymEngine.jl for Jacobian computation, and a modified TaylorSeries.jl that uses caching to obtain free Taylor variables. The approximation through Taylor variables transforms any complicated equations to polynomials, which makes root finding cheaper. The general form of the QSS algorithm is as follows:
- Find the variable &#8216;i&#8217; with the fastest dynamics and compute the elapsed time &#8216;e&#8217; since the last update.
- update its value using a Taylor expansion and compute the time of next change.
- update any variable &#8216;j&#8217; that depends on &#8216;i&#8217; and compute its next time of change.
- update any zero-crossing function that depends on &#8216;i&#8217;.
Even though, the QSS algorithms are significantly different from conventional methods implemented in the DifferentialEquations.jl, they can be incorporated in this ecosystem.
Repository: https://github.com/mongibellili/QuantizedSystemSolver.jl
issue in DifferentialEquation.jl where QSS was tested: https://github.com/SciML/DifferentialEquations.jl/issues/998</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/mongibellili/QuantizedSystemSolver.jl">Github</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/VGEXHQ/resources/JuliaCon2024_l69AO7D.pptx">ppt</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/VGEXHQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VGEXHQ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Struct (1.4)' guid='6307780f-c982-5d06-a25e-7461874db936'>
            <event guid='cb87de25-97cd-504b-8a6e-e1802761b5c9' id='39664' code='AZZLTN'>
                <room>Struct (1.4)</room>
                <title>Plots.jl - Quo vadis?</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>01:00</duration>
                <abstract>A get together of all the people interested in the current state and the future of Plots.jl</abstract>
                <slug>juliacon2024-39664-plots-jl-quo-vadis</slug>
                <track>Notebooks &amp; Graphics</track>
                <logo>/media/juliacon2024/submissions/AZZLTN/Plots_Ox1YL9f.png</logo>
                <persons>
                    <person id='43657'>Simon Christ</person>
                </persons>
                <language>en</language>
                <description>This BoF-meeting is aimed to gather people that are curious about shaping the future of Plots.jl. There will be a short overview of the current state and outstanding issues.
This will be followed up by an open discussion about onboarding new contributors and how to sustain maintenance.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/AZZLTN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AZZLTN/feedback/</feedback_url>
            </event>
            <event guid='9f649840-979f-5360-b858-93ac956f2d7d' id='44431' code='F7BHGS'>
                <room>Struct (1.4)</room>
                <title>Julia in HPC</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-12T11:30:00+02:00</date>
                <start>11:30</start>
                <duration>01:00</duration>
                <abstract>The Julia HPC community has been growing over the last years with monthly meetings to coordinate development and to solve problems arising in the use of Julia for high-performance computing.

The Julia in HPC Birds of a Feather is an ideal opportunity to join the community and to discuss your experiences with using Julia in an HPC context.</abstract>
                <slug>juliacon2024-44431-julia-in-hpc</slug>
                <track>Accelerated &amp; large-scale computing</track>
                
                <persons>
                    <person id='47396'>Valentin Churavy</person><person id='46913'>Mos&#232; Giordano</person>
                </persons>
                <language>en</language>
                <description>The JuliaHPC working group meets monthly to discuss challenges and issues of using Julia in HPC.

Building on the success of this format at JuliaCon&apos;23 and the well-received Julia BoF at SuperComputing23, we are looking forward to invite the wider Julia community again, and discuss Julia for high performance computing in person!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/F7BHGS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/F7BHGS/feedback/</feedback_url>
            </event>
            <event guid='0caffe4b-e089-56dd-a7c4-52630306d97c' id='42755' code='QLHUJ9'>
                <room>Struct (1.4)</room>
                <title>Systems biology: community needs, plans, and visions</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>01:00</duration>
                <abstract>The Scientific Machine Learning (SciML) ecosystem is rapidly gaining momentum within the field of systems biology. Following up on last year, with this birds of feather discussion we want to bring the international community of systems biology tool developers and users at one table to (a) brainstorm promising routes for future developments, and (b) facilitate collaborative projects.</abstract>
                <slug>juliacon2024-42755-systems-biology-community-needs-plans-and-visions</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='45896'>Paul Lang</person><person id='45971'>Sebastian Persson</person>
                </persons>
                <language>en</language>
                <description>**Purpose**: The Scientific Machine Learning (SciML) ecosystem in Julia holds great potential for applications in the field of systems biology. Much of this can be attributed to state-of-the-art ODE solvers and parameter estimation packages, and convenient interface with automatic differentiation packages, neural differential equations and systems biology standards/formats. While an increasing number of systems biology groups are starting to use Julia to address biological questions, many existing systems biology tools are not yet available in an easy-to-use manner in Julia.

In this Birds of Feather discussion we want to address the following questions:
1. What are the community needs, plans and visions?
2. Which existing systems biology tools hold great potential for faster implementations if ported to Julia?
3. Which new tools are enabled by the features of the SciML ecosystem?
4. Where can we find synergies and common interests for joining efforts on systems biology tool development?
5. (How) can we improve on the existing communication channels to facilitate coordinated and collaborative tool development?

**Significance**: Bringing researchers in the field of open-source systems biology tool development at one table to discuss the above questions will facilitate a flourishing ecosystem of systems biology tools and pipelines in Julia, and increase the uptake of the language by the community as a consequence.

**Agenda**: the following points will be on the agenda.
- ~5 min: Introduction by Paul Lang or Sebastian Persson
- ~10 min: Participants briefly addresses question (1) from above from their perspective
- ~30 min: Participants are split up into 2-5 groups to discuss questions (2)-(5) from above.
- ~10 min: One member of each group summarizes the main points from the group discussion for the other groups.
- ~5 min: Closing remarks by Paul Lang and Sebastian Persson
- (Optional if time is left: Talking to people from other discussion groups and unguided networking.)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QLHUJ9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QLHUJ9/feedback/</feedback_url>
            </event>
            <event guid='cf7ac9b7-4dab-54f5-b447-80fea2b15ca0' id='44361' code='PSFVVT'>
                <room>Struct (1.4)</room>
                <title>Julia for Fundamental Scientific Questions in Life Sciences</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>01:00</duration>
                <abstract>In the proposed panel for the Julia Conference, titled &quot;Empowering Life Sciences with Julia,&quot; we aim to highlight the significant impact of the Julia programming language in advancing life sciences, encompassing fields like chemistry, physics, and biology. The panel will explore Julia&apos;s capabilities in handling complex computations, facilitating interdisciplinary research, and its application in data analysis, visualization, machine learning, and AI.</abstract>
                <slug>juliacon2024-44361-julia-for-fundamental-scientific-questions-in-life-sciences</slug>
                <track>Biology &amp; Life Sciences</track>
                
                <persons>
                    <person id='45896'>Paul Lang</person><person id='47346'>Let&#237;cia Madureira</person><person id='46030'>Max de Rooij</person>
                </persons>
                <language>en</language>
                <description>In this proposed panel for the Julia Conference, we delve into the transformative role of Julia in the life sciences - chemistry, physics, and biology. Renowned for its high performance and user-friendly syntax, Julia stands at the forefront of computational advances addressing fundamental questions in these fields. The panel aims to illuminate how Julia&#8217;s integration into research and education can catalyze breakthroughs in data analysis, visualization, and simulation, thus accelerating scientific discoveries and fostering interdisciplinary work.

Key discussion points include:

	1.	Julia&#8217;s Impact on Performance and Efficiency: Focusing on Julia&#8217;s adeptness in handling complex computations and large datasets, a critical requirement for life sciences research.
	2.	Interdisciplinary Research and Collaboration: Demonstrating Julia&#8217;s role in bridging chemistry, physics, and biology through its versatile nature and compatibility with other languages.
	3.	Innovations in Data Analysis and Visualization: Showcasing how Julia&#8217;s potent data processing capabilities can unlock new insights, particularly in managing large-scale biological data.
	4.	Machine Learning and AI in Life Sciences: Discussing the expanding role of Julia in applying AI and machine learning for predicting and modeling in biological and chemical domains.
	5.	Modeling and Simulation Strengths: Highlighting Julia&#8217;s capabilities in precise modeling and simulations, integral to life sciences.
	6.	Championing Reproducibility and Open Science: Promoting Julia&#8217;s open-source ethos to foster collaborative, transparent, and reproducible scientific research.
	7.	Development of Specialized Tools for Life Sciences: Exploring the potential of creating novel, Julia-based tools tailored for life science research.
	8.	Educational Outreach and Accessibility: Strategizing the integration of Julia into life sciences curricula to broaden access for diverse student and researcher groups.

A prime example of these efforts is the &#8220;Introduction.jl&#8221; package, developed specifically to disseminate Julia among chemists in the LatinX community. This package, created by the panelist, encompasses modules on reaction mechanisms, chemiometry, and quantum chemistry, demonstrating Julia&#8217;s practical applications in chemistry. It exemplifies how Julia can be tailored to address specific educational needs and research interests within the life sciences.

This panel seeks to unite experts and enthusiasts from various scientific areas to discuss Julia&#8217;s integration in life sciences. It will feature presentations, interactive discussions, and Q&amp;A sessions, aiming to inspire, inform, and engage both the Julia community and life sciences professionals and students.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/PSFVVT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PSFVVT/feedback/</feedback_url>
            </event>
            <event guid='96628b5b-9d22-577d-9f39-f34cc53ffaf4' id='46480' code='QNJSCV'>
                <room>Struct (1.4)</room>
                <title>One Does Not Simply JuliaCon &#127755;</title>
                <subtitle></subtitle>
                <type>Birds of Feather (BoF)</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>01:00</duration>
                <abstract>JuliaCon is growing and changing as we attract a larger and more diverse audience across academia, research organizations, and businesses. How do we currently organize JuliaCon and how can we grow to address all our attendees and our online community members? What do you want to see at future JuliaCons, and in Julia&apos;s general online presence. How do you volunteer or help out in those efforts? All that and more at the JuliaCon Organizers BoF</abstract>
                <slug>juliacon2024-46480-one-does-not-simply-juliacon</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>JuliaCon has taken many different forms over the years, from a small event with &lt; 20 talks in 2014, to online events viewed by thousands, and finally the last two years of in-person conferences with well over 300 speakers / talks. The audience has also shifted over that time period, we see more and more attendees from businesses small and large, in addition to the often academic / research driven audience of traditionally associated with the conference. The first third of this BoF will be a peek behind the curtain of JuliaCon, the funding and committee structures, volunteering, etc. The rest of the BoF will be an open session about the future of JuliaCon as the conference grows to handle a larger and more diverse audience. The organizing committee is also responsible for much of the official online content on Julia Language channels, so we&apos;ll discuss the future of those channels, and how to use them to grow the reach of the language.

Finally, time permitting, we&apos;ll discuss how to foster local groups which can eventually play host to a JuliaCon or JuliaCon Local.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QNJSCV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QNJSCV/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Method (1.5)' guid='b0079e1b-0c12-5b12-b0b5-0dc1f3cd563e'>
            <event guid='8b54ab8d-1b4d-5b7a-8bdb-7b2e47900a61' id='53139' code='HCJ3SH'>
                <room>Method (1.5)</room>
                <title>What&apos;s new in the Julia extension for VS Code</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>The Julia extension for VS Code provides features that help with developing Julia packages and ease interactive coding. It is widely used in the Julia community and sees continuous development. This talk will go over features and enhancements introduced since last JuliaCon as well as ongoing and future developments.</abstract>
                <slug>juliacon2024-53139-what-s-new-in-the-julia-extension-for-vs-code</slug>
                <track></track>
                
                <persons>
                    <person id='47378'>Sebastian Pfitzner</person>
                </persons>
                <language>en</language>
                <description>The Julia extension for VS Code provides features that help with developing Julia packages and ease interactive coding. It is widely used in the Julia community and sees continuous development. This talk will go over features and enhancements introduced since last JuliaCon as well as ongoing and future developments.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HCJ3SH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HCJ3SH/feedback/</feedback_url>
            </event>
            <event guid='35ba1a1a-3c4a-50d1-aac9-35536ba2c641' id='44514' code='YM8TJT'>
                <room>Method (1.5)</room>
                <title>GenX: a high-performance tool for electricity system planning</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>The global electricity system is significantly transforming due to national and international efforts to reduce carbon emissions. To support the decision-making process in this changing electricity landscape, we have developed GenX, an open-source, highly configurable electricity resource capacity expansion model written in Julia and JuMP. The software allows the creation of different scenarios and optimization based on physical, operational, and policy constraints.</abstract>
                <slug>juliacon2024-44514-genx-a-high-performance-tool-for-electricity-system-planning</slug>
                <track>General</track>
                
                <persons>
                    <person id='47473'>Luca Bonaldo</person>
                </persons>
                <language>en</language>
                <description>The global electricity system is undergoing a significant transformation driven by both national and international initiatives focused on de-carbonizing electricity generation to combat climate change. This shift is further fueled by the increased adoption of distributed energy resources, the decentralization of electricity service provision, the digitization of power systems, and the broader electrification of transportation, heating, and industrial energy demand. Additionally, the growth of variable renewable energy sources like wind and solar energy contributes to the evolving landscape.

In this dynamic electricity environment, decision support tools play a pivotal role by aiding in the simulation of diverse scenarios, assessing the impact of new technologies, and exploring the consequences of emerging policies and incentives. An example of these tools is GenX, an open-source and highly modular capacity expansion model written in Julia. GenX abstracts power system operational details, offering decision-making support during the ongoing transformation of the power sector.
GenX utilizes linear programming and mixed integer linear programming, implemented in Julia and JuMP, to model various technologies, grid interconnections, and physical and policy constraints. The complexity of the problem, characterized by a substantial number of variables and constraints, poses significant computational challenges. Therefore, leveraging high-performance computing techniques and infrastructures becomes essential for effectively addressing these types of calculations. Adopting a centralized planner&apos;s perspective, GenX aims to determine the cost-optimal generation portfolio, storage, and transmission investments needed to meet a user-defined system demand.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/YM8TJT/resources/luca_bonaldo_oFGAMH5.pdf">Lightning talk slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/YM8TJT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YM8TJT/feedback/</feedback_url>
            </event>
            <event guid='24ff1192-53e8-590a-9b82-a0174e3194e8' id='44488' code='GFAW3F'>
                <room>Method (1.5)</room>
                <title>Investigating Crimes using Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Mathematics is a science and one of the most important discoveries of the human race on earth. In our daily life, we use mathematics knowingly and unknowingly. Many of us are unaware that forensic experts use mathematics to solve crime mysteries. In this talk, we will explore how Mathematics and Julia programming language is used to solve crime mysteries.</abstract>
                <slug>juliacon2024-44488-investigating-crimes-using-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47146'>Gajendra Deshpande</person>
                </persons>
                <language>en</language>
                <description>Julia is a Scientific Computing language and solving crime mysteries especially forensics is a scientific process. The investigation officers use the concepts of mathematics, science, geography, and technology to solve crime cases. The workshop begins with an introduction to forensic science and mathematics and covers basic principles thereby setting the stage. Then, we will solve simple crime puzzles using science and mathematics and simple Julia programs. Finally, we will solve a few complex hypothetical crime mysteries using advanced advanced concepts. The participants will learn how to use the concepts of science and mathematics such as chemistry, physics, biology, statistics, probability, trigonometry, and graph theory, and Julia and its packages such as Measurements.jl, Plots.jl, Graphs.jl, DataFrames.jl, RecursiveArrayTools.jl, and MatrixNetworks.jl to solve the crime puzzles.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GFAW3F/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GFAW3F/feedback/</feedback_url>
            </event>
            <event guid='70e60470-842d-596b-8239-448e52390e04' id='44432' code='QRXPDB'>
                <room>Method (1.5)</room>
                <title>TSearch: An Experimental Search System for the Julia Community</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:10</duration>
                <abstract>We present TSearch, an experimental software system which attempts to unify the disparate, heterogeneous information sources across the Julia community into a coherent, searchable structure.</abstract>
                <slug>juliacon2024-44432-tsearch-an-experimental-search-system-for-the-julia-community</slug>
                <track>Community</track>
                
                <persons>
                    <person id='47399'>Caleb Allen</person>
                </persons>
                <language>en</language>
                <description>Online communities preserve their written knowledge across a diverse set of digital repositories. The Julia community, for instance, organizes Julia&#8217;s source code on GitHub; it conducts conversation on the Julia discourse; and it hold realtime conversations on Slack, and so on.

Despite the highly heterogeneous formats of these community repositories, they each encompass a unique mechanism of Julia related communication, with varying degrees of formality and structure. In the aggregate, these platforms reflect a web of people and their multitudinous ways of communicating. 

Since the growth of the World Wide Web, search engines have primarily derived their ranking systems using a variety of techniques built from the graph structure provided by hypertext. 

The supremely successful PageRank algorithm powered the explosive growth of Google by deriving rankings largely with hypertext signals.

We discuss the limitations that hypertext presents in any endeavor to derive complex structure, especially in the information ecosystems generated by a coherent network of people like the Julia community.

We present TSearch, an experimental attempt to unify these disparate, heterogeneous sources into a coherent, searchable structure. As our motivating application we use the Julia programming language, its extensive library ecosystem, and its diverse communication platforms.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://docs.google.com/presentation/d/1I924872S9JKYTjQmFMAmKhBdcBxyQI_sXINeo3UAcA4/edit?usp=sharing">Presentation Slides</link>
                
                    <link href="https://tsearch.org">tsearch.org</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QRXPDB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QRXPDB/feedback/</feedback_url>
            </event>
            <event guid='bb168fbe-0cbc-51ab-b723-cc124bee929d' id='44264' code='FRSW3J'>
                <room>Method (1.5)</room>
                <title>InferOpt.jl: combinatorial optimization and machine learning</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:10:00+02:00</date>
                <start>11:10</start>
                <duration>00:10</duration>
                <abstract>[InferOpt.jl](https://github.com/axelparmentier/InferOpt.jl) is a Julia package for using combinatorial optimization algorithms in machine learning pipelines. It enables more expressive machine learning pipelines, and unlocks new applications in both machine learning and combinatorial optimization fields.
The goal of this talk is to showcase InferOpt&apos;s features and capabilities through some application examples.</abstract>
                <slug>juliacon2024-44264-inferopt-jl-combinatorial-optimization-and-machine-learning</slug>
                <track>Optimization</track>
                
                <persons>
                    <person id='47238'>L&#233;o Baty</person>
                </persons>
                <language>en</language>
                <description>Combinatorial optimization algorithms and many discrete functions in general are piecewise constant in their input, which means zero derivatives almost everywhere. Using these as layers in machine learning pipelines is difficult because of this lack of meaningful gradients.

InferOpt.jl is a toolbox containing many state-of-the art layers and loss functions that can be used learn such hybrid pipelines. Each method is implemented as a  generic wrapper for the combinatorial function you want to differentiate through, fully compatible with ChainRules.jl automatic differentiation ecosystem, and machine learning packages such as Flux.jl.

Slides: https://batyleo.github.io/JuliaCon2024-InferOpt/</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FRSW3J/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FRSW3J/feedback/</feedback_url>
            </event>
            <event guid='2194c339-4209-5e6e-ae71-cd2ec8f16d68' id='42643' code='KHPCUJ'>
                <room>Method (1.5)</room>
                <title>All that&apos;s new and improved in Optimization.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:20:00+02:00</date>
                <start>11:20</start>
                <duration>00:10</duration>
                <abstract>Two years ago, back in 2022, our Optimization.jl package took off. It&apos;s not just about the 600+ stars it&apos;s earned &#8211; it&apos;s how it&apos;s become a go-to tool for many users. What makes it stand out? It&apos;s the mix of solver options and automatic differentiation it offers, makes it a breeze to experiment with, more so than any other Julia package or those in other languages. Plus, we&apos;ve been busy improving the interface, adding cool new features that make using it an even better experience.</abstract>
                <slug>juliacon2024-42643-all-that-s-new-and-improved-in-optimization-jl</slug>
                <track>Optimization</track>
                
                <persons>
                    <person id='45802'>Vaibhav Dixit</person>
                </persons>
                <language>en</language>
                <description>Though there have been a multitude of exciting developments in the package, in the talk I will highlight some that are unique and extremely useful. The EnsembleProblem interface of SciML for optimization problems allows any algorithm to be used with a multistart strategy. The intermediate optimization state and the final solver statistics are now uniform across the solver wrappers. The state is passed to the callback so users can create complex callbacks for logging, plotting or termination conditions. Advanced symbolic capabilities allow for features like automatic solver selection based on problem structure, alias elimination in problems with equality constraints and more.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/KHPCUJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KHPCUJ/feedback/</feedback_url>
            </event>
            <event guid='7d12bd51-7325-55b9-ad3d-0cc4312f96d1' id='43527' code='3W8DDA'>
                <room>Method (1.5)</room>
                <title>Exploring musical tunings with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>The equal-tempered 12-tone scale is ubiquitous in modern western music.
It is characterized by successive semi-tones having a constant frequency ratio of 2^(1/12) &#8776; 1.06.
But there are many other ways to define tunings of musical instruments, and Julia is a great tool for exploring these tuning systems. The talk will demonstrate how I have used Julia to generate tones and explore tuning systems visually and auditory.</abstract>
                <slug>juliacon2024-43527-exploring-musical-tunings-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='47229'>Thomas A. Poulsen</person>
                </persons>
                <language>en</language>
                <description>Julia has a number of well designed packages for representation of musical notes and generation of sounds. I&apos;ve used these packages to explore tuning systems based on a series of blog posts by John Baez. I&apos;ll share my experiences and make some noise for Julia as a musical synthesizer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/tp2750/TuningSystems.jl">GitHub</link>
                
                    <link href="https://youtu.be/6Te9rThZaa4?list=PLP8iPy9hna6R5gUZLbSZCZTGJ0uncLBfi&amp;t=11909">Recording</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/3W8DDA/resources/slides_juliacon2024_AmGS7gU.pptx">TuningSystems-Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/3W8DDA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3W8DDA/feedback/</feedback_url>
            </event>
            <event guid='47929dec-593d-5c2f-92d4-ae475fab5d12' id='44511' code='YLXKQW'>
                <room>Method (1.5)</room>
                <title>TotalViewITCH.jl - Parse the messages in Julia!</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>What do financial markets look like up close? TotalView-ITCH is a unique data source that allows researchers to explore limit order activity on the Nasdaq exchange down to nanosecond precision. Working with this data, however, poses a challenge to researchers due to its volume (over 100 million messages per day) and its distinct binary format. This lightning talk describes a new package built to parse and process this deluge of data in Julia.</abstract>
                <slug>juliacon2024-44511-totalviewitch-jl-parse-the-messages-in-julia</slug>
                <track>Economics</track>
                
                <persons>
                    <person id='47469'>Colin Swaney</person>
                </persons>
                <language>en</language>
                <description>Nasdaq TotalView-ITCH (&#8220;TotalView&#8221;) is a data feed used by professional traders to maintain a real-time view of market conditions. TotalView disseminates all quote and order activity for securities traded on the Nasdaq exchange&#8212;over 100 million message per day&#8212;allowing users to reconstruct the limit order book for any security up to arbitrary depth with nanosecond precision. It is a unique data source for financial economists and engineers examining topics such as information flows through lit exchanges, optimal trading strategies, and the development of macro-level indicators from micro-level signals (e.g., a market turbulence warning).

While TotalView data is provided at no charge to academic researchers via the Historical TotalView-ITCH offering, the historical data offering uses a binary file specification that poses challenges for researchers. TotalViewITCH.jl is a pure Julia package developed to efficiently process historical data files for academic research purposes. The package consists of: (1) a core module to parse Historical TotalView binary file format messages (i.e., deserialization), (2) a module to reconstruct limit order books from parsed messages, and (3) a module to store processed data into a research-friendly format.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://cswaney.github.io/totalview-itch-juliacon-2024/#0">Slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YLXKQW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YLXKQW/feedback/</feedback_url>
            </event>
            <event guid='2f14cd21-019d-5a1c-bce5-c956c2623a12' id='44270' code='RU73SS'>
                <room>Method (1.5)</room>
                <title>JSOSuite.jl: one-stop solution for optimization</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>JSOSuite.jl is a one-stop solution for optimization in Julia. Built on top of the Julia Smooth Optimizers (JSO) packages, this package provides a user-friendly interface for users who want a quick solution to their linear or nonlinear optimization problems. In the background, JSO provides research-level optimization and linear algebra modules, which JSOSuite.jl packages conveniently.</abstract>
                <slug>juliacon2024-44270-jsosuite-jl-one-stop-solution-for-optimization</slug>
                <track>Optimization</track>
                <logo>/media/juliacon2024/submissions/RU73SS/jso-square_sH5t5Az.png</logo>
                <persons>
                    <person id='47258'>Abel Soares Siqueira</person>
                </persons>
                <language>en</language>
                <description>We bring JSOSuite.jl into the spotlight: a one-stop solution for optimization. This package provides an interface for users to quickly supply their optimization problem to one of our solvers. The solver is selected automatically, or selected by the user. This allows users to have access to research-level optimization solvers, most of which are written in pure Julia. This means that you can find solvers that handle multiple precision and custom types.
JSOSuite is powered by the Julia Smooth Optimizers ecosystem (https://jso.dev). This includes many optimization and linear algebra solvers, such as Percival.jl and Krylov.jl, as well as modeling interfaces---most notably, ADNLPModels.jl. With our modeling interfaces, you can supply the minimum information and use automatic differentiation, be explicit with all derivatives, or a mix of both. You can exploit the structure of the problems, for instance for Nonlinear Least Squares problems, or PDE-constrained optimization. Finally, you can integrate with JuMP and AMPL to keep using what you&apos;re familiar with.

The Julia Smooth Optimizers organization has been around since 2015. We have over 50 registered packages dealing with a variety of linear/nonlinear optimization and linear algebra topics. Many of our packages are in use in other ecosystems.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaSmoothOptimizers/JSOSuite.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/RU73SS/resources/JSOSuiteJuliaCon2024_1LzJuNZ.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/RU73SS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RU73SS/feedback/</feedback_url>
            </event>
            <event guid='5b396a4c-8428-5ca9-9447-1b635fde4e5f' id='44399' code='GBHW7G'>
                <room>Method (1.5)</room>
                <title>Real&#8209;Time Airborne Magnetic Navigation with MagNav.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>The Earth&#8217;s crustal magnetic field is a powerful tool for navigation as an alternative to GPS. MagNav.jl is an open-source Julia software package that contains a full suite of tools for aeromagnetic compensation and airborne magnetic anomaly navigation. Alongside baseline algorithms, such as Tolles-Lawson and an extended Kalman filter, this package enables multiple approaches for real-time compensation and navigation. This talk will cover these techniques and advanced use cases for MagNav.jl.</abstract>
                <slug>juliacon2024-44399-real-time-airborne-magnetic-navigation-with-magnav-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='54001'>Jonathan Taylor</person><person id='46468'>Albert R. Gnadt</person>
                </persons>
                <language>en</language>
                <description>The final talk of the MagNav.jl JuliaCon series will discuss the development and options for real-time compensation and navigation, which is important for real-world implementation. At a high level, MagNav.jl provides tooling to compensate for an aircraft&#8217;s magnetic field, removing most of the corruption to enable comparing magnetometer readings with detailed maps of the Earth&#8217;s magnetic field. It can then use the resultant signal, alongside other readings, as input to a navigation filter, such as an extended Kalman filter, in order to estimate position. Julia is integral to our research in this field due to its specialties in automatic differentiation, ease of neural network construction, and its performance. This talk will showcase how state-of-the-art (Tolles-Lawson) and machine learning aeromagnetic compensation models can be implemented for real-time compensation, otherwise known as online aeromagnetic compensation. Navigation performance for these approaches will also be compared with the standard (not online) models.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GBHW7G/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GBHW7G/feedback/</feedback_url>
            </event>
            <event guid='f1c71e9a-8480-5df3-9fb3-4ba75801f711' id='43455' code='BTHAFN'>
                <room>Method (1.5)</room>
                <title>&apos;What&apos;s the plan?&apos;, asked my robot</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>This talk delves into the challenges of developing task planning languages for robots in complex environments. In this work, we make use of categorical databases and rewriting methods, implemented in Julia, to effectively store and manipulate knowledge bases with large ontologies but sparse data. Julia&apos;s multiple dispatch and metaprogramming features have allowed us to develop a concise and scalable task planning system for robotic applications.</abstract>
                <slug>juliacon2024-43455-what-s-the-plan-asked-my-robot</slug>
                <track>General</track>
                
                <persons>
                    <person id='46507'>Angeline Aguinaldo</person>
                </persons>
                <language>en</language>
                <description>The slides for the talk can found [here](https://angelineaguinaldo.com/assets/slides/juliacon-2024/presentation.html#/title-slide).

As robots become more capable of computing short-horizon motion plans, the question of how to assemble these atomic gestures into more complex, goal-oriented task plans becomes increasingly relevant. In order to orchestrate the execution of motion plans, task planners must be able to reason about knowledge bases with large ontologies but sparse data. For example, in the world where the robot task planner must reason about items in a kitchen-- there are often at least one but no more than a ten, let&apos;s say, of a particular type of item in the scene. Contrastingly, these scenes are often rich with relationships between items such as items being next to or on top of other items. Therefore, it is necessary that a task planning system be capable of storing and manipulating such data. To date, there have been few task planning languages that focus on planning within worlds that are described using large ontologies-- a gap this work aims to fill.
Julia&apos;s multiple dispatch allows us to efficiently implement new logic for existing interfaces. This has been helpful as we expanded our implementation of ACSets to support dynamic instantiations of data. This is especially useful for our application because we often have to instantiate knowledge bases with facts as new information is obtained, for example when cognitive modules return results at different times. Additionally, Julia&apos;s metaprogramming has allowed us to define custom DSLs such that we can concisely structure the actions that manipulate our world state. In this talk, we will present the motivation for an alternate task planning language and show how we have leveraged features of the Julia programming language to express and store actions and world states. This work makes use of the packages-- [Catlab.jl](https://github.com/AlgebraicJulia/Catlab.jl), [AlgebraicRewriting.jl](https://github.com/AlgebraicJulia/AlgebraicRewriting.jl), and [ACSets.jl](https://github.com/AlgebraicJulia/Acsets.jl).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BTHAFN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BTHAFN/feedback/</feedback_url>
            </event>
            <event guid='7a4a7de7-04f4-5e9b-a9c5-afe7bbb934d9' id='44451' code='NS3NVT'>
                <room>Method (1.5)</room>
                <title>What&apos;s new in GraphBLAS.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>GraphBLAS.jl is a sparse linear algebra package which provides both conformant sparse AbstractArrays and a novel array type for writing graph kernels. Since the last talk on this package a lot has changed: A cross language JIT between Julia and C, complete AbstractArray support, compiler-based backends including GPU support, and Julia-level kernel fusion are all recent additions to the package.</abstract>
                <slug>juliacon2024-44451-what-s-new-in-graphblas-jl</slug>
                <track>Graphs</track>
                
                <persons>
                    <person id='47421'>Raye Kimmerer</person>
                </persons>
                <language>en</language>
                <description>Initially named SuiteSparseGraphBLAS.jl a few years ago, the current edition of GraphBLAS.jl provides among the fastest sparse linear algebra libraries in any language today. At it&#8217;s core is the SuiteSparse:GraphBLAS C library which provides hand-tuned kernels for CPU execution of sparse and graph algorithms. However, GraphBLAS.jl now uses these kernels as one of several directed acyclic graph (DAG) execution strategies which includes library functions from CUDA / AMDGPU, and runtime compilation from multiple compilers like Finch.jl. 

These new execution backends are supported by three separate array types, `EagerGBMatrix`, `LazyGBMatrix` and `GBMatrix`. `EagerGBMatrix` executes function calls in a blocking fashion, and performs minimal laziness or fusion (with the exception of lazy `setindex!`). The `LazyGBMatrix` performs no computation until a function is called to explicitly materialize the array, and any `LazyGBMatrix` which is not explicitly materialized may never be computed. However this does not conform to the `AbstractArray` interface, so the final type `GBMatrix` performs this laziness only when it is safe to do so. 

When laziness is enabled, or the lazy DAG is explicitly constructed, the GraphBLAS.jl runtime will first attempt to dispatch to hand-tuned kernels such as those found in CUDA/AMDGPU or SuiteSparse:GraphBLAS. SuiteSparse:GraphBLAS in particular provides a large number of function skeletons which are highly fusible. For instance, a matrix multiplication preceded and followed by multiple elementwise maps can be fused into a single function call. Using a novel Julia + C -&gt; LLVM cross language JIT built for GraphBLAS.jl the runtime generates code using LTO which is as fast as C native implementations of the same functions. This functionality is used to implement the lazy complex adjoint, by fusing the conjugation into the matrix multiplication, as well as other common AbstractArray functionality. A similar library of function skeletons is implemented in Julia for various important kernels like Sampled-Dense-Dense-Matrix-Multiplication.

Other fused expressions or arrays are not able to be dispatched to these hand-tuned libraries. This may occur for more complex expressions, or for array types which are unsupported by library backends. A particularly common case is when the fill value for a sparse array is not equivalent to the identity and/or annihnilator of the function. For these cases a compiler is used to generate a new kernel, which is cached to avoid expensive recompilation. Several compiler backends are supported including Finch.jl, and a modified version of TACO. In the future this may be expanded to more compilers including MLIR Sparsifier, the Sparse Polyhedral Framework, and Etch. 

In this talk we will briefly discuss the structure of DAG execution, before diving into performance numbers for a selection of common use cases and algorithms.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://www.github.com/JuliaSparse/SuiteSparseGraphBLAS.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NS3NVT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NS3NVT/feedback/</feedback_url>
            </event>
            <event guid='cf9372e7-6f8c-5056-8e3d-2ad9cbbcf76d' id='44240' code='AZCU8N'>
                <room>Method (1.5)</room>
                <title>BoxCox.jl -- A lightweight package with nice extensions</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>BoxCox.jl is a lightweight package implementing the Box-Cox transformation. It natively supports transformations of unconditional distributions and distributions conditional on a linear predictor. Via package extensions, it also has specialized support for the Wilkinson-Roger formula syntax, GLM.jl, and MixedModels.jl. Diagnostic plots are provided via a package extension for Makie.jl.</abstract>
                <slug>juliacon2024-44240-boxcox-jl-a-lightweight-package-with-nice-extensions</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='47225'>Phillip Alday</person>
                </persons>
                <language>en</language>
                <description>BoxCox.jl provides a StatsAPI.jl-compatible implementation of the Box-Cox transformation, with plans for supporting additional power transformations such as the Yeo-Johnson transformation and Bickel-Doksum transformation. The struct representing the fitted Box-Cox transformation is callable, such that the call `fit(BoxCoxTransformation, y).(y)` fits and transforms the data in single step. Implementations of the Box-Cox transformation differ in their normalization of the log-likelihood; BoxCox.jl&apos;s implementation is normalized to match the behavior of the MASS package in R.  The transformation is fit via nonlinear optimization, which can be applied to either the unconditional distribution or to a conditional distribution.  The core package supports a conditional distribution from linear regression when passed a suitable model matrix.  The core package is kept lightweight by placing specialized functionality in package extensions on Julia 1.9+. For example, the package also provides support for the StatsModels.jl-based implementation of the Wilkinson-Roger formula syntax and linear mixed-effects models from MixedModels.jl.  All of these packages are used to compute a conditional distribution.  No extension support is provided for GLM.jl-based models because the package-internal linear regression implementation is optimized for the repeated regression-model fitting done while fitting the Box-Cox transformation.  The resultant transformation can nonetheless be used to fit a model with GLM.jl. The package was motivated by mixed-effects models and the desire for a fast, easy-to-use implementation. The tight integration with MixedModels.jl provides for exactly this: a very fast implementation of the Box-Cox transformation compared to offerings in other languages. Via a Makie.jl-based extension, the package also provides a profile plot of the likelihood for different values of the &#955; parameter, including confidence intervals. These plots provide the analyst with the ability to more easily choose a parameter value that has a natural interpretation but is statistically indistinguishable from the maximum likelihood estimate -- for example, a transformation of time to speed.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/palday/BoxCox.jl">GitHub</link>
                
                    <link href="https://palday.github.io/juliacon2024/">Presentation Materials</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/AZCU8N/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AZCU8N/feedback/</feedback_url>
            </event>
            <event guid='8d7b2849-e8d0-5700-b892-4ca8d548e497' id='44355' code='LXAMKE'>
                <room>Method (1.5)</room>
                <title>MuJoCo.jl: A case study for developing Julia bindings</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Would you like to have access to your favourite C/C++ library from Julia, but don&apos;t know where to start? Follow this case-study for the development of [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl), which highlights the steps and tools required to create one of these packages.</abstract>
                <slug>juliacon2024-44355-mujoco-jl-a-case-study-for-developing-julia-bindings</slug>
                <track>Julia Internals and Tooling</track>
                
                <persons>
                    <person id='47332'>Jamie Mair</person>
                </persons>
                <language>en</language>
                <description>Slides at [https://cbindings-jc2024.netlify.app/](https://cbindings-jc2024.netlify.app/)

As a large and frequently updated C library, [MuJoCo](https://github.com/google-deepmind/mujoco) serves as a great case study to showcase what it takes to develop high quality bindings for Julia.  In this talk, we follow the development of [MuJoCo.jl](https://github.com/JamieMair/MuJoCo.jl), covering the following topics:
- Writing a script using [BinaryBuilder.jl](https://docs.binarybuilder.org/stable/) to generate a cross-platform JLL binary for your package.
- Creating a basic Julia wrapper for your JLL with automatic source code generation using [Clang.jl](https://github.com/JuliaInterop/Clang.jl).
- Taking your package to the next level by writing an automated script to scrape documentation and generate native bindings, converting to Julia types when necessary.
- Keeping your package up-to-date with **minimal** maintenance.

By the end of this talk, you should know what is needed to develop a portable, high-performance, user-friendly and well-documented package that gives the Julia community seamless access to an existing C/C++ library.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JamieMair/MuJoCo.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/LXAMKE/resources/Developing_Julia_bindings_for_a_C_project._9ZpcQC6.pdf">Talk slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/LXAMKE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/LXAMKE/feedback/</feedback_url>
            </event>
            <event guid='428fc660-c2b9-556d-ae47-780e470eb8a7' id='44440' code='GENHM9'>
                <room>Method (1.5)</room>
                <title>SequentialCompression.jl: Out-of-core multi array compression</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:10</duration>
                <abstract>This package offers efficient storage of large array snapshots during simulations, using ZFP compression for in-memory or out-of-core (file-based) storage. Both compress 2D to 4D arrays for intermediate steps in iterative process, which can be used for gradient calculation, plotting, and other applications. The Innn-memory compresses arrays into byte vectors, while the out-of-core storage compresses and writes array slices to files per thread, showing great performance in heavy simulations.</abstract>
                <slug>juliacon2024-44440-sequentialcompression-jl-out-of-core-multi-array-compression</slug>
                <track>Accelerated &amp; large-scale computing</track>
                <logo>/media/juliacon2024/submissions/GENHM9/mainGraphics_aNySfuU.png</logo>
                <persons>
                    <person id='47409'>&#193;tila Saraiva Quintela Soares</person><person id='47425'>Mauricio D Sacchi</person>
                </persons>
                <language>en</language>
                <description>It is common in numerical simulations to store the state variable, commonly an array, at each or select iterations of the simulation. This is done for many reasons, such as restarting the simulation from a certain point, analyzing the evolution of the state variable, or calculating the gradient using the adjoint state method. In this work, we present a package that aims to provide a simple interface to compress arrays that compose the state of a simulation using the ZFP compression algorithm.

Preserving a simulation&apos;s state is a well-established practice, often achieved through advanced techniques. In the context of implementing the adjoint state method, it is essential to store the state of the forward modelling function. This stored state is then utilized in each iteration of the adjoint modelling to compute the gradient. However, due to the extensive data involved &#8211; a product of the grid&apos;s spatial dimensions and the number of temporal iterations &#8211; storing every state in memory becomes impractical for large-scale models. 

The more straightforward solution is to store every state in a data storage device, which raises several other issues. The most obvious is that the storage device might need more space to support the size of the collection of arrays. Given enough space, the storage device has to have enough performance not to increase the simulation time per iteration considerably. However, even if it can store all of them, it is a matter of how many write cycles this storage device can handle before it breaks.
Compression tries to trade computation time for a reduction in needed storage, increasing the storage device&apos;s lifespan and allowing it to fit more data. However, several algorithms have different parameters to consider when it comes to floating point compression.

The chosen one was the ZFP algorithm (Lindstrom, 2014; Diffenderfer et al., 2019), with the wrapper ZfpCompression.jl, because it can handle different levels of lossy compression with different parametrizations that allow more control over throughput, space-saving and decompressed image quality. It is a lossy and lossless compression algorithm that can compress arrays of floating point numbers targeting numerical simulations. The main argument for its creation was that simulations usually have barely any size decrease when using lossless compression, as can be seen in Table 4 of Ratanaworabhan et al. (2006), given that the numbers are all floating point with very little room for deduplication techniques commonly employed by this kind of algorithm. However, lossy compression can use thresholding/truncation techniques to decrease the size of the array. However, it has to be careful to keep the signal-to-noise ratio lower so that it does not reduce the accuracy of the simulation. The ZFP algorithm allows users to control how much accuracy, throughput or precision is necessary for their specific problem and is highly parallelizable. Thus, the package described in this paper uses it in the backend by leveraging the ZfpCompression.jl package.

The package SequentialCompression.jl described in this report can compress a collection of arrays, fed to a data structure sequentially, and decompress arrays in any order by simple linear indexing. It has two compressors; one compresses whole arrays and saves them in a long binary vector in memory, and the other splits each array on its last dimension and compresses and saves each piece to one or several data storage devices, with one file per CPU thread. The former will be called the &apos;&apos;in-memory&apos;&apos; compressor, and the latter the &apos;&apos;multifile&apos;&apos; compressor. It aims to provide a simple interface to compress and access these arrays.

The interface of the described package provides much functionality in the form of optional keyword arguments for the constructor. The user can control what compressor he wants to use and specify a prediction of the number of arrays to be compressed to optimize the in-memory compressor. For the multi-file compressor, the user can specify a folder containing all compressed array slice files or different folders in different devices to maximize bandwidth.

The purpose of this package is to facilitate the usage of lossy compression of iterative processes such as physical simulations, where it is frequent to have arrays of the same size at each iteration. Depending on the number of threads, the performance obtained with the multifile compressor is between saving the array into disk and another higher dimensional array. In summary, it has the functionality and performance to be easily integrated into simulation research workflows.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/AtilaSaraiva/SequentialCompression.jl">The source code of the package</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GENHM9/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GENHM9/feedback/</feedback_url>
            </event>
            <event guid='a302ea11-2fac-5455-9fb9-6e87516057a0' id='44346' code='WJTHSD'>
                <room>Method (1.5)</room>
                <title>HighDimPDE.jl: Solving high dimensional PDEs using deep learning</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:10:00+02:00</date>
                <start>16:10</start>
                <duration>00:10</duration>
                <abstract>High-dimensional partial differential equations (PDEs) arise in various scientific domains, including physics, engineering, finance, and biology. However, simulating these PDEs is challenging due to the &#8220;curse of dimensionality.&#8221; As dimensions increase, the computational cost of solving these equations grows exponentially. HighDimPDE.jl is a Julia package that addresses this curse of dimensionality, offering deep learning-based solutions for the simulation of high-dimensional PDEs.</abstract>
                <slug>juliacon2024-44346-highdimpde-jl-solving-high-dimensional-pdes-using-deep-learning</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47330'>Ashutosh Bharambe</person>
                </persons>
                <language>en</language>
                <description>Building upon the SciML ecosystem in Julia, HighDimPDE.jl implements algorithms to solve problems related to high dimensional PDEs, such as non-local non-linear PDEs, Kolmogorov PDEs and their parametric families. Additionally, it provides solutions for optimal stopping strategies for pricing high-dimensional stock options (Obstacle PDEs).

In this talk, we will,
- Demonstrate the NNStopping algorithm for solving optimal expected pay-off and optimal stopping strategy for high-dimensional stock options.
- Demonstrate the NNKolmogorov algorithm for solving Kolmogorov PDEs
- Demonstrate the NNParamKolmogorov algorithm, which solves a parametric family of high-dimensional Kolmogorov PDEs, and provides a solution over all parameters and initial values of independent variables. 
- Building on the previous point, we will perform parameter estimation on the model obtained from NNParamKolmogorov.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WJTHSD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WJTHSD/feedback/</feedback_url>
            </event>
            <event guid='c5294167-14d0-5e8c-afa4-1a513622f59e' id='44405' code='3RFKKQ'>
                <room>Method (1.5)</room>
                <title>Cairn.jl: Enhanced Molecular Dynamics for Active Learning</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:20:00+02:00</date>
                <start>16:20</start>
                <duration>00:10</duration>
                <abstract>We introduce Cairn.jl, a Julia library of state-of-the-art active learning algorithms for training machine learning interatomic potentials for molecular dynamics simulation. This package provides a unifying Julia-based platform for rapid comparison and prototyping of active learning schemes, including a novel technique based on kernel Stein discrepancy for data querying and labeling.</abstract>
                <slug>juliacon2024-44405-cairn-jl-enhanced-molecular-dynamics-for-active-learning</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47436'>Pablo Zubieta</person><person id='47382'>Joanna Zou</person>
                </persons>
                <language>en</language>
                <description>**Background.** The adoption of machine learning methods in atomistic simulations has accelerated the tractability of computational materials characterization and discovery. *Machine learning interatomic potentials* (ML-IPs) are developed as surrogate models for estimating electronic structure properties such as potential energy and forces of local atomic environments. From a training dataset of quantum mechanical (QM) calculations of energy and forces, ML-IPs have the potential to achieve quantum-level accuracy at a fraction of the cost, enabling molecular dynamics (MD) simulation on scales at which macroscopically observable chemical and physical properties can be quantified. 

The central challenge in machine learning model development is the tight dependency of the model&#8217;s performance on the choice of reference data used for training. Developing a reference dataset for training ML-IPs is non-trivial, involving manual assembly of datasets based on expert heuristics or sampling atomic configurations from MD simulation, which often exhibit metastable dynamics and fail to converge on the canonical probability distribution [1]. As a response, several algorithms for *active learning* for ML-IPs have been introduced, where the objective is to most efficiently improve model performance through the iterative acquisition of training data and labeling using expensive QM calculations as an oracle. As noted in [2], comparison of these methods is difficult, due to &#8220;inhomogeneous [...] notation schemes&#8221; and implementations in different programming languages and platforms. 

**Contribution.** We introduce Cairn.jl, a Julia library of active learning algorithms for training ML-IPs. These techniques assemble diverse datasets of atomic configurations representing a wide range of energetic states to train ML-IPs capable of characterizing chemical and physical processes of interest. The active learning strategy in Cairn.jl is an alternating-stage algorithm where the first stage centers on data acquisition through sampling by MD simulation. Users may choose between existing simulators - such as Velocity Verlet or Langevin dynamics - and &#8220;enhanced&#8221; simulators implemented in Cairn.jl, in which a biasing force term in the equation of motion guides the simulation path toward underrepresented regions of the free energy landscape [3,4,5]. The samplers include:
* Query-by-committee methods [3]
* Uncertainty-driven dynamics [4,5]
* Stein repulsive dynamics [7,8]

The second stage centers on data labeling, in which a criterion calculated during MD simulation triggers retraining of the ML-IP. An uncertainty or diversity metric determines a subset of samples from the MD trajectory for which to label using calls to the oracle and augment to the training set. The retraining criteria include: 
* Thresholds using ensemble-based or GP-based estimates of uncertainty [3,4,5,6]
* Thresholds using similarity kernel evaluations (kernel Stein discrepancy) [7]  

We show that ML-IPs trained using iteration of this active learning scheme achieve greater accuracy with significant gains in efficiency compared to those trained with brute force methods of data acquisition and labeling. 

**Research impact.** This work provides one of the first platforms to unify recent active learning algorithms for ML-IPs. Moreover, it contains the first implementation of a novel active learning scheme derived from Stein variational gradient descent, to be detailed in a future article. The package provides the optionality to execute MD simulation on multiple software platforms, including the widely used LAMMPS and the Julia-native Molly.jl. Cairn.jl will enable easy comparison of the techniques, such that users may quickly prototype active learning routines and choose the algorithm best suited for their problem. 

**Relevance to the Julia community.** Cairn.jl fills a key gap in the growing Julia ecosystem for molecular simulation, existing in the software suite of CESMIX (Center for Exascale Simulation of Materials in Extreme Environments) and interfacing with packages such as PotentialLearning.jl, InteratomicPotentials.jl, Molly.jl, and ACEpotentials.jl. Moreover, the package serves as a starting point for general purpose active learning algorithms for machine learning model development which rely on MCMC-type sampling of probability distributions, which is a broader interest of the Julia scientific community. 

**References.**
[1] Comer (2015). J of Phys Chem B. doi: 10.1021/jp506633n.
[2] Henin (2022). LiveCoMS. doi: 10.33011/livecoms.4.1.1583.
[3] Smith (2018). J of Chem Phys. doi: 10.1063/1.5023802. 
[4] Kulichenko (2023). Nat Comp Sci. doi: 10.1038/s43588-023-00406-5.
[5] van der Oord (2023). npj Comp Mat. doi: 10.1038/s41524-023-01104-6.
[6] Vandermause (2020). npj Comp Mat. doi: 10.1038/s41524-020-0283-z. 
[7] Liu (2016). NeurIPS. url: http://arxiv.org/abs/1608.04471.
[8] Ye (2020). NeurIPS. url: http://arxiv.org/abs/2002.09070.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/3RFKKQ/resources/Cairn_ActiveLearning_JuliaCon2024_lqYQEmR.pdf">slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/3RFKKQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/3RFKKQ/feedback/</feedback_url>
            </event>
            <event guid='866e5070-28d1-5fda-a810-cdbacbe9804b' id='43289' code='JNFYPP'>
                <room>Method (1.5)</room>
                <title>cadCAD.jl: A Modeling Library for Generalized Dynamical Systems</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>This talk introduces cadCAD.jl, a work in progress open source Julia library for modeling and simulating dynamical systems with generic attributes. Instead of evolving numbers over time, system engineers and data scientists can now evolve any kind of data structure in their dynamic systems simulations.</abstract>
                <slug>juliacon2024-43289-cadcad-jl-a-modeling-library-for-generalized-dynamical-systems</slug>
                <track>General</track>
                
                <persons>
                    <person id='46351'>Emanuel Lima</person>
                </persons>
                <language>en</language>
                <description>This talk introduces cadCAD.jl, a work in progress open source Julia library for modeling and simulating dynamical systems with generic attributes. Instead of evolving numbers over time, system engineers and data scientists can now evolve any kind of data structure in their dynamic systems simulations. With cadCAD.jl, models of these systems can yield: (1) all possible trajectories produced by transformations; (2) identification of properties associated with underlying assumptions; and (3) iterated insights about the model. Our goal with this talk is to show the main ideas behind the library, how it promotes open science, and how it would fit in a data science workflow, by running an example simulation.

Outline:

Introduction (2 minutes)
What is a dynamical system and why should you care (5 minutes)
What is a generalized dynamical system and how it empowers modelers (5 minutes)
What are block diagrams and what are their relation to generalized dynamical systems (5 minutes)
How cadCAD.jl fits all those concepts into an easy to use UI and UX (3 minutes)
Live demo of a simulation from start to finish (10 minutes)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/cadCAD-org/CadCAD.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/JNFYPP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/JNFYPP/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='For Loop (3.2)' guid='8c116ae7-f15d-5d19-ba00-c5a85442d1b8'>
            <event guid='ce754859-6306-5627-9eef-e15822d7de8a' id='44502' code='D3BHTT'>
                <room>For Loop (3.2)</room>
                <title>NeuroTree - A differentiable tree operator for tabular data</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>[NeuroTreeModels.jl](https://github.com/Evovest/NeuroTreeModels.jl) introduces `NeuroTree`, a differentiable tree operator for tabular data. It&apos;s implemented as a general neural network building block, similar to `Dense` or `Conv`, making it composable with the components of the Flux ecosystem.
The library includes a ready to use regressor that follows the MLJ interface.  Comprehensive benchmarks on common datasets show its competitiveness with state-of-the-art boosted tree models.</abstract>
                <slug>juliacon2024-44502-neurotree-a-differentiable-tree-operator-for-tabular-data</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47460'>Jeremie Desgagne-Bouchard</person>
                </persons>
                <language>en</language>
                <description>NeuroTree addresses the greediness of traditional trees by having all node and leaves learnt simultaneously and incorporates the benefits of boosting and bagging through a built-in ensemble of trees.

Computation of leaf weights consists in accumulating the weights through each tree branch, resulting to in-place element wise operations that are not friendly to auto-differentiation engines. This limitation is overcome using custom reverse rules through ChainRules, both for CPU and GPU.

Benchmarks were run against some of the most common regression datasets for regression, classification and ranking tasks and state of the art algos (XGBoost, LightGBM, CatBoost, EvoTrees). We show that NeuroTree is the single best for 2 of the 6 datasets (Higgs and YEAR), close to best on 2 others, but perform worst on the 2 ranking tasks.

We also highlight the relevance of Julia&apos;s machine learning capabilities in the commercial context of a portfolio manager.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/D3BHTT/resources/NeuroTrees-JuliaCon2024_z89vsNy.pdf">NeuroTrees-JuliaCon2024.pdf</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/D3BHTT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/D3BHTT/feedback/</feedback_url>
            </event>
            <event guid='319d6c1c-59ad-5e8d-8c3f-fae0256595af' id='44438' code='AADQNR'>
                <room>For Loop (3.2)</room>
                <title>The general purpose algorithmic differentiation wrapper ADOLC.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>In the Julia community, there are a lot of packages specialized for single (i.e. not combined) methods of algorithmic differentiation (AD), like the well-known ForwardDiff.jl or ReverseDiff.jl. In contrast, the ADOL-C (https://github.com/coin-or/ADOL-C) package was aimed to build a general purpose AD package, which was originally written in C/C++. The newly developed package ADOLC.jl combines the various functionalities of ADOL-C with the convenient usability of Julia.</abstract>
                <slug>juliacon2024-44438-the-general-purpose-algorithmic-differentiation-wrapper-adolc-jl</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47407'>Tim Siebert</person>
                </persons>
                <language>en</language>
                <description>Calculation of exact derivatives is a cornerstone of scientific computing. It enables deep learning, solving non-linear partial differential equations, simulating models in quantum field theory or even quantify the sensitivity of a portfolio value with respect to a changing volatility, to mention just a few applications. The calculation of the derivatives becomes quickly very challenging, when derivatives of complex algorithms or higher derivative tensors are required. Therefore, there is a need for practical AD software packages to automatizes the calculation for the scientific computing community. The most known techniques are the forward and reverse mode which are efficient to calculate first derivatives in various situations. When it comes to second or higher-order derivatives, combinations of forward and reverse mode are mostly more efficient, limiting the use-case of packages that are based on merely one method. Additionally, instead of full matrices including all partial derivatives, many real-world algorithms only involve jacobian or hessian vector products. In the Julia community, there are a lot of packages specialized for single (i.e. not combined) methods of AD, like the well-known ForwardDiff.jl or ReverseDiff.jl. In contrast, the ADOL-C (https://github.com/coin-or/ADOL-C) package was aimed to build a general purpose AD package, which was originally written in C/C++. The newly developed package ADOLC.jl combines the various functionalities of ADOL-C with the convenient usability of Julia. ADOLC.jl is designed to enable applications that are unfamiliar with the AD methods, to leverage the right AD-mode in the right situations. To this end, ADOLC.jl includes functionalities for forward and reverse mode and an easy-to-use derivative driver which can switch the AD mode based on the dimensions of the input and output of the given function. Furthermore, there are drivers for Taylor series propagation, jacobian and hessian vector or matrix products, as well as drivers for arbitrary high derivative tensors, among others. 
The interested reader is referred to the project&#8217;s GitHub: https://github.com/TimSiebert1/ADOLC.jl 
In the talk, we will go through the most important functionalities of ADOLC.jl. The attendee will learn how to easily compute the derivatives of a given program in forward and reverse mode, as well as the corresponding higher-order derivatives. Since the computation of higher-order derivatives should exploit the symmetries of the partial derivatives, there will be a short explanation on how to obtain the tensor in a compressed matrix format and how to decompress it to the full tensor. In the end, it will be shown how to propagate a Taylor series. The low-level methods, directly translating the C/C++ functions and the more convenient higher-level functions, are presented. The low-level functions provide the advanced user more control, whereas the higher-level functions choose suitable low-level functions in different situations.
The main goals of the talk are:
	- how to compute first-order derivatives in forward and reverse mode 
	- how to obtain higher-order derivative tensors
	- how to do a Taylor series propagation 
It has to be emphasized, that this package is a Julia wrapper of the C/C++ package ADOL-C. Thus, ADOLC.jl aims to directly translate most of the functions of ADOL-C to Julia. In addition, we focus on implementing higher level functions, which combines different translated functions to improve the usability. This will include for example, a derivative function which automatically selects the right mode for the evaluation from a user-defined function and a given derivative order.
The package aims to reduce the effort for users to use a lot of different methods from the AD world.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/AADQNR/resources/juliacon24_adolc_NVbxAnD.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/AADQNR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/AADQNR/feedback/</feedback_url>
            </event>
            <event guid='bcc5adf6-b6c9-5ee4-80e2-3ae53b387b22' id='44306' code='FUWUXB'>
                <room>For Loop (3.2)</room>
                <title>AI Wrote This: Discover Generative AI in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Dive into the world of Generative AI with Jan as he explores its potential and applications within the Julia ecosystem. 
Learn why GenAI matters, discover real-world applications across leisure, productivity, and business, and gain practical tips for building successful GenAI projects.
Join the growing community of GenAI developers in Julia and start building today!</abstract>
                <slug>juliacon2024-44306-ai-wrote-this-discover-generative-ai-in-julia</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47289'>Jan Siml</person>
                </persons>
                <language>en</language>
                <description>In this JuliaCon talk, we will explore the exciting world of Generative AI within the Julia ecosystem. We will examine the current state of Generative AI in Julia, focusing on where we see strengths and where are the gaps screaming to be filled by tinkerers. 

Join us at JuliaCon to dive into the world of Generative AI in Julia! We&apos;re going to take a close look at what&#8217;s currently happening in this exciting field, exploring the tools and technologies that are available right now in Julia. The main focus will be the text modality and Large Language Models (LLMs).

We&#8217;ll discuss the benefits of using Generative AI to help you figure out if it&apos;s something you&apos;d like to try or get involved in.

We&apos;ll also highlight areas that are ripe for some improvement and growth. This is where the Julia community comes in: we believe that with your input and contributions, we can sprinkle some of that Julia magic sauce on these areas, enhancing them to meet the high standards of innovation and excellence that other Julia tools exemplify.

We&apos;re going to keep things practical, showcasing real-world applications and the tools that make them possible. It&#8217;s all about giving you a clear picture of how Generative AI can be used, from start to finish, in various projects.

So come along, learn, and get inspired. This is a great opportunity to contribute to the growth and innovation of Generative AI in the Julia ecosystem. Let&#8217;s work together to make some amazing things happen!

&#8594; Thank you, GPT4! I couldn&#8217;t have said it better


Resources that will be covered:
- [Awesome Generative AI meets Julia](https://github.com/svilupp/awesome-generative-ai-meets-julia-language)
- [Julia LLM Leaderboard](https://github.com/svilupp/Julia-LLM-Leaderboard)
- [PromptingTools.jl](https://github.com/svilupp/PromptingTools.jl)
And many more...!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/FUWUXB/resources/jan-siml-ai-wrote-this-slides-uploaded_hnqtSeB.html">Slides</attachment>
                
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/FUWUXB/resources/jan-siml-ai-wrote-this-report-uploaded_ATUwkKm.html">Report</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/FUWUXB/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FUWUXB/feedback/</feedback_url>
            </event>
            <event guid='4ff4426b-46c8-5ac8-a4e5-423e30c9255b' id='42943' code='J9D8PL'>
                <room>For Loop (3.2)</room>
                <title>Causal Machine Learning with CausalELM</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>Causal inference has proven invaluable to many organizations, however, it is often infeasible because it requires them to conduct expensive experiments. Fortunately, advances in causal machine learning give us new methods to estimate causal effects from observational data. Accordingly, in this talk, I will introduce CausalELM, a package that implements causal estimators based on extreme learning machines, and discuss how it can be used to estimate average and individualized treatment effects.</abstract>
                <slug>juliacon2024-42943-causal-machine-learning-with-causalelm</slug>
                <track>AI/ML/AD</track>
                <logo>/media/juliacon2024/submissions/J9D8PL/github_logo_Mbq7iHU.jpg</logo>
                <persons>
                    <person id='46052'>Darren Colby</person>
                </persons>
                <language>en</language>
                <description>Causal inference is a useful tool, not only for those conducting academic research, but also large organizations deciding on how to allocate resources. For example, streaming services use A/B tests to decide whether to roll out a new feature, rideshare companies estimate individual treatment effects and use them to determine how much to charge passengers, and e-commerce companies perform causal inference to decide which products to recommend to users. However, estimating causal effects is not easy. Running A/B tests or randomized control trials are expensive: researchers do not have the ability to change public policies, or the dimensionality of the potential covariates is too high for traditional statistical methods. CasualELM addresses these and other challenges by leveraging recent advances in causal machine learning. To that end, we will cover the following main topics:

         &#8226;      Potential Outcomes Framework: We will briefly discuss the potential outcomes framework, 
                which CausalELM&apos;s estimators fall under.

         &#8226;      Motivating Examples: I will motivate the talk with two examples. First, I will demonstrate 
                how CausalELM can be used to estimate the effect of 401(k) pension plan eligibility on net 
                worth using double machine learning. Second, I will use a recent study of the effect of 
                development aid on Taliban attacks to demonstrate how to estimate individualized treatment 
                effects in CausalELM . These examples will make up the majority of the talk.

          &#8226;     Extreme Learning Machines: We will discuss what extreme learning machines are, how 
                they work, and how they are used in ensembles in CausalELM.

          &#8226;     Other Estimators: Besides the motivating examples, we will touch upon the other 
                estimators implemented in CausalELM.

          &#8226;     Comparison with Other Packages: We will talk about how CausalELM is different from 
                other causal machine learning libraries and the main tradeoffs it makes.

The focus of the talk will be on the implementation of causal machine learning tasks, rather than the mathematical theory behind them, so those without an extensive background in statistics should not feel intimidated.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/dscolby/CausalELM.jl">Github</link>
                
                    <link href="https://github.com/dscolby/JuliaCon2024">Notebooks to follow along with the talk</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/J9D8PL/resources/JuliaCon_2024_Presentation_FUmLgZ6.pdf">Presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/J9D8PL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/J9D8PL/feedback/</feedback_url>
            </event>
            <event guid='be9a0645-a562-5cf2-b994-0f3d5e5e3ad3' id='44364' code='PUWYKE'>
                <room>For Loop (3.2)</room>
                <title>Symbolic AI workflows with Sole.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>In this talk, we update on the developments of the [Sole.jl](https://github.com/aclai-lab/Sole.jl) framework for **symbolic AI**. In the past year we have been implementing a few algorithms for learning symbolic models (e.g., rules, lists, trees, forests), and for analyzing, evaluating, and post-processing the learned models.</abstract>
                <slug>juliacon2024-44364-symbolic-ai-workflows-with-sole-jl</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47350'>Giovanni Pagliarini</person>
                </persons>
                <language>en</language>
                <description>Symbolic AI provides transparent alternatives to standard black-box AI algorithms, and includes methods for rule extraction, data mining and decision tree/list learning. The field is underdeveloped, its potential still to discover, and a programming framework for it is needed.

Sole.jl proposes itself as the first programming framework specifically tailored for symbolic AI workflows, and it puts specific focus on a symbolic representation of knowledge, in the abstract form of syntax trees. At the moment, it is still at an early stage, but its vision includes symbolic algorithms for processing data, for learning rules, trees, lists, and ensembles, and for post-hoc processing the learned models and their knowledge.

In this talk, we overview the structure of Sole.jl, and update on some advancements made in the past year.

Additional resources:
1. A 10-hour course on Modal Symbolic Learning with Sole.jl: [YouTube playlist](https://www.youtube.com/playlist?list=PLyuPAlvJWIqLvYpGhenzXCA1JMW2HQwBv), [Slides and Jupyter Notebooks](https://github.com/aclai-lab/modal-symbolic-learning-course/);
2. A technical motivation for Sole.jl was [presented at JuliaCon2023](https://live.juliacon.org/talk/LYSQWS)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/aclai-lab/Sole.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/PUWYKE/resources/slides_7ARy2wW.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/PUWYKE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/PUWYKE/feedback/</feedback_url>
            </event>
            <event guid='8c424854-86be-5a93-b971-153a5e89d2e4' id='43275' code='UKB7XN'>
                <room>For Loop (3.2)</room>
                <title>What&apos;s new with GraphPPL.jl?</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>Probabilistic Programming Languages (PPLs) aim to shield users from the complex mechanics of Bayesian inference. GraphPPL has previously been introduced as the PPL of RxInfer.jl. GraphPPL uses Julia&apos;s metaprogramming functionality to transform high-level user code into correct Julia syntax. In the newest release of GraphPPL, users can use any GraphPPL model as a submodel in larger models, introducing modularity into probabilistic programming.</abstract>
                <slug>juliacon2024-43275-what-s-new-with-graphppl-jl</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='46347'>Dmitry Bagaev</person><person id='46339'>Wouter Nuijten</person>
                </persons>
                <language>en</language>
                <description>Introduction

Popular Probabilistic Programming Languages (PPLs) in Julia include Turing.jl and GraphPPL.jl, with both packages exploiting Julia&apos;s metaprogramming functionality to design a syntax for specifying probabilistic generative models. This metaprogramming approach differs from approaches like Pyro that aim to define the syntax of the PPL within the used general-purpose language. PPLs based on metaprogramming generally offer a higher-level programming interface and can shield many implementational details from the user by transforming high-level user code into specific instructions.

A shortcoming of existing PPLs is that there is a limited notion of modularity or reuse of models in larger models. The newest release of GraphPPL aims to fill this gap by allowing users to use any previously specified model as a submodel. By explicitly framing the generative model as a Factor Graph, existing models can always be used as subgraphs in a larger generative model. The newest release of GraphPPL also removes the dependency on a particular inference backend from the requirements, making it a backend-agnostic PPL that fully specifies a generative model and possible inference constraints. 

Nested model specification

For deep learning modeling, PyTorch revolutionized model specification by introducing a modular model specification language. Any PyTorch module can be used as a submodule in a larger model. GraphPPL introduces this modularity to Probabilistic Programming, by allowing the user to use any GraphPPL model in a larger model specification. By materializing the specified model as a Factor Graph, existing models are represented as specific graphs and can be used as subgraphs in larger models. By allowing users to build complex models through the composition of nested sub-models, GraphPPL alleviates researchers from the burden of interpreting an entire model when making subtle adjustments. Instead, the complexity is encapsulated within the nested submodels, presenting users with a concise and focused view of the code relevant to their specific modeling decisions. This modularity is akin to the concept of functions in ordinary programming, where functions greatly improve the readability and maintainability of computer programs. Similarly, GraphPPL sub-models enhance the modularity and readability of probabilistic models, allowing for a more intuitive and efficient workflow for researchers and practitioners.

Backend agnosticism

Previous releases of the GraphPPL language were dependent on the inference backend provided by ReactiveMP.jl. This dependency has been removed, making GraphPPL a backend-agnostic PPL. The main advantage of this is that other Bayesian Inference packages can use GraphPPL as their user interface. A model created in GraphPPL fully specifies a generative model and inference constraints necessary for inference backends to perform Bayesian Inference. 


Conclusions

The most recent update to GraphPPL redesigned the language to support nested model specification through the materialization of a Factor Graph. Along with other significant quality-of-life updates, this marks a significant milestone in the design of the PPL and by extension to the RxInfer ecosystem.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/UKB7XN/resources/juliacon-graphppl_aNAEQGo.pptx">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/UKB7XN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UKB7XN/feedback/</feedback_url>
            </event>
            <event guid='38866324-eddd-587a-8782-b7c9d2443ce9' id='44413' code='ZGULY8'>
                <room>For Loop (3.2)</room>
                <title>Modern CI/CD Machine Learning workflows using Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>Machine learning model development, characterized by iterative experimentation and adjustments, often leads to complex model iterations, making tracking and debugging challenging. This talk explores the application of CI/CD methodologies to machine learning, using Julia&apos;s Pkg ecosystem, Buildkite, GitHub, and MLflow. We showcase a streamlined process for efficient model development and tracking that can lead to mass robust experimentation for machine learning workflows</abstract>
                <slug>juliacon2024-44413-modern-ci-cd-machine-learning-workflows-using-julia</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='47243'>Dhairya Gandhi</person><person id='47391'>Anas Abdelrehim</person>
                </persons>
                <language>en</language>
                <description>By reimagining machine learning model development through the lens of package development, we introduce a stream-lined workflow that enables building machine learning models in a test-driven manner with git-level reproducibility all within Julia. This approach minimizes the hidden states and dependencies often encountered in traditional machine learning development environments. We will explore in depth how this reconfiguration leads to more robust, reproducible, and streamlined model development processes that can scale to production environments.

Complementing this, we integrate MLflow, an open-source model lifecycle management tool, through MLFlowClient.jl and extend it to enhance our development pipeline. MLflow&apos;s graphical user interface facilitates easy management of model configurations and their outcomes. It provides valuable insights and a user-friendly interface for tracking, managing, and evolving machine learning models.

Throughout the session, we showcase how these methodologies, when applied in the realm of machine learning, lead to more efficient, transparent, and robust model development, enabling mass robust experimentation for machine learning workflows in the julia ecosystem.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZGULY8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZGULY8/feedback/</feedback_url>
            </event>
            <event guid='1e84a5d8-1e75-5038-b606-bcb178a4cc5b' id='43601' code='HCAWJU'>
                <room>For Loop (3.2)</room>
                <title>Designing satellites constellations with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>The deployment of low Earth orbit satellite internet constellations has revolutionized global connectivity. The design and operations of these systems rely heavily on large-scale simulations. At Eutelsat-Oneweb, we have developed a comprehensive full-scale constellation simulator to power our design and regulatory compliance workflows. This talk provides an overview of the simulation architecture and performance benefits that the use of Julia has unlocked for us.</abstract>
                <slug>juliacon2024-43601-designing-satellites-constellations-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='46640'>Romain Clement de Givry</person>
                </persons>
                <language>en</language>
                <description>Satellite internet constellations are global scale systems designed to deliver ubiquitous low-latency and high bandwidth connectivity across the globe. In these systems users are issued terminals to communicate with the constellation which relays information to and from gateways on the ground. User traffic is then routed into other networks. Notable examples of these systems include the existing Starlink and OneWeb constellations, with ongoing efforts in deploying similar systems.

In the context of Eutelsat-OneWeb&apos;s system, thousands of subsystems are involved in delivering our connectivity services. The orchestration and intricate coordination amongst satellites, user terminals, semi-automated control centres, expansive internet networks and ground antenna arrays is critical for ensuring seamless service.

A key aspect of the design and operation of such constellations is modelling the interaction between subsystems. For example, to estimate the impact of system configuration changes on the quality of service. Simulations become particularly detailed in that case, necessitating second level resolution over extended durations.

To support the design of our next generation constellation, we undertook a rework of our simulation tooling. The guiding objectives were to enhance the flexibility and performance to facilitate rapid design iterations.

This presentation is an overview of our implementation of a simulator designed to meet our design goals with minimal complexity. Specifically, we focused on the following areas:

- Simulating of all our subsystems and their variants in one unified environment.
- Enabling the configuration and development of the simulator without imposing stringent programming knowledge requirements.

- Achieving high performance to enable fast iteration on simulation results.

We&apos;ll explain how we use Julia&apos;s unique features to implement a comprehensive system simulator supporting arbitrary subsystem models transparently. In particular, how this approach allows us to develop simulations efficiently.

Additionally, we will also describe the performance and large-scale deployment benefits we encountered through the switch to this language.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HCAWJU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HCAWJU/feedback/</feedback_url>
            </event>
            <event guid='b6d96675-6cd1-5cb3-9e71-868b38010c2c' id='43473' code='B7L8QV'>
                <room>For Loop (3.2)</room>
                <title>What&apos;s new with BifurcationKit.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>`BifurcationKit.jl` is a package for numerical bifurcation analysis which allows to study dynamical systems as function of a parameter. It incorporates automatic bifurcation diagram routines and efficient tools to study periodic orbits. Most of these tools run on GPU and can be used with a large number of unknowns.</abstract>
                <slug>juliacon2024-43473-what-s-new-with-bifurcationkit-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='47497'>Romain VELTZ</person>
                </persons>
                <language>en</language>
                <description>Over the past year, the `bifurcationkit` organization has undergone significant enhancements tailored for the exploration of periodic orbits and homoclinic orbits. These updates address critical gaps in comparison to other widely utilized software in the field. Additionally, integration into `ModelingToolkit.jl` promises to streamline analysis processes, complemented by substantial improvements in documentation for a more user-friendly experience.

A pivotal advancement within BifurcationKit lies in the incorporation of methods dedicated to examining bifurcations of periodic orbits as functions of two parameters. This is particularly challenging for standard techniques like collocation, but our unified approach accommodates various methods for computing periodic orbits. This versatility is crucial for investigating problems spanning both low-dimensional and large-scale scenarios.

Another noteworthy enhancement is the introduction of the `HclinicBifurcationKit.jl` package, designed specifically for studying homoclinic orbits as function of two parameters. Notably, our implementation supports Shooting methods, differentiating us from existing software alternatives.

The ensuing discussion will spotlight these enhancements through a straightforward example, showcasing how they facilitate a comprehensive understanding of system dynamics. Subsequently, an exploration of the design choices made to accommodate the diverse solvers and methods for computing periodic orbits will be presented, along with the inherent challenges in ensuring a user-friendly interface.

We will conclude by emphasizing the future trajectory of `bifurcationkit`, highlighting ongoing efforts to enhance integration with `MethodOfLines.jl`, `ModelingToolkit.jl`, and other frameworks. Lastly, an overview of anticipated general additions will be provided, outlining the continuous evolution of the `bifurcationkit` organization.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/bifurcationkit">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/B7L8QV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/B7L8QV/feedback/</feedback_url>
            </event>
            <event guid='5c1d826a-356a-5d70-a1de-7c5026ed5fab' id='43813' code='ASERZM'>
                <room>For Loop (3.2)</room>
                <title>Kuber.jl: An OpenAPI based Kubernetes client for Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:30</duration>
                <abstract>Kubernetes is the most widely used open-source container orchestration system. Kubernetes is used by businesses, big and small the world over to deploy, scale and manage their containers. Kuber.jl is a julia client library for Kubernetes. In this talk, I will present a brief overview of the basic capabilities of Kuber.jl. We will then dive into some advanced topics such as working with Custom Resource Definitions and generating the client with OpenAPI.</abstract>
                <slug>juliacon2024-43813-kuber-jl-an-openapi-based-kubernetes-client-for-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='46843'>Nishanth H. Kottary</person>
                </persons>
                <language>en</language>
                <description>[Kubernetes](https://kubernetes.io/) greatly simplifies the work of deploying and managing micro services spread across many physical or virtual machines. Kubernetes can run on-premise or on public Cloud platforms like Google cloud, Amazon AWS and Microsoft Azure. Kubernetes also lets you define and work with various other resources apart from the micro service containers themselves. These include storage devices, load balancers, configuration files, secret tokens etc. All of these resources as well as custom defined resources can be deployed and managed with [Kuber.jl](https://github.com/JuliaComputing/Kuber.jl).

The Kuber.jl methods are designed following a pattern of verbs and entities. Entities are Kubernetes resources that are identified by their class and by either their name or a selector pattern. Verbs are methods that act on these entities. Verbs include create, update, get and so on. Kuber.jl also leverages the watch API of Kubernetes. This lets us run a Julia closure on notifications from Kubernetes. Using this powerful API we can implement various monitoring and management services with Julia code. In addition, verbs can be passed to the watch API to process the notification stream in various ways.

In this talk I will go over some of the basics of Kuber.jl before delving into the advanced features. I will demonstrate the deployment of a web application to a local Kubernetes cluster. We will go over the details of working with namespaces, checking for pod and load balancer readiness and ways to update a deployment. I will demonstrate how we can generate the client code of Kuber.jl using the [OpenAPI](https://swagger.io/specification/) generator and some Julia scripts that we provide in the Kuber.jl GitHub repository. Using these we can modify the client if we ever need to deal with Custom Kubernetes resources.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaComputing/Kuber.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/ASERZM/resources/presentation_nHzS65H.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/ASERZM/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ASERZM/feedback/</feedback_url>
            </event>
            <event guid='40b82b01-117a-55bf-9479-6e67fb5c9dc2' id='42432' code='XXNT9W'>
                <room>For Loop (3.2)</room>
                <title>Evaluate LLM synthesized Julia code</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>[HumanEval](https://github.com/openai/human-eval) and [MBPP](https://github.com/google-research/google-research/tree/master/mbpp) are two of the most frequently used benchmarks to evaluate LLM&apos;s performance in code generation. However, they mainly focus on the Python programming language only. In this talk, we will analyze SOTA code LLMs&apos; performance in Julia. Results will be  updated constantly at HumanEval.jl</abstract>
                <slug>juliacon2024-42432-evaluate-llm-synthesized-julia-code</slug>
                <track>AI/ML/AD</track>
                
                <persons>
                    <person id='45619'>Jun Tian</person>
                </persons>
                <language>en</language>
                <description>[HumanEval](https://github.com/openai/human-eval) and [MBPP](https://github.com/google-research/google-research/tree/master/mbpp) are two of the most frequently used benchmarks to evaluate LLM&apos;s performance in code generation. However, they mainly focus on the Python programming language only. In this talk, we will analyze SOTA code LLMs&apos; performance in Julia. Results will be  updated constantly at HumanEval.jl</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/01-ai/HumanEval.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XXNT9W/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XXNT9W/feedback/</feedback_url>
            </event>
            <event guid='86e77551-81fc-5fa2-8ae6-cffb9bddda62' id='43541' code='CJQNU7'>
                <room>For Loop (3.2)</room>
                <title>LASDatasets.jl: A Centralised Package for Handling LAS Data</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>LASDatasets.jl is a newly open-sourced Julia package that provides a central interface for manipulating LAS (LASer) data files in Julia. LAS is a file format that stores point clouds with different types of features (e.g. intensity, colour) and is widely used across industry and research. Join us as we discuss the LAS data format and how we have combined and built upon the best features of existing LAS processing Julia packages to give a central interface for all your LAS processing needs.</abstract>
                <slug>juliacon2024-43541-lasdatasets-jl-a-centralised-package-for-handling-las-data</slug>
                <track>Data Science and Dynamics</track>
                
                <persons>
                    <person id='46587'>Ben Curran</person><person id='46588'>Dr. Megan Dawson</person>
                </persons>
                <language>en</language>
                <description>LiDAR technology is used to capture real-life assets as point clouds, which are collections of 3D points that have additional attributes such as intensity, colour, return index etc. The LAS file format is a system of storing these (often large) groups of points and their metadata in a structured way, and has a compressed format, LAZ, to increase storage capacity. LAS stores points according to one of a set of predefined &#8220;point formats&#8221;, which specifies the metadata you assign to each point and their data type. On the one hand, this makes sure your point cloud data is stored and typed properly, but on the other it makes the process of converting from Julia-native structures such as Tables or DataFrames quite difficult, since as a user you need to handle the data types yourself. 

Although there are some great Julia packages that handle LAS data (such as LasIO.jl and LazIO.jl), there is no central entry point through which a user can simply read or write their LAS data to or from Julia without having to explicitly handle some of the data considerations themselves (e.g. whether the file is compressed, what point format it&#8217;s in, etc.). Furthermore, these packages don&#8217;t support all ten of the specified LAS Point Formats on offer. It is for this reason that we have further developed LAS.jl. We have used LAS.jl extensively in our LiDAR processing at Fugro, and so have ensured that it is both flexible and computationally efficient.  

In this talk, we will discuss the high-level user interface of LASDatasets.jl and some examples of reading and writing data. We will then explore the underlying systems we use to parse Julia structures into correctly typed and formatted LAS data. Finally, we will outline some future opportunities for improving this package both in terms of user experience and computational performance. 

You can find the code for the package here: https://github.com/fugro-oss/LASDatasets.jl</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/CJQNU7/resources/LASDatasets.jl_LoVAD3D.pptx">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/CJQNU7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CJQNU7/feedback/</feedback_url>
            </event>
            <event guid='1673989a-8f1a-5bd6-8cf1-654b24aa41f9' id='40177' code='WEXWEJ'>
                <room>For Loop (3.2)</room>
                <title>Wave and Ray Optics for Light Based Tomographic 3D printing</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Light based tomographic 3D printing is a new emerging field requiring the optimization of large scale optical problems.
Simulating and optimizing parameters of those problems needs high performance packages, which we develop in Julia Lang.
The implementation features CUDA acceleration (partially based on KernelAbstractions.jl) and automatic differentiation capabilities. 
We talk about ray tracing based methods such as the Radon transform but are also going to cover the wave nature of light.</abstract>
                <slug>juliacon2024-40177-wave-and-ray-optics-for-light-based-tomographic-3d-printing</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='45695'>Felix Wechsler</person>
                </persons>
                <language>en</language>
                <description>The presented notebook is available here: https://github.com/roflmaostc/TalkJuliaCon2024

Our work is mainly scattered in four packages: RadonKA.jl [1], DiffImageRotation.jl [2], WaveOpticsPropagation.jl [3], SwissVAMyKnife.jl [4].

The first package features a very simple but still quite fast implementation of the Radon and inverse Radon transform based on KernelAbstractions.jl.
In principle this allows to run it on multiple hardware accelerators such as CUDA.jl or AMDGPU.jl.
Notably, we implemented an exponential Radon transform which is not implemented in any of the existing solutions (ASTRA, TIGRE, Matlab).
The second package offers a differentiable image rotation routine implemented in KernelAbstractions.jl. According to benchmarks, it is the fastest image rotation routine in Julia. It features CUDA support and is automatic differentiation compatible.

The third package is WaveOpticsPropagation.jl which is partially based on the archived PhysicalOptics.jl [5]. 
It provides routines to solve wave optical propagations efficiently. Notable features are the (scalable) angular spectrum method [6] or the Fraunhofer diffraction propagation.
Those routines are highly memory efficient by cleverly using memory buffers and have implemented adjoints for automatic differentiation.

Finally, SwissVAMyKnife.jl bundles those packages together to provide user-friendly routines to solve optimization problems connected to Tomographic Volumetric Additive Manufacturing (TVAM) [7]. TVAM is a novel light based 3D printing technique allowing to print centimeter scale objects in seconds to minutes.
At submission date of this proposal, SwissVAMyknife.jl is not public available yet. By the date of JuliaCon we expect to have uploaded an arXiv paper about the details behind this package and make it publicly available.

[1]: https://github.com/roflmaostc/RadonKA.jl
[2]: https://github.com/roflmaostc/DiffImageRotation.jl
[3]: https://github.com/JuliaPhysics/WaveOpticsPropagation.jl
[4]: https://github.com/EPFL-LAPD/SwissVAMyknife.jl
[5]: https://github.com/JuliaPhysics/PhysicalOptics.jl
[6]: https://opg.optica.org/optica/fulltext.cfm?uri=optica-10-11-1407&amp;id=541154
[7]: https://www.nature.com/articles/s41467-020-14630-4</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WEXWEJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WEXWEJ/feedback/</feedback_url>
            </event>
            <event guid='79c305ee-3826-56f4-a201-f48514bac6ff' id='44286' code='FJMTXH'>
                <room>For Loop (3.2)</room>
                <title>What&apos;s next for Transducers.jl?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Transducers.jl was a brilliant and ambitious julia project that is in danger of stalling out. In this talk, I want to discuss what made it so special, the challenges involved in maintaining it today, and our plans for how to breathe new life into the package.</abstract>
                <slug>juliacon2024-44286-what-s-next-for-transducers-jl</slug>
                <track>General</track>
                
                <persons>
                    <person id='47271'>Mason Protter</person>
                </persons>
                <language>en</language>
                <description>[Transducers.jl](https://github.com/JuliaFolds2/Transducers.jl) is a package concerned with decoupling the traversal of a piece of data from various transformations one might apply to that data, and provides a more efficient, composable, and reusable alternative to things like `Iterators` or simple `for` loops.

While Transducers.jl is based heavily off of the concepts [pioneered and implemented in Clojure](https://clojure.org/reference/transducers), Transducers.jl has a lot of ideas of it&apos;s own, including a very powerful and general approach to parallelism, and inventing a lot of useful techniques in preserving type stability in very difficult circumstances. 

Today, maintaining Transducers.jl is a very difficult task, namely because the current maintainers are not the original authors of the majority of the code, and the project is not only quite large, but it contains a lot of highly non-obvious techniques.

In this talk, I want to give users an introduction to using Transducers.jl, as well as show a bit about our plans for the next generation of transducers in Julia.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FJMTXH/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FJMTXH/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Function (4.1)' guid='43a8b52a-e689-5901-ac76-e45345b9bfce'>
            <event guid='59613dea-f854-56a5-a31c-2fbd0e3d099e' id='44131' code='GMVY9N'>
                <room>Function (4.1)</room>
                <title>Policy Enforcement in Julia Enterprise Applications with OPA</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>This talk will introduce the OpenPolicyAgent.jl package, which makes integrating OPA (Open Policy Agent), a general purpose policy engine, with any Julia application easy. OPA provides a high-level declarative language that allows policy to be specified as code, and an engine that can offload policy decision-making over API calls to the OPA engine. It is the industry standard in open source policy agents, and has a wide range of tools and integrations available for use.</abstract>
                <slug>juliacon2024-44131-policy-enforcement-in-julia-enterprise-applications-with-opa</slug>
                <track>General</track>
                
                <persons>
                    <person id='46262'>Tanmay Mohapatra</person>
                </persons>
                <language>en</language>
                <description>OPA is a general purpose open source policy engine that unifies policy enforcement across the application stack. OPA provides a high-level declarative language that allows policy to be specified as code, and an engine that can offload policy decision-making over API calls to the OPA engine. OPA can be used to enforce policies in microservices, Kubernetes, CI/CD pipelines, API gateways, and more.

This talk will introduce the OpenPolicyAgent.jl package, which makes integrating OPA with any Julia application easy. It will demonstrate how to use the packaged server module to run the OPA engine as a sidecar, and how to use the Julia client APIs to interface with the engine.

OPA also allows partial evaluation of policy rules, resulting in a simplified AST that can be used for further processing in applications. OpenPolicyAgent.jl exposes a generic way to walk over the AST, and allows code to be plugged into that. For example the AST resulting from partially evaluating policies related to database tables can be used to generate SQL query conditions. OpenPolicyAgent.jl includes a plugin that can generate such SQL query conditions from partially evaluated policies. Durnig the talk we shall walk through examples that use this too.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GMVY9N/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GMVY9N/feedback/</feedback_url>
            </event>
            <event guid='a307e494-a0ee-5b0c-975c-01ccd4fda6b6' id='43882' code='9JHYJE'>
                <room>Function (4.1)</room>
                <title>ExponentialFamilyManifolds.jl: Advancing Probabilistic Modeling</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>`ExponentialFamilyManifolds.jl` efficiently tackles non-conjugate inference in probabilistic models by projecting distributions onto exponential families using Kullback-Leibler divergence optimization. Integrating with `Manifolds.jl`, `Manopt.jl`, and `RxInfer.jl`, it enhances scalability and inference efficiency, especially in models with conjugate and non-conjugate elements. This makes inference with exponential family priors both efficient and flexible.</abstract>
                <slug>juliacon2024-43882-exponentialfamilymanifolds-jl-advancing-probabilistic-modeling</slug>
                <track>General</track>
                
                <persons>
                    <person id='46884'>Mykola Lukashchuk</person><person id='47180'>Bert de Vries</person>
                </persons>
                <language>en</language>
                <description>Probabilistic modeling (also known as Bayesian modeling) is a vital tool for contemporary data scientists, enabling them to process information about complex real-world processes accurately. A significant computational challenge in this field is the use of non-conjugate priors. While these priors may increase model accuracy in principle, they also complicate the inference process. 

For example, we may choose to model consumption as a log-linear function of household income for a household consumption model. In a Bayesian context, this function is known as the likelihood function, which needs to be paired with a prior distribution for the income. The conjugate prior distribution is a log-normal distribution over income. Bayesian inference with conjugate distributions leads analytically to the same distribution for both the prior and posterior. The Julia package `RxInfer.jl`, based on message passing in a factor graph, is a fast-executing inference toolbox that excels at inference for models with conjugate distribution pairs. 

However, given the high variability and possible uncertainties about personal data such as income, a gamma distribution prior might be a more suitable prior for income data. Unfortunately, the gamma prior is non-conjugated with the log-linear likelihood function. This leads to a posterior that is not Gamma-distributed and consequently to a computationally (much) more complex inference problem. In those cases, the general-purpose inference package `Turing.jl`, based on black-box variational inference and Monte Carlo sampling, will likely be able to handle the inference task. Still, scalability issues often arise, particularly for large datasets and/or large models. Thus, we have a computational trade-off at the heart of Bayesian modeling: we want both accurate model assumptions and a tractable inference process, but these preferences often conflict. 

The `ExponentialFamilyManifolds.jl` (EFM) package addresses this limitation by significantly extending the range of tractable models for message passing-based inference protocols as implemented by `RxInfer.jl`. Due to the modularity of message passing-based inference, EFM-enhanced `RxInfer.jl` inherits all the efficiencies of analytical closed-form message update rules for conjugate distribution pairs. 
EFM tackles the issue of local non-conjugate distribution pairs by projecting the product of the likelihood (e.g., log-normal) and the non-conjugate prior (e.g., gamma) in a manner that preserves conjugacy with other model components (gamma in our scenario). Technically, EFM efficiently projects generic distributions onto a specified exponential family distribution through Kullback-Leibler divergence optimization. This process is enhanced through the use of `Manifolds.jl` and `Manopt.jl`, both robust Julia ecosystem packages. 

In short, the proposed EFM-enhanced Bayesian inference approach leads to a much wider usable range of tractable models in probabilistic modeling problems.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/ReactiveBayes/ExponentialFamilyManifolds.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/9JHYJE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9JHYJE/feedback/</feedback_url>
            </event>
            <event guid='71a2972f-a489-58db-bf71-094917a3b074' id='44317' code='QJM9NT'>
                <room>Function (4.1)</room>
                <title>BLASPhemy</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>Over the past years, Enzyme.jl has developed into a popular and fast tool for automatic differentiation (AD) in Julia. Basic Linear Algebra Subroutines (BLAS) on the other hand have been around for decades, are highly optimized, and are automatically called by Julia to handle your Matrix and Vector operations. Sounds like Enzyme and BLAS would be an awesome combination, right? Except when things fall apart. In this talk, we show what went wrong and how we fixed it.</abstract>
                <slug>juliacon2024-44317-blasphemy</slug>
                <track>General</track>
                
                <persons>
                    <person id='47298'>Manuel Sebastian Drehwald</person>
                </persons>
                <language>en</language>
                <description>BLAS and Lapack routines have been optimized for decades, and are widely used in numerical and machine learning code throughout the Julia ecosystem. Unfortunately, Enzyme.jl can&#8217;t handle their black-box implementations &#8212; so we just replaced their implementation with a generic openBLAS fallback, we hope you don&#8217;t mind! And since we are already at it, we also hardcoded the number of threads for this BLAS implementation to one, since multithreading is complex and we want to protect you from race conditions. Speaking about correctness, when differentiating our fallback we noticed that gradients could be wrong, but at least only for irrelevant scalars like 0.0 or 1.0 &#8212; nobody cares about those, right? 

Although this approach &#8220;works&#8221;, it feels like there must be something faster and more reliable to do here. In this talk, we showcase improvements to Enzyme&#8217;s BLAS handling using LLVM&#8217;s code-generation capabilities (tablegen) to generate efficient differentiation rules for low-level BLAS calls while leveraging Enzyme&#8217;s ability to work within the compiler. These improvements increase BLAS AD performance by up to 64x, avoid crashes with large matrices, and allow supporting your favorite hardware-specific, multithreaded BLAS libraries. We also discuss ongoing work to improve performance even further via tricks such as memory management optimization, and the benefit of these improvements on downstream Julia applications.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/QJM9NT/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/QJM9NT/feedback/</feedback_url>
            </event>
            <event guid='5c50951e-ac27-58ea-a206-84f37aca0335' id='44291' code='XBDF7H'>
                <room>Function (4.1)</room>
                <title>Finite Element Modeling of Magnetic Fields in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>We describe the role of Julia in the TU Delft master course EE4375 entitled &#8220;Finite Element Method in Electrical Engineering Applications&#8221;. We furthermore describe how in two project-based assignments of EE4375 we talk to industrial partners. In the first project, we collaborate with the distribution system operator STEDIN Rotterdam to investigate the aging on transformer substations. In the second project, we join forces with TNO to model the magnetic signature of naval ships.</abstract>
                <slug>juliacon2024-44291-finite-element-modeling-of-magnetic-fields-in-julia</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='47275'>Domenico Lahaye</person>
                </persons>
                <language>en</language>
                <description>We describe the TU Delft master course EE4375 entitled &#8220;Finite Element Method in Electrical Engineering Applications&#8221;. The course material is available at github.com/ziolai/finite_element_electrical_engineering . The course is spread over seven weeks. Each week, the students attend two hours of lectures and take part of four hours of lab sessions.  The lectures introduce a set of mathematical models for electric and magnetic fields. The lab sessions allow the students to implement these models in Julia. We also discuss two project-based assignments of EE4375 in which we collaborate with industrial partners. 

In the first student project, we collaborate with the distribution system operator STEDIN Rotterdam to model the effect of new components in the infrastructure for energy distribution. Examples of such components are solar panels, electrical vehicles and batteries. These new components are expected to generate harmonics at larger frequency than the base frequency of 50 Hz. Without proper counter measures, these higher frequencies are expected to cause damage to the existing infracstructure. The goal of the project is to predict the effect of higher harmonics on the aging of distribution substations. This will allow to design suitable counter-measures. 

In the second student project, we join forces with TNO to solve integro-differential equations to describe the magnetic signature of naval ships. This information will allow to design a system of current-carrying coils on board the ship that renders the ship neutral for disturbances in the earth magnetic field.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/XBDF7H/resources/slides_9Sn5hCb.pdf">Presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/XBDF7H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XBDF7H/feedback/</feedback_url>
            </event>
            <event guid='5f3b56ef-046c-5107-9ab9-9dd843785ab5' id='44447' code='NLAD8B'>
                <room>Function (4.1)</room>
                <title>RayTraceHeatTransfer.jl: 2D enclosure radiative heat transfer</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>RayTraceHeatTransfer.jl enables the user to quickly quantify radiative heat transfer in a user defined enclosure containing a gas which scatters, emits and absorbs radiation. The package implements a combination of two approaches: 1) Several photon bundles are traced throughout the domain to quantify the &apos;connectivity&apos; of the enclosure. 2) Matrix algebra allows for subsequent quick solution of heat transfer problems yielding the temperature distribution and heat fluxes of the domain.</abstract>
                <slug>juliacon2024-44447-raytraceheattransfer-jl-2d-enclosure-radiative-heat-transfer</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                <logo>/media/juliacon2024/submissions/NLAD8B/temperaturedistribution_random_noise_tnNj509.png</logo>
                <persons>
                    <person id='47417'>Nikolaj Maack Bielefeld</person>
                </persons>
                <language>en</language>
                <description>Radiation occurs everywhere at all times. In high temperature environments it can be the dominant mode of heat transfer. It is highly relevant to climate sciences. In engineering it is especially relevant to aerospace and space exploration for propulsion while also being crucial in power generation and boiler design. Solving heat transfer problems involving combustion is notoriously difficult, partly because the combustion products participate in the radiative heat transfer. The added complexity of a participating medium is described by the Radiative Transfer Equation (RTE) which is an integro-differential equation in seven independent variables: three spatial, one temporal, two directional and one spectral. RayTraceHeatTransfer.jl solves the RTE (neglecting temporal and spectral dependencies) in a user defined geometry. As the first step the user specifies the bounding geometry. The geometry is then meshed into the desired resolution. Next, Monte Carlo ray tracing is performed by sampling ray emissions from every zone in the geometry and following the ray bundles throughout the domain. The points of emission and absorption are recorded in four Exchange Factor matrices. These matrices describe the &apos;connectivity&apos; of the domain for the specified properties of the participating medium. Using the Exchange Factor matrices heat transfer problems can be solved efficiently using a variation of the Zonal Method, without the need for repeated ray tracing in the same geometry. In order to solve the heat transfer problem, either a temperature or a heat flux must be specified for each element in the geometry (surface or volume). Then the solution to the heat transfer problem returns the remaining temperatures and heat fluxes. As a last feature of the package the user can automatically measure the validity of the solution in a square domain against the analytical solution of the RTE of Crosbie and Schrenker (1982).</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/NikoBiele/RayTraceHeatTransfer.jl/tree/main">RayTraceHeatTransfer.jl GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/NLAD8B/resources/slides_XsKsbyS.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/NLAD8B/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NLAD8B/feedback/</feedback_url>
            </event>
            <event guid='3184a948-09af-563b-ac59-ffc5a8d1d7f2' id='39779' code='RDL3SE'>
                <room>Function (4.1)</room>
                <title>Julia User &amp; Developer Survey 2024</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>The sixth annual Julia User &amp; Developer Survey will survey 1,000+ Julia users and developers about their reasons for choosing Julia, how and why they use Julia, barriers to wider adoption, favorite packages, demographics and more.</abstract>
                <slug>juliacon2024-39779-julia-user-developer-survey-2024</slug>
                <track>Community</track>
                
                <persons>
                    <person id='43758'>Andrew Claster</person>
                </persons>
                <language>en</language>
                <description>The sixth annual Julia User &amp; Developer Survey will survey 1,000+ Julia users and developers about their reasons for choosing Julia, how and why they use Julia, barriers to wider adoption, favorite packages, demographics and more.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/RDL3SE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/RDL3SE/feedback/</feedback_url>
            </event>
            <event guid='1c83a2d5-45a6-58a8-a0c8-dfb76a5202c9' id='43222' code='WRQE3H'>
                <room>Function (4.1)</room>
                <title>DFTK.jl: 5 years of a multidisciplinary electronic-structure cod</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>This is an update on the [density-functional toolkit (DFTK)](https://dftk.org), a density-functional theory code modelling the electronic properties of materials. Since our 2021 talk substantial progress has been made to enhance the code&apos;s features and integrations both within the Julia ecosystem as well as key domain-specific packages such as the [AiiDA](https://www.aiida.net/) workflow engine. Examples illustrate the code&apos;s use as a platform supporting researches from multiple disciplines.</abstract>
                <slug>juliacon2024-43222-dftk-jl-5-years-of-a-multidisciplinary-electronic-structure-cod</slug>
                <track>Physics &amp; Quantum Chemistry</track>
                
                <persons>
                    <person id='46279'>Michael F. Herbst</person>
                </persons>
                <language>en</language>
                <description>Simulating the electronic structure of matter using density-functional theory (DFT) is an established approach in the chemical and physical sciences. On major supercomputers about 30% of the computational time are spent just on DFT simulations. At this scale the importance to improve efficiency and robustness of simulation algorithms cannot be overstated. This frequently requires a multidisciplinary effort involving fields such as mathematics, computer science, physics and materials science. With DFTK we aim to provide a software platform exactly to foster such cross-disciplinary research.

In this talk we look back to 5 years of DFTK with over 30 contributors. We sketch the design of our package and illustrate our integration with both the Julia ecosystem (CUDA, ForwardDiff, AtomsBase) as well as standard high-throughput workflow engines from the application domain. In the past this has been used both to propose novel numerical schemes with strong mathematical guarantees as well as perform in-depth verification testing of DFTK against other more established packages of the field,
such as QuantumESPRESSO. Both mathematical exploration on simplified models as well as state-of-the-art application simulations can thus be performed with DFTK, making it the ideal code for prototyping novel first-principle simulation approaches.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://dftk.org">GitHub</link>
                
                    <link href="https://michael-herbst.com/talks/2024.07.12_5years_DFTK.html">Code (Notebook)</link>
                
                    <link href="https://michael-herbst.com/talks/2024.07.12_5years_DFTK.pdf">Slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/WRQE3H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/WRQE3H/feedback/</feedback_url>
            </event>
            <event guid='6a432a8e-7c7a-58e2-8c3c-1ee3504c0be3' id='50341' code='GTGCH7'>
                <room>Function (4.1)</room>
                <title>Developing Supercomputing Geoscience Applications using Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:22</duration>
                <abstract>The rapidly increasing amount of data in the geosciences requires new tools and workflows to processing them, along with software to modelling the physics of the governing processes. Julia offers a great basis for this by combining the benefits of a high-level language, such as ease of use and interactivity, with the features of a low-level language, including speed, efficiency, scalability, and native GPU support.</abstract>
                <slug>juliacon2024-50341-developing-supercomputing-geoscience-applications-using-julia</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='46673'>Ludovic R&#228;ss</person><person id='52763'>Boris Kaus</person>
                </persons>
                <language>en</language>
                <description>Here, we will present recent efforts to accelerate geocomputing using Julia at scale. These efforts are supported by the PASC-funded [GPU4GEO project](https://ptsolvers.github.io/GPU4GEO/), in collaboration with the Swiss National Supercomputing Centre CSCS.
Rather then creating a single monolithic code, we developed a modular approach creating packages, such as [GeophysicalModelGenerator.jl](https://github.com/JuliaGeodynamics/GeophysicalModelGenerator.jl) which can be used to create initial model configuration from a range of datasets, [GeoParams.jl](https://github.com/JuliaGeodynamics/GeoParams.jl) which includes expressions for material parameters and constitutive relationships and [JustPIC.jl](https://github.com/JuliaGeodynamics/JustPIC.jl), which provides a particle-in-cell advection framework on (multi-) GPUs. The advantage is a composable framework where, for example, new material parameters only have to be added in a single location and can immediately be employed in a range of codes. This greatly lowers the barrier of new users to contribute to the open source packages, compared to much larger monolithic code bases. Application codes that use part of this functionality are [MagmaThermoKinematics.jl](https://github.com/boriskaus/MagmaThermoKinematics.jl), which simulate the thermal evolution of magmatic systems, [JustRelax.jl](https://github.com/PTsolvers/JustRelax.jl) which provides a number of examples of geodynamic applications such as mantle convection or subduction of tectonics plates, and [FastIce.jl](https://github.com/PTsolvers/FastIce.jl) which is a 3D ice flow code.
We will showcase how these HPC building blocks enables geoscientists to write high-performance stencil codes that can scale from their laptops to the largest GPU-accelerated supercomputers. We will also demonstrate preliminary results on using automatic differentiation to perform inverse modelling and discuss how these recent developments, along with future ones, will accelerate geocomputing and enable the education of the next generation of geoscientists.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/GTGCH7/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GTGCH7/feedback/</feedback_url>
            </event>
            <event guid='1f3771ce-002c-5abe-999f-cd11347bcc4d' id='50471' code='ZP8E9H'>
                <room>Function (4.1)</room>
                <title>Portable communications interface for Earth System Model</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:22:00+02:00</date>
                <start>14:22</start>
                <duration>00:22</duration>
                <abstract>CliMA&apos;s Earth System Model (ESM) is designed to automatically learn from diverse data sources, such as global observations and targeted high-resolution simulations, to reduce and quantify uncertainties in climate predictions. The components of the ESM software stack include an atmosphere model, a radiation model, a land model, a coupler, among others.</abstract>
                <slug>juliacon2024-50471-portable-communications-interface-for-earth-system-model</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='52886'>Sriharsha Kandala</person>
                </persons>
                <language>en</language>
                <description>CliMA&apos;s Earth System Model (ESM) is designed to automatically learn from diverse data sources, such as global observations and targeted high-resolution simulations, to reduce and quantify uncertainties in climate predictions. The components of the ESM software stack include an atmosphere model, a radiation model, a land model, a coupler, among others. [ClimaComms.jl](https://github.com/CliMA/ClimaComms.jl) provides the high-level communications interface and computational backend for various components of the ESM software stack.
This talk describes some of the most expensive communication patterns encountered in the atmospheric solver (Direct Stiffness Summation), and how the communication interface is implemented to provide support for various computational backends (single-threaded/multi-threaded CPUs, GPUs) and transports (Serial, MPI), thereby enabling the user to run distributed simulations on a wide range of architectures.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/ZP8E9H/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/ZP8E9H/feedback/</feedback_url>
            </event>
            <event guid='da2aa012-de0b-557d-8730-06331c107432' id='50340' code='N779AY'>
                <room>Function (4.1)</room>
                <title>Seamless transition from single-core Python to Julia Multi-GPU</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T14:44:00+02:00</date>
                <start>14:44</start>
                <duration>00:22</duration>
                <abstract>We present a new approach to transition seamlessly and with unprecedented effectiveness from a single-CPU-core Python prototype to a Julia application that is deployable on distributed GPUs. During porting of the Python prototype to Julia, the approach enables concurrent interactive stepwise execution of both codes and systematic verification almost line by line.</abstract>
                <slug>juliacon2024-50340-seamless-transition-from-single-core-python-to-julia-multi-gpu</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='47405'>Samuel Omlin</person>
                </persons>
                <language>en</language>
                <description>Check points for correctness can be straightforwardly defined for ported and verified code blocks in order to later automatically signal potential issues that manifest due to refactoring work or consideration of new input classes. We have demonstrated the approach&apos;s effectiveness in a real-world use case, a collaboration between domain scientists and HPC experts in the scope of Europe&apos;s Human Brain Project (HBP). Based on a single-CPU-core Python prototype developed by the domain scientists, we have jointly created a Julia application for Bayesian optimization of hyper-parameters of a neurological network that is deployable on the world&apos;s largest GPU supercomputers and achieves near optimal performance and scaling. Furthermore, as a result of the automatic correctness verification, the domain scientists - with no previous Julia experience - could quickly gain confidence in the ported Julia application, which is an important aspect in HPC collaboration projects as the presented one. The Julia application serves the domain scientists now also for further prototyping: leveraging [ParallelStencil.jl](https://github.com/omlins/ParallelStencil.jl) has made it feasible to fully unify prototyping and production in a single code that is deployable on a single CPU core or thousands of GPUs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/N779AY/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/N779AY/feedback/</feedback_url>
            </event>
            <event guid='a6149599-f2b8-5f9b-99ad-5f19bdacda5c' id='50342' code='GGQFJR'>
                <room>Function (4.1)</room>
                <title>Updates and Advances in CUDA.jl and oneAPI.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:06:00+02:00</date>
                <start>15:06</start>
                <duration>00:22</duration>
                <abstract>In this talk we will discuss recent changes in the [CUDA.jl](https://github.com/JuliaGPU/CUDA.jl) and [oneAPI.jl](https://github.com/JuliaGPU/oneAPI.jl) packages, which provide GPU programming capabilities in Julia.</abstract>
                <slug>juliacon2024-50342-updates-and-advances-in-cuda-jl-and-oneapi-jl</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='47481'>Tim Besard</person>
                </persons>
                <language>en</language>
                <description>We will cover the latest features, performance improvements, and future directions for these packages.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaGPU/CUDA.jl/">GitHub</link>
                
                    <link href="https://github.com/JuliaGPU/oneAPI.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/GGQFJR/resources/20240712_-_HPC_Update_on_CUDA.jl_and_oneAPI.jl_2ff58yV.pdf">Slide deck</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/GGQFJR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/GGQFJR/feedback/</feedback_url>
            </event>
            <event guid='185395de-1b9d-5e2b-99a1-8664093cdd2b' id='50348' code='XJFGYJ'>
                <room>Function (4.1)</room>
                <title>Applications of Distributed Task Parallelism</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:22</duration>
                <abstract>Task parallelism is a simple but powerful method to make programs and libraries scalable, but which task parallel library you choose greatly affects how well and far your code can scale. In this talk, we will discuss the [Dagger.jl](https://github.com/JuliaParallel/Dagger.jl) package, which implements a variety of powerful abstractions on top of a high-performance, heterogeneous task parallel core.</abstract>
                <slug>juliacon2024-50348-applications-of-distributed-task-parallelism</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='46486'>Julian P Samaroo</person>
                </persons>
                <language>en</language>
                <description>We will compare Dagger to other task parallel frameworks (like Dask, Kokkos, Legion, etc.), as well as to libraries which express parallelism in other ways ([ImplicitGlobalGrid.jl](https://github.com/eth-cscs/ImplicitGlobalGrid.jl), [JACC.jl](https://github.com/JuliaORNL/JACC.jl), etc.), to see the similarities and differences. Finally, we will discuss why these differences, and the features and abstractions that only Dagger provides, makes Dagger a great choice for scaling code efficiently and in a more maintainable manner.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/XJFGYJ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/XJFGYJ/feedback/</feedback_url>
            </event>
            <event guid='7c7806ed-a9a6-5a0f-b0f6-affaf164ca9c' id='50343' code='SXC7LA'>
                <room>Function (4.1)</room>
                <title>libtrixi: Serving legacy Fortran codes with simulations in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:02:00+02:00</date>
                <start>16:02</start>
                <duration>00:22</duration>
                <abstract>With [libtrixi](https://github.com/trixi-framework/libtrixi) we present a blueprint for connecting established research codes to modern software packages written in Julia without sacrificing performance. Specifically, [libtrixi](https://github.com/trixi-framework/libtrixi) provides an API to [Trixi.jl](https://github.com/trixi-framework/Trixi.jl), a Julia package for adaptive numerical simulations of conservation laws.</abstract>
                <slug>juliacon2024-50343-libtrixi-serving-legacy-fortran-codes-with-simulations-in-julia</slug>
                <track>Julia for High-Performance Computing</track>
                
                <persons>
                    <person id='52786'>Benedict Geihe</person>
                </persons>
                <language>en</language>
                <description>In computational fluid dynamics a broad range of spatial and temporal length scales has to be considered, rendering finely resolved computational grids indispensable and calling for high-performance computing techniques. Consequently, many simulation libraries are written in traditional HPC languages, which offer high performance, but are complex to learn and maintain. Julia often acts as a glue code to enable the reuse of such libraries. With [libtrixi](https://github.com/trixi-framework/libtrixi), we reverse this workflow: The computational fluid dynamics (CFD) solver [Trixi.jl](https://github.com/trixi-framework/Trixi.jl) is controlled from a main program written in C, C++, or Fortran. This allows one to take advantage of Julia&apos;s rapid prototyping capabilities and its performance. In this talk, we will provide some insights into the Julia C API and the [PackageCompiler.jl](https://github.com/JuliaLang/PackageCompiler.jl) project. We will show numerical applications in earth system modeling, controlled by a Fortran code and running in parallel using MPI.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/trixi-framework/libtrixi">libtrixi</link>
                
                    <link href="https://github.com/trixi-framework/talk-2024-juliacon-libtrixi/blob/main/slides.pdf">slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SXC7LA/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SXC7LA/feedback/</feedback_url>
            </event>
            <event guid='2e6c6326-76c2-59af-a7ac-5086cacd325e' id='50346' code='TGQYQX'>
                <room>Function (4.1)</room>
                <title>SeismicWaves.jl: a wave simulation package for FWI on multi-xPUs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:24:00+02:00</date>
                <start>16:24</start>
                <duration>00:22</duration>
                <abstract>We present [SeismicWaves.jl](https://gitlab.com/JuliaGeoph/SeismicWaves.jl), a package for 1D, 2D, and 3D wave simulations on multi-xPUs. [SeismicWaves.jl](https://gitlab.com/JuliaGeoph/SeismicWaves.jl) supports forward and adjoint simulations to compute gradients with respect to model parameters for Full-Waveform Inversion (FWI) methods used in seismic tomography.</abstract>
                <slug>juliacon2024-50346-seismicwaves-jl-a-wave-simulation-package-for-fwi-on-multi-xpus</slug>
                <track>Julia for High-Performance Computing</track>
                <logo>/media/juliacon2024/submissions/TGQYQX/SWlogo_eYbY2uq.svg</logo>
                <persons>
                    <person id='52622'>Giacomo Aloisi</person>
                </persons>
                <language>en</language>
                <description>The package is based on finite-difference methods for solving the wave equation in parallel and distributed systems using [ParallelStencil.jl](https://github.com/omlins/ParallelStencil.jl) and [ImplicitGlobalGrid.jl](https://github.com/eth-cscs/ImplicitGlobalGrid.jl), enabling seamless multi-xPU computing.
Rigorous benchmarks and synthetic inversions validate the solvers&apos; correctness while achieving high memory throughput (up to 90% of peak) on modern GPUs and exhibiting good weak scaling on distributed systems.
In conclusion, [SeismicWaves.jl](https://gitlab.com/JuliaGeoph/SeismicWaves.jl) provides easy-to-use and efficient solvers to bridge the gap between theory and practice for a variety of FWI applications and use cases, from fast prototyping on a laptop to high-resolution, large-scale simulations on supercomputing clusters.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/TGQYQX/resources/JuliaCon24_Presentation_USflzWK.pdf">Presentation Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/TGQYQX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/TGQYQX/feedback/</feedback_url>
            </event>
            <event guid='1f49e3f3-7805-5524-9157-c2977444ccfd' id='50347' code='8HJNAQ'>
                <room>Function (4.1)</room>
                <title>A fast and flexible CFD solver with heterogeneous execution</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:46:00+02:00</date>
                <start>16:46</start>
                <duration>00:22</duration>
                <abstract>The growth of computational power driven by novel accelerator architectures has pushed physics solvers to transition from their traditional multi-CPU approach to GPU-ready codebases. Moreover, the integration of data-driven models, and in particular machine learning (ML), into physics solvers limits the choice of programming languages that can natively offer both speed and such high-level libraries.</abstract>
                <slug>juliacon2024-50347-a-fast-and-flexible-cfd-solver-with-heterogeneous-execution</slug>
                <track>Julia for High-Performance Computing</track>
                <logo>/media/juliacon2024/submissions/8HJNAQ/monarch_70Evnzh.gif</logo>
                <persons>
                    <person id='52764'>Gabriel Weymouth</person><person id='55476'>Bernat Font</person>
                </persons>
                <language>en</language>
                <description>In this talk, we will review how [WaterLily.jl](https://github.com/weymouth/WaterLily.jl), a computational fluid dynamics Julia solver, has been ported from its original serial-CPU implementation to a backend-agnostic solver that can be seamlessly executed using multi-threading in CPUs or in GPUs of different vendors. The transition has been accomplished using a meta-programming approach that generalizes the implementation of array iterators while also relying on [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl) to specialize each kernel on the target architecture. In single-GPU tests, we show that [WaterLily.jl](https://github.com/weymouth/WaterLily.jl) is as fast as state-of-the-art CFD solvers written C++ or Fortran. Finally, we also discuss the potential of integrating ML models and differentiability into the solver.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/WaterLily-jl/WaterLily.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/8HJNAQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/8HJNAQ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='While Loop (4.2)' guid='892ce152-be7e-5cad-974c-13ba80dc75d2'>
            <event guid='8a6ac59a-98ac-58da-aca5-0cfd9a5f5cb0' id='44387' code='B89G9K'>
                <room>While Loop (4.2)</room>
                <title>GeometryOps.jl: Building a Comprehensive Native Geometry Package</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:10</duration>
                <abstract>There is no native Julia geometry package equivalent to Python&#8217;s Shapely or R&#8217;s sf. The driving idea behind GeometryOps.jl is to unify existing native geometry packages, develop functionalities that only exist in non-native wrapper packages, and make algorithms usable with various geometric representations through GeoInterface.jl. Initial benchmarks show speedups over widely used wrapper library LibGEOS.jl: 2x for polygon area, 7x for polygon intersection, and 10x for point-to-polygon distance.</abstract>
                <slug>juliacon2024-44387-geometryops-jl-building-a-comprehensive-native-geometry-package</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/B89G9K/logo_yotuxC3.png</logo>
                <persons>
                    <person id='47364'>Rafael Schouten</person><person id='44316'>Skylar Gering</person><person id='54567'>Anshul Singhvi</person>
                </persons>
                <language>en</language>
                <description>Julia&#8217;s Geo and Geometry ecosystems lack a comprehensive, native package for standard geometric algorithms for spatial data. The most comprehensive option is LibGEOS.jl, the Julia wrapper of C library GEOS. However, use of LibGEOS.jl comes with performance drawbacks when calling C functions and creating C objects. 

On the other hand, the native Julia ecosystem is made up of a collection of disparate packages, many focusing on implementing specific geometric algorithms to solve targeted questions rather than general functionality. Additionally, there are numerous Julia representations of common geometries, with many of the native algorithms only working with specific representations.

To address these problems, we have created GeometryOps.jl, which seeks to unify the disparate packages and algorithms for geometric calculations in Julia and make them GeoInterface.jl-compatible. 

In time, this package could come to replace LibGEOS.jl. For implemented algorithms, GeometryOps.jl already provides substantial performance improvements over LibGEOS.jl when using native geometry objects.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/B89G9K/resources/GeometryOps_Juliacon_2024_f2tfWxE.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/B89G9K/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/B89G9K/feedback/</feedback_url>
            </event>
            <event guid='6aa17a16-b420-54aa-a07f-efa17d9a08dd' id='44333' code='UWWKWQ'>
                <room>While Loop (4.2)</room>
                <title>EverySingleStreet.jl: Explore your city using Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T10:20:00+02:00</date>
                <start>10:20</start>
                <duration>00:10</duration>
                <abstract>EverySingleStreet.jl is a project to track your exploration status of your city of choice. 
Discovering new parts of a city can expand your horizon. To keep track of this endeavour EverySingleStreet.jl is helping out behind the scenes such that you don&apos;t miss a single street.

In this talk I&apos;ll tell you about how to map GPS data points to actual streets as well as using a small web server to communicate with Strava all done to creating an art project of your progress.</abstract>
                <slug>juliacon2024-44333-everysinglestreet-jl-explore-your-city-using-julia</slug>
                <track>General</track>
                <logo>/media/juliacon2024/submissions/UWWKWQ/ESS_YmuhDUq.jpg</logo>
                <persons>
                    <person id='47317'>Ole Kr&#246;ger</person>
                </persons>
                <language>en</language>
                <description>Living in a city for a while with the same home and same workplace often results in taking the same route to work and having only a couple of different routes for a sunny weekend walk. 

Why not explore more of the area you live in? Maybe even take it to the extreme and walk all of it. That&apos;s how this project came to be over a year ago. Exploring the whole of Hamburg, Germany on foot. A project that needs to be well planned and tracked. Software exists for everything so of course there are projects that help you out already. Though they all didn&apos;t meet my personal needs and maybe I just wanted to learn even more how to set up something like this myself.

That&apos;s why I created the EverySingleStreet.jl project to apply map matching to the GPS points I get via the Strava app, create my own map and display it using the OSMAnd app and much more.

The attached image shows my progress plotted by a pen plotter after one year of trying to walk every single street of Hamburg, Germany. So far 28% done!</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/Wikunia/EverySingleStreet.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/UWWKWQ/resources/EverySingleStreet.jl_ilPPdGy.pdf">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/UWWKWQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/UWWKWQ/feedback/</feedback_url>
            </event>
            <event guid='c72b2799-171b-53ff-af17-db5b957a06d2' id='44274' code='9AMPUD'>
                <room>While Loop (4.2)</room>
                <title>Best practices for package development using BestieTemplate.jl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T10:30:00+02:00</date>
                <start>10:30</start>
                <duration>00:30</duration>
                <abstract>BestieTemplate.jl is a template for creating packages following opinionated package development practices. It can be used via Julia or as a Copier template. The main advantages of a Copier template are that it allows applying a template to an existing repository and reapplying a template in order to get the updates since that last template application. The template serves as a snapshot of what are the current package development best practices, and will be updated when more tools are avaiable.</abstract>
                <slug>juliacon2024-44274-best-practices-for-package-development-using-bestietemplate-jl</slug>
                <track>Julia Internals and Tooling</track>
                <logo>/media/juliacon2024/submissions/9AMPUD/logo_hpK8u8b.png</logo>
                <persons>
                    <person id='47258'>Abel Soares Siqueira</person>
                </persons>
                <language>en</language>
                <description>BestieTemplate.jl is a template for the engine Copier (https://copier.readthedocs.io/en/stable/). It contains opinionated software development best practices that we adopt in some of our packages. These include traditional Julia package requirements, such as a src, test and docs folder structure, README and LICENSE files, GitHub workflows for testing, documentation, CompatHelper and TagBot. However, it also includes other best practices, such as linting and formatting specification files, pre-commit hooks, and CITATION.cff files.

BestieTemplate.jl can be applied and reapplied to existing packages, as supported by Copier. This means that the best practices can be updated in the template and propagated to packages using it. This solves issues with outdated practices and also allows older packages to improve their package very quickly.

BestieTemplate.jl is also a Julia package. As a package, it wraps some functionalities of Copier to allow users to use the template without having to install Copier directly.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/abelsiqueira/BestieTemplate.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/9AMPUD/resources/BestieTemplate.jl_-_JuliaCon_2024_9DMH7DS.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/9AMPUD/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9AMPUD/feedback/</feedback_url>
            </event>
            <event guid='020b1f97-5356-516e-9fce-7b9939c0f297' id='40412' code='KGAKA8'>
                <room>While Loop (4.2)</room>
                <title>Modeling and simulation of sampled-data systems</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T11:00:00+02:00</date>
                <start>11:00</start>
                <duration>00:30</duration>
                <abstract>Computer algorithms interacting with the physical world around them give rise to what is referred to as a sampled-data system, a system with both parts that evolve continuously in time and processes that have a discrete time evolution. In this talk, we detail a new tool for modeling and simulation of such systems.</abstract>
                <slug>juliacon2024-40412-modeling-and-simulation-of-sampled-data-systems</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='44286'>Fredrik Bagge Carlson</person>
                </persons>
                <language>en</language>
                <description>Computers are inherently discrete, both in terms of how they represent numbers and in how they perform computations over time and thus update their state. Computers interacting with the environment often do so in an interval-based or event-based fashion, i.e., they compute and communicate in response to either an event or the tick of a clock. Examples of sampled-data systems include control systems, like the autopilot in an airplane, and digital signal-processing pipelines, like the acoustic noise-cancellation feature in a pair of headphones.

Sampled-data systems occurring in complex engineering systems, like an airplane or a factory, may contain several distinct discrete-time partitions, each operating in response to its own event source, e.g., using different sample rates. Examples include hierarchical control systems such as a heat pump, where a fast &#8220;inner&#8221; controller operates the compressor at 1000Hz, while a slower &#8220;outer&#8221; controller provides commands to the compressor once every minute in order to maintain the desired temperature etc.

Accurate analysis of such systems require simulation tools that can handle their mixed continuous-discrete nature. Differential-equation solvers often include mechanisms that allow simulation of sampled-data systems. However, manually modeling large such systems becomes intractable without support of a modeling tool. ModelingToolkit has proven a competent tool for the modeling of continuous-time systems, and here, we detail new capabilities to also model discrete-time processes.

The extension of ModelingToolkit developed to support sampled-data systems introduces the notion of a clock, the source of events that triggers the execution of a discrete time partition. A model may contain one or several clocks operating at different periodic or aperiodic rates. Upon the tick of a clock, all associated discrete-time partitions are executed and the variables governing their interaction with the continuous-time world are updated. The interaction between discrete and continuous partitions is governed by new operators, such as `sample` and `hold`. The ability of ModelingToolkit to generate separate code for discrete-time partitions is also added to facilitate deployment of control algorithms onto a different computing platform.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/JuliaComputing/ModelingToolkitSampledData.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/KGAKA8/resources/Discrete-time_modeling_E7vZ82F.pdf">Presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/KGAKA8/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/KGAKA8/feedback/</feedback_url>
            </event>
            <event guid='5539f204-0cee-5c0c-b107-0145b0021c96' id='44261' code='MVFTEK'>
                <room>While Loop (4.2)</room>
                <title>Profile Likelihood-based Practical Identifiability in Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:10</duration>
                <abstract>Practical identifiabilty based on Profile Likelihood is a crucial step in determining how well the parameters of a mechanistic model can be recovered from the experimental data. What packages are available to address this problem in Julia and what does Julia SciML community lack? How Profile likelihood-based methods can be applied to predictability analysis? The talk will cover the packages LikelihoodProfiler.jl, ProfileLikelihood.jl and the desirable improvements to Julia SciML ecosystem.</abstract>
                <slug>juliacon2024-44261-profile-likelihood-based-practical-identifiability-in-julia</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47250'>Ivan Borisov</person>
                </persons>
                <language>en</language>
                <description>Practical identifiability of Systems Biology models has received a lot of attention in recent scientific research. It addresses the crucial question of models&#8217; reliability: how accurately can the parameters of the model be recovered from the available experimental data. Noisy or incomplete data result in uncertainty in parameters estimations typically described by confidence intervals and confidence regions. The methods based on profiling the likelihood function are among the most reliable and widely used approaches to estimate parameters&#8217; confidence intervals and state their practical identifiability. The application of Profile Likelihood-based methods can also be extended to predictability analysis and confidence bands estimation. With the growing interest of Systems Biology community to Julia and SciML package ecosystem it is fair to ask what methods are available to address the problem of practical identifiability and predictability in Julia. The talk will present the problem of practical identifiability and propose an overview of available packages (LikelihoodProfiler.jl and ProfileLikelihood.jl) and the desirable improvements to Julia SciML ecosystem.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/insysbio/LikelihoodProfiler.jl">GitHub</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MVFTEK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MVFTEK/feedback/</feedback_url>
            </event>
            <event guid='7b1590bd-2ef6-50b0-8cee-94c1cee127b4' id='44470' code='CFAJWL'>
                <room>While Loop (4.2)</room>
                <title>Steel thin-walled structural analysis and design with Julia</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T11:50:00+02:00</date>
                <start>11:50</start>
                <duration>00:10</duration>
                <abstract>It turns out that Julia tooling is very good at predicting thin-walled structure behavior, especially those packages in the SciML ecosystem. In this presentation, examples will be provided that show how Julia&#8217;s speedy, reliable, and accessible computational tools are advancing structural design capabilities and practices when it comes to bread-and-butter steel building systems that employ thin-walled structural components.</abstract>
                <slug>juliacon2024-44470-steel-thin-walled-structural-analysis-and-design-with-julia</slug>
                <track>SciML</track>
                
                <persons>
                    <person id='47439'>Cris Moen</person>
                </persons>
                <language>en</language>
                <description>It turns out that Julia tooling is very good at predicting thin-walled structure behavior, especially those packages in the SciML ecosystem.  Most low and mid-rise buildings around the world  have steel thin-walled structural components, in the roofs and walls and floors of  hotels and condos and data centers.   Thin-walled structures gain their strength and stiffness by being bent into complex shapes, and their behavior, including buckling deformation, are defined by systems of ordinary and partial differential equations.  In this presentation, examples will be provided that show how Julia&#8217;s speedy, reliable, and accessible computational tools are advancing structural design capabilities and practices when it comes to bread-and-butter steel building systems that employ thin-walled structural components.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/CFAJWL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/CFAJWL/feedback/</feedback_url>
            </event>
            <event guid='5efb86da-3ee9-5342-9ff6-93c2c079c27c' id='39899' code='FZR3DL'>
                <room>While Loop (4.2)</room>
                <title>Modelling population dynamics with Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T12:00:00+02:00</date>
                <start>12:00</start>
                <duration>00:30</duration>
                <abstract>How does a population of interacting individuals evolve over time?
This puzzling question has been a central focus across various disciplines, ranging from ecology to economics. In this presentation, I introduce the main approaches to model population dynamics and demonstrate how they can be easily implemented and analysed using existing Julia packages.</abstract>
                <slug>juliacon2024-39899-modelling-population-dynamics-with-julia</slug>
                <track>General</track>
                
                <persons>
                    <person id='43872'>Alejandra Ramirez</person>
                </persons>
                <language>en</language>
                <description>During the presentation, I demonstrate how DynamicalSystems.jl can be used to describe and analyse the evolution of populations through differential equations and time series analysis. Additionally, I explain how to model populations using an agent-based approach with Agents.jl, a versatile and robust framework for agent-based modelling. 
Overall, I showcase how to apply tools from existing Julia packages to understand the complex dynamics emerging from populations composed of interacting individuals.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/FZR3DL/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/FZR3DL/feedback/</feedback_url>
            </event>
            <event guid='a75dfcb3-dbab-5b73-8b96-31a9b1a22681' id='40445' code='YXSPPR'>
                <room>While Loop (4.2)</room>
                <title>Earth and climate science in Julia: Power to the user</title>
                <subtitle></subtitle>
                <type>Minisymposium</type>
                <date>2024-07-12T14:00:00+02:00</date>
                <start>14:00</start>
                <duration>00:10</duration>
                <abstract>Using Julia for Earth and climate science has the potential to combine the best of both worlds: The speed of Fortran and the interactivity and productivity of Python, empowering users to be developers and developers to be users. In this minisymposium speakers will present software projects both from a user and a developer perspective. Talks are encouraged to discuss both use cases of existing software as well as the development of user-friendly software.</abstract>
                <slug>juliacon2024-40445-earth-and-climate-science-in-julia-power-to-the-user</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/YXSPPR/precipitation2_g8w3VT9.png</logo>
                <persons>
                    <person id='44314'>Milan Kl&#246;wer</person><person id='44319'>Francesco Martinuzzi</person><person id='44316'>Skylar Gering</person><person id='46773'>Jordi Bolibar</person>
                </persons>
                <language>en</language>
                <description>Solving the two-language problem, Julia blurs the line between users and developers. Julia software in Earth and climate science often spans multiple aspects including models and their development, preparing and running simulations, data post-processing, analysis and visualisation. Users can easily extend packages, increasing the number of contributors, while developers enhance the user interface and experience within a unified language framework. At the same time, developers start to support other software packages and tools directly given the single language framework, further growing the ecosystem.

Traditionally, Earth and climate science relied on Fortran for performance-critical software and, more recently, on Python for data analysis and visualisation. Unfortunately, this puts a divide between developers and users, at least partially counteracting the gained productivity through Python. Julia as an emerging language framework has allowed this community to rethink how to build software with and for users, of which we want to highlight efforts from both the developer but especially the user perspective. Overall we want to accelerate research on Earth and climate science, which not just depends on high-performance computing but particularly on the user interface being accessible, intuitive, interactive and extensible.

We invite both developers and users, as well as individuals who bridge these roles, to discuss software projects and their impact on user empowerment.  We also welcome talks by developer-user pairs highlighting the co-benefits from a combined perspective. For this minisymposium, we accept abstracts on every field in and adjacent to Earth and climate sciences, including but not limited to

- Atmospheric sciences, including atmospheric dynamics, physics, chemistry and climatology
- Oceanography including sea ice and ocean biogeochemistry
- Earth science including land surface processes, hydrology and glaciology
- Land vegetation and interactions of ecosystems with the climate
- Geodynamics, seismology, geodesy and geochemistry
- Human and physical geography
- Climate policy and economics including integrated assessment models

Talks can focus on software that solves equations, analyses or visualises data, processes measurements and especially software with any combination of the above. Talks on planetary sciences are equally welcome especially when they parallel the issues and opportunities to the fields mentioned.

Schedule and confirmed talks (last updated 1 July)

- 14:00 [Introduction](https://pretalx.com/juliacon2024/talk/YXSPPR/)
- 14:10 [Hydrological modelling in Julia with Wflow.jl and Ribasim.jl](https://pretalx.com/juliacon2024/talk/MXMMSW/)
- 14:20 [Multiobjective stochastic storage design of rainwater harvesting](https://pretalx.com/juliacon2024/talk/SXAMDV/)
- 14:30 [High Resolution Flux Estimation with TurbulenceFlux.jl](https://pretalx.com/juliacon2024/talk/7LAYTN/)
- 14:40 [SpeedyWeather.jl: Reinventing atmospheric models](https://pretalx.com/juliacon2024/talk/EP99CX/)
- 14:50 [Oceananigans.jl: An ocean-flavoured fluid dynamics library](https://pretalx.com/juliacon2024/talk/BYQWXK/)
- 15:00 [Subzero.jl Fast and Flexible Sea Ice Physics](https://pretalx.com/juliacon2024/talk/NC7JPQ/)
- 15:10 [Subglacial water flow simulations on GPUs](https://pretalx.com/juliacon2024/talk/VKCYEK/)
- 15:20 [ODINN.jl: Multi-language Geoscientific Machine Learning](https://pretalx.com/juliacon2024/talk/EPUXXU/)
- 15:30 (10min break)
- 15:40 [Strategies to Integrate Data and Biogeochemical models](https://pretalx.com/juliacon2024/talk/MZTRMN)
- 15:50 [SpeciesDistributionModels.jl: an SDM workflow](https://pretalx.com/juliacon2024/talk/P88SPE/)
- 16:00 [How Climate Economics Domain Experts Use an Embedded DSL](https://pretalx.com/juliacon2024/talk/9UWCXV/)
- 16:10 [Visualization and analysis of 3D Lightning Mapping Array data](https://pretalx.com/juliacon2024/talk/79BGUS/)
- 16:20 [Supporting development and operation of Scatterometers](https://pretalx.com/juliacon2024/talk/BPZJPP/)
- 16:30 [Julia Community Reshapes Computation in Geosciences](https://pretalx.com/juliacon2024/talk/VHPZ7Z/)
- 16:40 [Concluding discussion](https://pretalx.com/juliacon2024/talk/HSN88L/) until 17:00.

Chairs

- Skylar Gering (Caltech)
- Francesco Martinuzzi (Leipzig)
- Jordi Bolibar (Grenoble)
- Milan Kl&#246;wer (MIT)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/YXSPPR/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/YXSPPR/feedback/</feedback_url>
            </event>
            <event guid='0cd13002-f908-5cd9-a297-d6d55db28839' id='44386' code='MXMMSW'>
                <room>While Loop (4.2)</room>
                <title>Hydrological modelling in Julia with Wflow.jl and Ribasim.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T14:10:00+02:00</date>
                <start>14:10</start>
                <duration>00:10</duration>
                <abstract>We introduce two hydrological numerical models in Julia, developed at Deltares. Wflow is a distributed hydrological modelling platform, including different vertical and lateral concepts. Ribasim is a water resources model, solving the water balance equation for regional surface waters, allowing users to solve water allocation questions. We explain why we (re)wrote Wflow and Ribasim, which were originally coded in respectively Python and Fortran and discuss why we keep most processing in Python.</abstract>
                <slug>juliacon2024-44386-hydrological-modelling-in-julia-with-wflow-jl-and-ribasim-jl</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='47411'>Martijn Visser</person><person id='47367'>Maarten Pronk</person>
                </persons>
                <language>en</language>
                <description>At Deltares, an applied research institute in the Netherlands, we (re)developed two open-source hydrological numerical models. Wflow is Deltares&#8217; solution for modelling hydrological processes, allowing users to account for precipitation, interception, snow accumulation and melt, evapotranspiration, soil water, surface water and groundwater recharge in a fully distributed environment. Ribasim is a water resources model. It allows users to model basins under current and changing conditions to evaluate and design the water system.

Julia solved the two-language problem for us. Wflow was originally written in Python, linked to an external C++ library (PCRaster). Rewriting in Julia yielded more freedom and performance. Ribasim was originally written in Fortran, and the move to Julia resulted in clearer, faster and less code, especially because we use the existing solvers from DifferentialEquations.jl and JuMP.jl.

However, while Julia solved the two-language problem for numerical simulation software for us, bridging hydrologists and software-engineers, we find that most end-users/modellers stick to Python for scripting. We therefore decided to write most of the pre- and post-processing code in Python for now. We discuss what&#8217;s still needed in the Julia ecosystem to also take this hurdle.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/Deltares/Ribasim">GitHub</link>
                
                    <link href="https://github.com/Deltares/Wflow.jl">GitHub</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/MXMMSW/resources/Hydrological_modeling_in_Julia_with_Wflow_and__tUsc0EM.pdf">Slides</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/MXMMSW/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MXMMSW/feedback/</feedback_url>
            </event>
            <event guid='92f1baa8-dd84-5e8a-a5cd-02494cf42892' id='44376' code='SXAMDV'>
                <room>While Loop (4.2)</room>
                <title>multiobjective stochastic storage design of rainwater harvesting</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T14:20:00+02:00</date>
                <start>14:20</start>
                <duration>00:10</duration>
                <abstract>A multi-objective stochastic optimization approach for sizing the storage of a rainwater harvesting system is presented, considering climate and demand uncertainty. The aim is to maximize system efficiency and minimize cost while satisfying all flow equations, besides incorporating a risk measure to hedge against dry years and high demand. Julia&apos;s JuMP and MultiObjectiveAlgorithms packages are used for modeling and solving the problem. The model is verified by data from a garden in Amsterdam.</abstract>
                <slug>juliacon2024-44376-multiobjective-stochastic-storage-design-of-rainwater-harvesting</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='47257'>Alireza Shefaei</person>
                </persons>
                <language>en</language>
                <description>The optimal design of rainwater harvesting systems requires sizing storage and catchment areas to optimize cost, self-sufficiency, and water quality indicators under climate and demand uncertainty. 
In this work, we formulate and solve a multi-objective stochastic optimization problem that allows for explicit trade-off under uncertainty, maximizing system efficiency and minimizing deployment cost, which includes required materials and construction. For this, we use the yield after spillage (YAS) concept to incorporate the physical and operational constraints and the big-M method to reformulate the nonlinear min\max rules of this approach as a mixed-integer linear programming (MILP) problem.
After that, two sources of uncertainty, including water demand and amount of rainfall, are considered, and the problem is formulated as a stochastic programming. In addition, utilization of the conditional value at risk measure allows for the consideration of risk. It guarantees the designer against the highest demand and driest weather conditions. The problem optimizes the efficiency and cost over demand and rainfall scenarios. The JuMP package is used for modeling the resulting stochastic multi-objective quadratic constraint MILP problem. Also, the Gurobi solver and the MultiObjectiveAlgorithms package are utilized to solve this problem. The results are verified with historical data from a botanical garden as a case study in Amsterdam.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/SXAMDV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/SXAMDV/feedback/</feedback_url>
            </event>
            <event guid='349fb9c3-a37f-53a3-87dc-33756b9a94cb' id='43551' code='7LAYTN'>
                <room>While Loop (4.2)</room>
                <title>High Resolution Flux Estimation with TurbulenceFlux.jl</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:10</duration>
                <abstract>We present a new methodology implemented in the Julia package TurbulenceFlux.jl to compute high time resolution flux from flux tower measurements. Through wavelet analysis, it operates in the time-scale domain to identify times and scales at which turbulence is sufficiently developed to integrate a flux.</abstract>
                <slug>juliacon2024-43551-high-resolution-flux-estimation-with-turbulenceflux-jl</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='47337'>Gabriel Destouet</person>
                </persons>
                <language>en</language>
                <description>Flux estimation from eddy-covariance flux tower measurements faces the problem of integrating fluxes only in the case of fully developed turbulence and in non-stationary environments with advective components. The standard eddy-covariance method operates on fixed-length signals, requiring the knowledge of a maximum correlation time-length as well as post-processing steps assessing the suitability and quality of the data.  One important disadvantage of these statistical tests is that they discard whole time intervals such as half an hour if they detect failure.

Time-scale (time-frequency) analyses have been used as an alternative to the standard time-analysis approach to estimate ecosystem fluxes. In particular, wavelet analysis, which is well adapted to the study of non-stationary and scale invariant processes such as turbulence, has been used in previous works. It presents the ability of separating the different components of the flux in time-scale space and as such could be an efficient alternative for flux estimation.

In a new Julia package TurbulenceFlux.jl, we implement a general framework for analysing fluxes in time-scale space, and propose a new method for identifying and extracting turbulent transport.  The Julia language and its package ecosystem made this implementation easy and natural.  In particular, it allowed our code match the speed of the standard approach implemented in Fortran. It also helped us make our code differentiable, which hints to further investigations, such as the study of flux ecosystem response times, or sensitivity analysis against wavelet and averaging window parameters.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/7LAYTN/resources/main_OMgC60z.pdf">Slidesv2</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/7LAYTN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/7LAYTN/feedback/</feedback_url>
            </event>
            <event guid='9ef16b7f-b272-5ed7-9d43-dd3089a195d6' id='44466' code='EP99CX'>
                <room>While Loop (4.2)</room>
                <title>SpeedyWeather.jl: Reinventing atmospheric models</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T14:40:00+02:00</date>
                <start>14:40</start>
                <duration>00:10</duration>
                <abstract>SpeedyWeather.jl is a library to simulate and analyse the global atmospheric circulation. It implements several 2D and 3D models, as well as packages to analyse and visualise gridded data on the sphere. Running and analysing simulations can be interactively combined, enhancing user experience and productivity. To change, for example, how precipitation or surface mixing is simulated, SpeedyWeather.jl is easily extensible with new components that can be introduced interactively.</abstract>
                <slug>juliacon2024-44466-speedyweather-jl-reinventing-atmospheric-models</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/EP99CX/primitive_overview_foKefge.png</logo>
                <persons>
                    <person id='44314'>Milan Kl&#246;wer</person>
                </persons>
                <language>en</language>
                <description>SpeedyWeather.jl is a fresh approach to atmospheric models that have been very influential in many areas of scientific and high-performance computing as well as climate change mitigation and adaptation. Most weather, ocean, and climate models are written in Fortran and have been developed over decades. From this tradition follows a specific programming style and associated user interface. SpeedyWeather.jl aims to overcome constraints of traditional Fortran-based models. The modern trend sees simulations in Fortran and data analysis in Python, making it virtually impossible to interact with various model components directly. In SpeedyWeather.jl, interfaces to the model components are exposed to the user.

A model in SpeedyWeather.jl is constructed bottom-up by first defining the discretization and any non-default model components with their respective parameters. All components are then collected into a single model object, which, once initialised, returns a simulation object. A simulation can be run, but also accessed and altered in all its components before and after to analyse or visualise the current variables or individual terms of the equations. One can also adjust some parameters before resuming the simulation, putting the user at the centre of the interaction with the model.

With SpeedyWeather.jl we hope to provide a platform for atmospheric modelling and in general an interactive model that makes difficult problems easy to simulate. Climate models that are user-friendly and easily extensible will suddenly make many complex research ideas possible.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EP99CX/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EP99CX/feedback/</feedback_url>
            </event>
            <event guid='83c8d8bf-84ed-57f9-9d99-56a73696ab25' id='51645' code='BYQWXK'>
                <room>While Loop (4.2)</room>
                <title>Oceananigans: an ocean-flavoured fluid dynamics library</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T14:50:00+02:00</date>
                <start>14:50</start>
                <duration>00:10</duration>
                <abstract>Oceananigans is a Julia fluid dynamics library focused on oceanic settings that underpins the ocean component of the CliMA&apos;s Earth System Model. We describe the implementation strategy with particular attention to flexibility, usability, and performance on GPU architectures. We explain how our approach gives rise to a generalized framework that can be easily extended to encompass different physical parameterization and model components.</abstract>
                <slug>juliacon2024-51645-oceananigans-an-ocean-flavoured-fluid-dynamics-library</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/BYQWXK/Screenshot_2024-07-12_at_08.06.14_AzcOhcO.png</logo>
                <persons>
                    <person id='53920'>Navid Constantinou</person>
                </persons>
                <language>en</language>
                <description>We present [Oceananigans](https://github.com/CliMA/Oceananigans.jl), a Julia fluid dynamics library focused on oceanic settings. Oceananigans underpins the ocean component of the [CliMA](https://clima.caltech.edu)&apos;s Earth System Model. Using a library for fluid dynamics modeling deviates from the typical approach of having a statically compiled code because it allows users to develop their custom equations by leveraging Oceananigans&apos; predefined functions. We describe the implementation strategy with particular attention to flexibility, usability, and performance on GPU architectures. We explain how our approach gives rise to a generalized framework that can be easily extended to encompass different physical parameterization and model components. As specific examples, we illustrate the implementation of a sea-ice component and a biogeochemistry component and if time allows we showcase the ease of use by illustrating how to include a neural network in Oceananigans&apos; hydrostatic model.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://www.navidconstantinou.com/presentations/Navid-Oceananigans-JuliaCon2024.pdf">Slides</link>
                </links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/BYQWXK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BYQWXK/feedback/</feedback_url>
            </event>
            <event guid='9d71fb19-f323-5dc6-81f4-e123062cf8f7' id='44392' code='NC7JPQ'>
                <room>While Loop (4.2)</room>
                <title>Subzero.jl: Fast and Flexible Sea Ice Physics</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:00:00+02:00</date>
                <start>15:00</start>
                <duration>00:10</duration>
                <abstract>Julia&#8217;s speed and extensibility allow fast and iterative exploration of fine-scale sea ice dynamics. Performance improvements of 15-20x over similar MATLAB code enable simulations over climate-relevant scales. Furthermore, the model&#8217;s modular design, enhanced by Julia&#8217;s multiple dispatch, encourages users to test novel experiment configurations. These improvements uncovered physical properties not captured by traditional models, which in turn continue to inform Subzero&#8217;s development.</abstract>
                <slug>juliacon2024-44392-subzero-jl-fast-and-flexible-sea-ice-physics</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='44316'>Skylar Gering</person><person id='49548'>Mukund Gupta</person>
                </persons>
                <language>en</language>
                <description>Julia&#8217;s speed and flexibility promise advances in efficient and accessible climate modeling. For example, through the combination of Julia and GPUs, Oceananigans.jl has allowed mesoscale-resolving large ensemble ocean runs, the likes of which have previously been restricted to atmospheric models. As a developer-researcher team, we plan to adapt these computational advances to discrete-element sea ice modeling, where individual ice floes are represented as distinct elements that interact with other floes, the ocean, and the atmosphere. Towards this goal, we have translated the discrete-element sea ice model Subzero.jl from MATLAB to Julia to explore the physics of fine-grained sea ice dynamics while addressing the computational challenges posed by a sea ice field that constantly evolves in both size and shape. 

In this translation, we focus on performance and ease of use. We have realized, and engineered, large performance improvements that now allow larger and faster simulations. Some of these speedups have resulted from our contributions to various Julia geometry libraries, highlighting the experience of developers becoming contributors to other Julia packages. Additionally, we have designed the code base in such a way that it is easily extended and customizable for users. This modularity takes advantage of multiple dispatch and has inspired new additions to the model as users request new features. Finally, we have achieved coupling with Oceanaigans.jl, furthering our research agenda and the usefulness of Subzero.jl within the field.

We have used the new model to investigate the transfer of momentum through sea ice packs and the ocean in various scenarios, including sea ice packs of various concentrations and sizes. Recently, we have collaborated with users interested in modeling the effects of storms on the ice pack, as well as the formation of cracks within the ice. We are excited to assist new users to extend and develop Subzero.jl independently as a way to increase both the developer and user base, highlighting the interplay between users and developers.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/NC7JPQ/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/NC7JPQ/feedback/</feedback_url>
            </event>
            <event guid='035bb521-5919-50bf-8724-4a716206254e' id='44135' code='VKCYEK'>
                <room>While Loop (4.2)</room>
                <title>Subglacial water flow simulations on GPUs</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:10:00+02:00</date>
                <start>15:10</start>
                <duration>00:10</duration>
                <abstract>Modeling subglacial water flow and its link to ice dynamics is necessary for accurate predictions of ice sheet response to a warming climate.  Here we present a re-implementation of the widely used GlaDS model to run on GPUs.  We show-case the matrix free implementation which leverages the full capabilities of the GPU, present model runs of test cases, show the model&apos;s scalability and provide an outlook towards inversion schemes and high-resolution continental-scale applications.</abstract>
                <slug>juliacon2024-44135-subglacial-water-flow-simulations-on-gpus</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='46673'>Ludovic R&#228;ss</person><person id='47132'>Mauro Werder</person><person id='46679'>Ivan Utkin</person><person id='47377'>Annegret Pohle</person>
                </persons>
                <language>en</language>
                <description>Subglacial water flow plays an important role in the dynamic of a glacier or ice sheet by impacting the conditions at their base and thus the sliding.  Understanding subglacial drainage and its links to ice flow is necessary to predict sea level rise due to the ice sheets&apos; evolution in a warming climate.

The Glacier Drainage System Model (GlaDS), one of the most widely used such models, simulates both channelised and distributed drainage at the ice-bed interface.  Here we present a re-implementation of GlaDS running on Graphical Processing Units (GPUs).  The aim is for the model to run on meshes larger than 10,000&#178; grid points, which would allow, for instance, to simulate Antarctica at 500m resolution. Unlike the original GlaDS implementation, this is based on a finite difference scheme on a structured grid. Together with a matrix-free solver, this allows us to leverage the full performance capabilities of GPUs. We present model runs of test cases, show the model&apos;s scalability and provide an outlook towards inversion schemes and higher-resolution continental-scale applications.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/VKCYEK/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VKCYEK/feedback/</feedback_url>
            </event>
            <event guid='3ef4164d-6f3e-5c52-91d2-77312f344af3' id='43729' code='EPUXXU'>
                <room>While Loop (4.2)</room>
                <title>ODINN.jl: Multi-language Geoscientific Machine Learning</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:20:00+02:00</date>
                <start>15:20</start>
                <duration>00:10</duration>
                <abstract>We introduce ODINN.jl, a new global glacier evolution model in Julia, leveraging SciML for functional inversions of geophysical processes from heterogenous observations. PyCall.jl enables us to build on top of key Python packages, combining each communities&apos; strengths. ODINN.jl showcases flexible geoscientific modeling, combining domain knowledge of mechanistic models with machine learning, facilitated by Julia&apos;s differentiable programming and multi-language support.</abstract>
                <slug>juliacon2024-43729-odinn-jl-multi-language-geoscientific-machine-learning</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/EPUXXU/ODINN_overview_9Ajcr10.png</logo>
                <persons>
                    <person id='46773'>Jordi Bolibar</person>
                </persons>
                <language>en</language>
                <description>We present ODINN.jl, a global glacier evolution model leveraging the Scientific machine learning and foreign language calling capabilities of Julia. We developed a modelling framework capable of handling Universal Differential Equations of glacier ice flow, solving hundreds of thousands of ODEs in parallel. By exploiting Julia&#8217;s SciML differentiable programming capabilities, we demonstrate how we can perform functional inversions to learn underlying physical laws of geophysical processes, while assimilating heterogenous, noisy and sparse observations. Moreover, thanks to the use of PyCall.jl, we can do so by re-using data processing and management tools from the Open Global Glacier Model and Xarray in Python. Furthermore, the use of these tools allows us to recycle existing mass balance models (i.e. a source in a differential equation) previously calibrated in Python that are incorporated in the numerical solver. This enables us to build complex hybrid models on top of currently existing infrastructure in Python, leveraging each ecosystem&#8217;s strengths. 

With ODINN.jl, we show how the future of geoscientific models will gravitate towards flexible modelling frameworks, exploiting mechanistic models based on domain knowledge with machine learning models capable of learning from new massive Earth observations. Moreover, the multi-language capabilities of Julia enable a smooth interoperability of these new tools with already established frameworks, providing a faster track to new methods, while enabling existing communities to benefit from them.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/EPUXXU/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/EPUXXU/feedback/</feedback_url>
            </event>
            <event guid='3510302e-4f27-5781-b9f6-906232d1739b' id='44335' code='MZTRMN'>
                <room>While Loop (4.2)</room>
                <title>Strategies to Integrate Data and Biogeochemical models</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:40:00+02:00</date>
                <start>15:40</start>
                <duration>00:10</duration>
                <abstract>**Sindbad.jl** currently serves as an internal modular framework for model-data integration at the Max Planck Institute for Biogeochemistry. It supports various methods for water-carbon coupling and vegetation dynamics. All definitions are compatible with automatic differentiation, enabling hybrid modeling approaches. Specifically, these approaches preserve the physics-based models while utilizing neural networks to optimize quantities of interest.</abstract>
                <slug>juliacon2024-44335-strategies-to-integrate-data-and-biogeochemical-models</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='46521'>Felix Cremer</person><person id='47319'>Lazaro Alonso</person><person id='56902'>Nuno Carvalhais</person>
                </persons>
                <language>en</language>
                <description>Co-authors / developers:
Sujan Koirala, Fabian Gans, Bernhard Ahrens, Felix Cremer, Thomas Wutzler, Mohammed Ayoub, Markus Reichstein, Nuno Carvalhais

The application of automatic differentiation and deep learning approaches to tackle current challenges is now a widespread practice, and the biogeosciences community is no stranger to this trend. In this talk, we showcase the **Sindbad.jl** framework for modelling the ecosystem dynamics of vegetation, water, and carbon cycles. Our goal is to simulate targeted observations through physics-based models while employing a feedforward neural network to learn the spatial variability of their parameters. These models historically posed challenges due to their complex process representations, varied spatial scales, and parameterizations.

Our results demonstrate that the hybrid approach effectively predicts model parameters using a single neural network, compared to a site-level optimized set of parameters. This approach proves its capability to generate predictions consistent with in-situ parameter calibrations across various spatial locations, showcasing its versatility and reliability in modeling coupled systems.

This study illustrates that incorporating neural networks into a diverse collection of physics-based models holds significant promise. This integration has the potential to leverage the abundance of current Earth observations, enabling the application of these methods on a larger scale.

In addition to addressing scientific questions, we will also present technical challenges and the approaches taken. This includes dealing with mutation and automatic differentiation, scaling up forward runs with **YAXArrays.jl**, and ensuring documentation is user-friendly, or at least as user-friendly as possible.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/MZTRMN/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/MZTRMN/feedback/</feedback_url>
            </event>
            <event guid='023a967b-586b-5002-aebc-ecc2ae2fc7b7' id='44430' code='P88SPE'>
                <room>While Loop (4.2)</room>
                <title>SpeciesDistributionModels.jl: an SDM workflow</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T15:50:00+02:00</date>
                <start>15:50</start>
                <duration>00:10</duration>
                <abstract>Species distribution modelling is the ecological discipline of predicting species occurrence in time and space. SDMs are used for biodiversity conservation, predicting invasions, and anticipating the effects of climate change.

This talk will present a species distribution modelling workflow in Julia, using SpeciesDistributionModels.jl and packages from the EcoJulia and JuliaGeo ecosystems to extract data, fit a model ensemble, and predict distributions in just a few lines of code.</abstract>
                <slug>juliacon2024-44430-speciesdistributionmodels-jl-an-sdm-workflow</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='47364'>Rafael Schouten</person><person id='47398'>Tiem van der Deure</person>
                </persons>
                <language>en</language>
                <description>The accessibility of species distribution modelling techniques through R packages such as sdm and biomod2 has hugely contributed to their popularity. The paper that introduces maxent (https://doi.org/10.1016/j.ecolmodel.2005.03.026), one of the most popular algorithms for species distribution modelling, has been cited over 18 thousand times.

SpeciesDistributionModels.jl is designed to be as user-friendly as existing R-based platforms, but with the power of Julia. It builds on the MLJ ecosystem can be extended with any MLJ-compatible model that accepts a binary response variable. It also integrates with Rasters.jl and Makie.jl to predict with geospatial inputs and outputs and for easy visualisation of model evaluation.

The speed-up provided by Julia opens up new possibilities to explore and visualise SDMs, like using Shapley values for more adequately explain the contributions of predictor variables and interactive plotting. 

This talk will show a typical SDM workflow using SpeciesDistributionModels.jl and discuss the advantages of using Julia for SDMs.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/P88SPE/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/P88SPE/feedback/</feedback_url>
            </event>
            <event guid='ed6f692b-322f-51ec-9be0-b07c51080df8' id='43705' code='9UWCXV'>
                <room>While Loop (4.2)</room>
                <title>How Climate Economics Domain Experts Use an Embedded DSL</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:10</duration>
                <abstract>Programming tools are increasingly integral to research and analysis in myriad domains, including specialized areas with no formal relation to computer science. Embedded domain-specific languages have the potential to serve these programmers while placing light implementation burdens on language designers. We e aim to deepen our understanding of how programmers use eDSLs and identify user needs to inform future eDSL designs, focusing on Mimi.jl, an EDSL for climate economics research and policy.</abstract>
                <slug>juliacon2024-43705-how-climate-economics-domain-experts-use-an-embedded-dsl</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='46749'>Lisa Rennels</person>
                </persons>
                <language>en</language>
                <description>Programming tools are increasingly integral to research and analysis in myriad domains, including specialized areas with no formal relation to computer science. Embedded domain-specific languages (eDSLs) have the potential to serve these programmers while placing relatively light implementation burdens on language designers. However, barriers to eDSL use reduce their practical value and adoption. In this paper, we aim to deepen our understanding of how programmers use eDSLs and identify user needs to inform future eDSL designs. We performed a contextual inquiry (9 participants) with domain experts using Mimi, an eDSL for climate change economics modeling. A thematic analysis identified five key themes, including: the interaction between the eDSL and the host language has significant and sometimes unexpected impacts on eDSL user experience, and users preferentially engage with domain-specific communities and code templates rather than host language resources. The needs uncovered in our study offer design considerations for future eDSLs and suggest directions for future DSL usability research.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/mimiframework/Mimi.jl">Github Repo</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/9UWCXV/resources/JuliaCon2024_Presentation_U73eyqW.pptx">FinalSlidesPPTX</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/9UWCXV/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/9UWCXV/feedback/</feedback_url>
            </event>
            <event guid='52eda029-efae-5682-9860-8d058e21b9cb' id='44512' code='79BGUS'>
                <room>While Loop (4.2)</room>
                <title>Visualization and analysis of 3D Lightning Mapping Array data</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:10:00+02:00</date>
                <start>16:10</start>
                <duration>00:10</duration>
                <abstract>A 3D Lightning Mapping Array (LMA) is a regional network of VHF sensors locating lightning channels within the cloud with high precision. An interactive visualization &amp; analysis tool is developed using Julia and Makie to study the features of lightning flashes, the charge structure of thunderstorms and the evolution of 3D storm activity, and network performance. This talk will explain how Julia is used in the lightning data processing, its visualization, and performance lessons.</abstract>
                <slug>juliacon2024-44512-visualization-and-analysis-of-3d-lightning-mapping-array-data</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/79BGUS/Screenshot_2024-02-01_022556_pMQR9oj.png</logo>
                <persons>
                    <person id='47470'>Oscar van der Velde</person>
                </persons>
                <language>en</language>
                <description>The 3D Lightning Mapping Array (LMA) is a regional network for the detection of lightning channels as they propagate through the cloud. Designed 25 years ago by New Mexico Tech, more than a dozen LMAs are now being operated across the globe. This talk will explain how I use Julia for processing LMA data processing, the visualization, and performance considerations. The power of Julia allows additional (novel) data analysis to be done while allowing a responsive interactive data browsing experience.

The functionality of the LMA visualizer is already rich, and it is my intention to create a package for release to the greater community within a year or so. 

Background

An LMA is a regional network of VHF antenna stations spaced 5-50 km apart that detect lightning pulses, typically in the 60-66 MHz band. The pulses are timed by GPS. Time-of-arrival reconstruction results in 3D pulse locations, revealing the lightning leader channels (of negative polarity) inside the cloud and toward ground. The detection range of a sensitive network can reach over 250 km from the center. More than a dozen LMAs are now operational world wide. They are used for lightning science, nowcasting of severe weather and airspace safety.

In 2011, the Ebro 3D Lightning Mapping Array in Spain was the first LMA to be installed outside the USA, consisting of 12 stations in 2012-2014 and was subsequently split in half in 2015 to facilitate a LMA in Colombia. In 2023 and 2024, the system was upgraded to 15 stations spread out mostly across western Catalonia. It has detected very interesting cases of supercell storms with rising bubbles of lightning activity and even a &#8220;lightning hole&#8221; in hailstorms, as well as very large horizontal flashes that lasted for 6 seconds before they ceased, spanning 130 km. More information on the Ebro LMA, real-time monitoring and the eLMA services can be found at https://elma.upc.edu.

An interactive lightning visualization and analysis tool for the LMA is being developed using Julia and Makie. It is a suite of tools that focus on (a) lightning flash analysis and general browsing of activity, (b) storm activity evolution analysis, and (c) network performance analysis based on the data.

An automated leader speed tool was previously programmed in Scilab, using Theil-Sen slope estimator of points, which has been successfully implemented in Julia, reducing waiting times from many minutes to generally less than 10 seconds. Leader speed turns out to be the best tool for diagnosing the overall electrical charge structure of a thunderstorm. 

New tools include a flash grouping algorithm based on DBSCAN. Noisy points that do not belong to lightning leaders are filtered out, and these themselves can hold information which is subsequently going through another DBSCAN with different settings, to isolate sparse, local, but continuous activity such as sparks near the cloud top and sparks at wind turbines. Another DBSCAN setting allows to isolate the leader branches within flashes.

The tool also can read cloud-to-ground stroke data from other networks, and Meteosat Third Generation Lightning Imager or GOES Geostationary Lightning Mapper (GLM) to be compared with LMA. 

A grid-based storm activity analysis tool has now been designed. It is based on local 3D flash density and its evolution in time visualizes trends in 3D activity, rather than the ubiquitously used general flash rate. It uses sparse arrays to manage memory issues, with certain performance considerations. 

Lightning leader speed, polarity and the repetition rate of leaders in flashes may hold new information that could turn out to be useful in monitoring the thunderstorm state and potential for severe weather.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/79BGUS/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/79BGUS/feedback/</feedback_url>
            </event>
            <event guid='841bea04-ee7e-5696-9884-836e3b4a3d2f' id='44385' code='BPZJPP'>
                <room>While Loop (4.2)</room>
                <title>Supporting development and operation of Scatterometers</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:20:00+02:00</date>
                <start>16:20</start>
                <duration>00:10</duration>
                <abstract>Explore how Julia empowers scatterometer operations at EUMETSAT. From visualizing data to calibrating operational instruments and planning future missions, Julia is becoming an important tool. Spaceborne scatterometers are vital for monitoring ocean wind speeds, essential for numerical weather models. Additionally, they measure soil moisture, contributing to our understanding of climate dynamics.</abstract>
                <slug>juliacon2024-44385-supporting-development-and-operation-of-scatterometers</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='47366'>Simon Kok Lupemba</person>
                </persons>
                <language>en</language>
                <description>The Scatterometry team at EUMETSAT has embarked on a gradual transition to Julia over the past few years, and now, it&#8217;s an integral part of our daily workflow. In this talk, we&#8217;ll delve into key aspects of how Julia is used to support our scatterometer operations.

We will share our experiences and give concrete examples of how we use Julia to support the current ASCAT mission. This ranges from data visualization to instrument calibration and quality monitoring. We will also describe how we use Julia in the preparation for the future SCA mission.

While Julia is not directly used in the operational processing chain, we will discuss its potential and the associated challenges. We have not released any Julia packages yet, but we hope to do so in the future. We will reflect on how this can help empower the end users.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://gitlab.eumetsat.int/eumetlab/cross-cutting-tools/MetopNative.jl">GitLab</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/BPZJPP/resources/JuliaCon24_presetaion_-_Scatterometry_kY3DKUP.pptx">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/BPZJPP/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/BPZJPP/feedback/</feedback_url>
            </event>
            <event guid='e79f44a1-ea91-5e89-b67b-6f1c79aa9090' id='43716' code='VHPZ7Z'>
                <room>While Loop (4.2)</room>
                <title>Julia Community Reshapes Computation in Geosciences</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2024-07-12T16:30:00+02:00</date>
                <start>16:30</start>
                <duration>00:10</duration>
                <abstract>What happens when Julia developers meet users? Our group is leading capacity-building projects focused on applying the Julia programming language in Earth observation. This talk provides the context and motivation behind organizing JuliaEO - Global Workshop on Earth Observation with Julia (in 2023 and 2024) and the Julia-focused project on harnessing space technological applications for sustainable urban development.</abstract>
                <slug>juliacon2024-43716-julia-community-reshapes-computation-in-geosciences</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                <logo>/media/juliacon2024/submissions/VHPZ7Z/JuliaEO24Logo_1cZz0xr.png</logo>
                <persons>
                    <person id='46768'>Iga Szczesniak</person><person id='47295'>Joao Pinelo</person>
                </persons>
                <language>en</language>
                <description>With a low entry barrier to a large ecosystem of tools and libraries that enable quick prototyping, Julia holds great potential for development. Julia&#8217;s native use of hardware accelerators has the potential to greatly impact data processing in the geosciences due to the heavy reliance on matrixes. In this talk, we will discuss the theoretical possibilities of a computational revolution in the geosciences, and the outcomes, overview, and impact of two initiatives centred around Julia, focusing on Earth observation concepts and software development. Both initiatives have facilitated genuine knowledge sharing and fostered new collaborations between developers and users across diverse fields.

The diverse range of topics covered various phases of the process, spanning the creation of libraries and packages to the replication of tools. A total of 120 people registered online, with 44 attendees present in person. All major aspects were addressed, including the acquisition, processing, visualization, and classification of geospatial data. The discussion extended to parallel computing and machine learning.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/juliacon2024/submissions/VHPZ7Z/resources/Julia_Community_Reshapes_Computation_in_Geosc_XizwdGb.pptx">Presentation</attachment>
                </attachments>

                <url>https://pretalx.com/juliacon2024/talk/VHPZ7Z/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/VHPZ7Z/feedback/</feedback_url>
            </event>
            <event guid='95f9ef20-824b-53bf-8ba9-fa75c6dd03b0' id='50043' code='HSN88L'>
                <room>While Loop (4.2)</room>
                <title>Discussion: Earth and climate science in Julia</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2024-07-12T16:40:00+02:00</date>
                <start>16:40</start>
                <duration>00:20</duration>
                <abstract>Using Julia for Earth and climate science has the potential to combine the best of both worlds: The speed of Fortran and the interactivity and productivity of Python, empowering users to be developers and developers to be users. In this minisymposium speakers will present software projects both from a user and a developer perspective. Talks are encouraged to discuss both use cases of existing software as well as the development of user-friendly software.</abstract>
                <slug>juliacon2024-50043-discussion-earth-and-climate-science-in-julia</slug>
                <track>Earth and climate science in Julia: Power to the user</track>
                
                <persons>
                    <person id='44314'>Milan Kl&#246;wer</person><person id='44319'>Francesco Martinuzzi</person><person id='44316'>Skylar Gering</person><person id='46773'>Jordi Bolibar</person>
                </persons>
                <language>en</language>
                <description>Using Julia for Earth and climate science has the potential to combine the best of both worlds: The speed of Fortran and the interactivity and productivity of Python, empowering users to be developers and developers to be users. In this minisymposium speakers will present software projects both from a user and a developer perspective. Talks are encouraged to discuss both use cases of existing software as well as the development of user-friendly software.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/juliacon2024/talk/HSN88L/</url>
                <feedback_url>https://pretalx.com/juliacon2024/talk/HSN88L/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    
</schedule>
