DjangoCon US 2023

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
09:00
09:00
180min
Django <3 Airflow
Sheena O'Connell

Ref: https://xkcd.com/2054/

As data-driven organizations grow, life gets... complicated

  • data pipelines requirements grow
  • more data sources and sinks are added to the mix
  • tasks become dependent on each other in complicated ways
  • service agreements need to be adhered to and monitored
  • schedules need to be maintained...

Apache Airflow, initially developed and open-sourced by those nice folks at Airbnb, solves these problems and more.

In this tutorial session, we'll be starting off by getting to grips with Airflow as a stand-alone tool, and then we'll see how we can get it to play nice with Django.

General
Tutorial Track C
09:00
180min
Mastering Test Driven Development in Django: A Comprehensive Guide with factory_boy and faker
Kuldeep Pisda

Test Driven Development (TDD) has become a widely used methodology in software development to ensure code quality and minimize bugs. In this workshop, you will learn the fundamentals of TDD and its benefits, along with practical tools like factory_boy and faker for pre-populating data factories in tests. You will also learn how to write tests for Django REST endpoints, mock 3rd party services, and parameterize tests for different user types and roles. By the end of this workshop, you will have a solid understanding of TDD and the skills to implement it in your Django projects. Whether you are a beginner or an experienced developer, this workshop will provide valuable insights and techniques for mastering TDD in Django.

Deep Dive
Tutorial Track B
09:00
180min
Seamless Postgres Query Optimization
Nikolay Samokhvalov

Seamless Postgres Query Optimization is a methodology that allows every backend engineer, even without deep database knowledge and 10-year Postgres experience, to move step-by-step to find and eliminate the worst bottlenecks in any SQL.

Deep Dive
Tutorial Track A
13:00
13:00
180min
Best of both worlds: Next.js ❤️ Wagtail
Meagen Voss

Fully static sites have clear benefits – and limitations. Rather than going fully static, let’s use Next.js in combination with a Django/Wagtail API backend, so we make the most of both platforms.

General
Tutorial Track B
13:00
180min
Collaborative Supercharge your Python and Django Development Environment with VS Code and Dev Containers
Dawn Wages

We'll look at creating a Python and Django specific developer environment in VS Code including all the extensions, settings, and new features that will make developing your Python project simpler. This workshop is tailored to your needs for you to take home to your development teams.

General
Tutorial Track A
13:00
180min
Hotwire: A refreshing approach to the front-end that keeps Django the star.
Stephen Mitchell

Escape from the dark, complex web of modern application development, and return to the green pastures where Django began - where web application development was simple, fast, and fun. Hotwire allows us to keep using Django's amazing toolkit and all the productivity benefits that come with it, while obtaining the results people expect from a modern website.

This tutorial will introduce you to Hotwire and radically change how you thought modern web development had to be.

General
Tutorial Track C
09:00
09:00
30min
Orientation
Junior Ballroom
09:30
09:30
15min
Opening remarks
Junior Ballroom
09:45
09:45
45min
Keynote 1
Junior Ballroom
10:30
10:30
10min
Sponsored Talk
Junior Ballroom
10:40
10:40
30min
Break
Junior Ballroom
10:40
25min
Automate Your City Data with Python
Philip James

Every week, in every city, hundreds if not thousands of decisions, big and small, are being made about the places where we all live. Most of the time, these decisions are hidden behind old systems, arcane websites, or poorly formatted PDFs. With the power of Datasette, Python data tooling, and Github actions, you can quickly set up a low-or-no-cost city data pipeline, and help us all better understand the decisions being made where we live.

General
Online talks
11:10
11:10
45min
Contributing to Django or how I learned to stop worrying and just try to fix an ORM Bug
Ryan Cheley

You may think the Django ORM is big and scary, but at the end of the day, it's just Python. Join me as I talk about my experiencing fixing an ORM bug with help from the community

General
Junior Ballroom
11:10
45min
HTML-ivating your Django web app's experience with HTMX, AlpineJS, and streaming HTML.
Chris May

Many Python developers who build web applications rely on JavaScript-heavy Single-Page Applications (SPAs) to achieve dynamic user experiences. However, these SPAs have challenges, including increased complexity, slower load times, and complicated build pipelines. But an alternative approach exists that delivers an exceptional user experience without the drawbacks of SPAs!

This talk will explore how you can leverage the power of HTMX, AlpineJS, and Django's ability to stream HTML to create web applications with a significantly improved user experience. We will delve into the principles and techniques that make this approach a compelling alternative to SPAs.

General
Grand Ballroom II-III
12:00
12:00
25min
Meet-ups: A Grand Vision for a Humble Endeavor
Deb Nicholson

This talk is a love letter to meetups. We'll cover how meet-ups fit into our larger ecosystems, what we could work on collectively to support each other, and maybe even make a plan for saving the world -- one meet-up at a time.

General
Junior Ballroom
12:00
25min
Vue + Django: Combining Django Templates and Vue Single File Components without compromise
Mike Hoolehan

Django and Vue both have unique front-end strengths. Django’s context-driven template views offer rapid development of pages directly from back-end model content. Vue’s modern reactive components provide powerful tools for building complex UIs within the rich Javascript ecosystem.

Do we have to choose one or the other, or is there a way to combine both front-end frameworks in a single project without compromising their strengths?

This talk will demonstrate step-by-step how to intermingle Vue SFCs within Django Templates, such that targeted areas can be enriched with Vue while retaining the flexibility and convenience of Django Templates in the remainder.

General
Grand Ballroom II-III
12:30
12:30
50min
Lightning Talks
Junior Ballroom
13:20
13:20
45min
Lunch
Junior Ballroom
13:20
45min
How to Ride Elephants Safely: Working with PostgreSQL when your DBA is not around
Richard Yen

A survival guide for developers who may occasionally be called upon to perform the duties of a PostgreSQL DBA

General
Online talks
14:05
14:05
45min
Let's build a BeeWare app that uses Django
Cheuk Ting Ho

BeeWare is a framework that let users of all skill levels develop applications with native user interfaces. It is very powerful to extend the already existing Django application to multiple devices. In this talk, we will demo building a simple Beeware app with a Django backend.

General
Junior Ballroom
14:05
45min
Using database triggers to reliably track model history
Wes Kendall, Maxwell Muoto

Tracking model history is an essential aspect of many problems encountered in web applications, from simple audit trails to preserving values of fields during state transitions. There are a wide array of approaches to do this with Django apps, almost all of which are subject to performance penalties, require unstructured JSON fields to track history, or can easily be bypassed accidentally in application code.

In this talk, we show a new way to to track history in Django with database triggers. We specifically focus on Postgres databases using the django-pghistory app. We discuss the benefits of using database triggers for history in the context of simplicity, performance, and reliability. We also discuss the benefits of using structured history tables and how this can allow engineers to solve complex history-related modeling problems.

Attendees of this talk will be exposed to a totally new way to think about history tracking in their application, along with an understanding of the pros and cons of using database triggers to track history in practice.

General
Grand Ballroom II-III
14:55
14:55
25min
Beyond the Basics of Migrations
Charlotte Mays

Dig a bit into the inner workings of migrations, and learn a bit about more advanced uses for them

General
Junior Ballroom
14:55
25min
Custom Model Managers and QuerySets: Graduating from Django Beginner to ORM Master
Josh Thomas

This talk explores the potential of Django custom model managers and querysets, guiding beginners through their utilization for more efficient and maintainable development, showcasing practical patterns along the way.

General
Grand Ballroom II-III
15:25
15:25
30min
Break
Junior Ballroom
15:25
25min
Passkeys on Django
Mohamed ElKalioby

Passkeys is a state-of-the-art technology that extends Web Authentication API allowing the user to use a key stored on a device to log in on a new device. The technology is supported by Apple, Google, and Microsoft and is available now on recent iOS/iPad, Andriod as well as Mac OS X Ventura.
Passkeys allow the users to log in only through their private keys. It doesn't require the entry of a username and/or password, which provides a faster as well as safer environment for the users.
Google released Passkeys for all users to log in with on May 3, 2023.
The talk will discuss what is Passkeys and how it is more secure and phishing resistant, also it will show how to integrate them in your current Django project in a few lines of code.

General
Online talks
15:55
15:55
45min
Building Powerful APIs with Django, Django Rest Framework, and OpenAPI
Velda Kiara

In today's world, APIs have become the backbone of many modern applications. Django, one of the most popular web frameworks, along with Django Rest Framework, provides a powerful and flexible platform for building APIs. And when it comes to API documentation, OpenAPI has emerged as the industry standard.

In this session, we will dive deep into API development with Django, Django Rest Framework, and OpenAPI. We will explore the capabilities of these tools and learn how to build robust and scalable APIs. We will cover topics such as API design principles, request handling, response formatting, authentication, and versioning. We will also discuss best practices for documenting APIs using OpenAPI.

By the end of this session, you will have a solid understanding of API development with Django and Django Rest Framework, and be able to create high-quality APIs that meet the needs of your users. You will also have the skills to document your APIs using OpenAPI, ensuring that your documentation is always up-to-date and accurate. So join us and learn how to build powerful APIs that can transform the way you and your users interact with your application.

Deep Dive
Junior Ballroom
15:55
45min
Hosting and DevOps for Django
Benjamin "Zags" Zagorsky

Production server infrastructure is a complicated beast that requires configuring and coordinating dozens of tools and services. You have a new Django application and you're ready to deploy it; what next? You have an existing Django application and you set up the servers yourself; what can you do better?

I’m the co-founder CTO of Zagaran, Inc., a software consulting company. Over the past 10 years, we’ve built, maintained, and deployed dozens of Django websites, and have an extensive playbook for how to do that well. In this talk, we'll draw from that playbook and go through the main issues for a creating a robust and secure Django deployment. For each issue, we'll look at the technologies and techniques to solve it. We'll focus on AWS as a hosting platform, but the techniques at play will work on any major cloud provider. This talk will cover the following:
* Application hosting
* Resilience to server failures
* Automating deployment
* Secrets management
* File storage
* Error monitoring
* Server maintenance
* (and more!)

General
Grand Ballroom II-III
16:45
16:45
25min
AfroPython: Using Django to change black people life in Brazil
Felipe de Morais

Hi from Brazil! 👋🏾🇧🇷
Join us for a unique journey from Brazil to the world of Python and Django. AfroPython, initially inspired by community events, has transformed into a social good company. In this talk, we'll explore the evolution of AfroPython and the impact of Python and Django on our journey. We'll discuss how these technologies have enabled us to achieve our mission and create social change. Come and be inspired by our story!

General
Junior Ballroom
16:45
25min
Working with Neo4j with Djando neomodel library
Dara Silvera

In this talk, we will explore how to work with Neo4j using Python to build scalable and efficient web applications. When we think of databases, the first thing that comes to mind are relational databases like MySQL or PostgreSQL, but there are other types of databases, such as non-relational databases, which are very useful and efficient for various problems. An example of one of these non-relational databases is a graph database, such as Neo4j

We will learn how graph databases work, the syntax of Neo4j, how to transform a relational model into a non-relational one with simple steps, and examples of queries using Cypher. We will also take a look at use case scenario using the Django neomodel library. a basic API using Django with the interface neomodel to connect with Neo4j By the end of the talk, attendees will have a basic understanding of how to leverage these technologies to build fast and scalable web applications.

General
Grand Ballroom II-III
17:15
17:15
25min
✨ Modern editing experience for your Django models with Wagtail 🐦
Sage Abdullah

Learn how to benefit from powerful content-management features (such as: saving revisions, managing live/draft versions, moderating content, and more) for your Django models by integrating Wagtail CMS into your project.

General
Grand Ballroom II-III
17:45
17:45
25min
The evolution of a Django Website into a radio automation back-end
Ernesto Rico Schmidt

What started as a Website to show the schedule of a free radio, has resurfaced as the back-end of a radio automation software suite that provides the schedule through a REST API.

General
Online talks
09:30
09:30
15min
Opening remarks
Junior Ballroom
09:45
09:45
45min
Keynote 2
Junior Ballroom
10:30
10:30
10min
Sponsored talk
Junior Ballroom
10:40
10:40
30min
Break
Junior Ballroom
10:40
25min
Mixing reliability with Celery for delicious async tasks
Flávio Juvenal

As the most popular and mature solution for asynchronous task queues in Python’s ecosystem, Celery is an essential tool for Django projects. But running Celery tasks with high reliability is a challenge. The settings are tricky, tasks can be lost in multiple ways, task code has opaque limitations, proper monitoring isn’t trivial, and more. In this talk, we’ll share what we learned to be necessary for running Celery reliably after years of running it in production.

General
Online talks
11:10
11:10
45min
Building high-performance, type-safe GraphQL APIs with Strawberry and Django
Thiago Bellini Ribeiro

GraphQL has gained popularity for its ability to offer more flexibility and performance over traditional REST APIs. Strawberry is a new and fast-growing GraphQL library for Python, inspired by dataclasses functionality, that offers a modern and intuitive API for building GraphQL APIs using type hints.

In this talk, we will explore the basics of building a GraphQL API with Strawberry and how it can be integrated with Django in a performant and type-safe way, by generating its types and resolvers directly from Django models. We will also compare and contrast the benefits and drawbacks of GraphQL versus REST APIs, including how GraphQL can help improve frontend development workflows.

Attendees will come away with an understanding of how Strawberry can help simplify the process of building and maintaining GraphQL APIs, and how to use its powerful features to optimize for performance, safety, and flexibility, while also covering its drawbacks and how to avoid some common issues.

General
Grand Ballroom II-III
11:10
45min
Postgres Performance: From Slow to Pro
Elizabeth Garrett Christensen

At some point, every application is limited by the database. You don’t have to be a Postgres expert to get started with a few key performance improvements. This gentle introduction is meant for folks who’ve never ventured into their database before, or those who have been turning knobs blindly. I’ll present how Postgres uses memory. Then, I’ll connect that to how you can monitor, tune, and optimize queries. You’ll be ready to take on the challenge as your application grows.

General
Junior Ballroom
12:00
12:00
25min
Empathetic testing: Developing with compassion and humility.
Marc Gibbons

Have you ever encountered a codebase where modifying code seemed impossible due to the constraints of the test suite? Are the tests that you write today inadvertently restricting future improvements? In this talk, we will uncover how placing empathy at the forefront of test suite development can empower rather than hinder future developers, including your future self.

General
Grand Ballroom II-III
12:00
25min
Swiss Army Django: Small Footprint ETL
Noah Kantrowitz

A case study of a single-application ETL system to scrape and enrich complex nested data and then expose it via GraphQL and Discord. It will dive into how to use these various async-based libraries together in a small footprint app.

General
Junior Ballroom
12:30
12:30
50min
Lightning Talks
Junior Ballroom
13:20
13:20
45min
Lunch
Junior Ballroom
13:20
45min
Decoding DDD: A Three-Tiered Approach to Django Projects
Pavel Sviridov

Are you grappling with a project morphing into a 'Big Ball of Mud'? Are you conversant with Domain-Driven Design (DDD) but unsure about its application to Django projects? This talk will navigate you through three levels of implementing DDD in Django projects right from the ground up. Expect to walk away with the knowledge of transforming your Django project by employing DDD techniques at various levels based on your project's needs and constraints.

General
Online talks
14:05
14:05
45min
Django Unchained: Powering Energy Storage Beyond Excel
Calvin Hendryx-Parker

Companies with vast data and complex processes must streamline their operations to ensure precision, scalability, and sustainability. In this talk about transitioning from Excel to Django, attendees will discover Django’s superpowers that enabled a national installer of battery energy storage solutions to optimize energy storage configurations, enhance accuracy, ensure reliability and improve quality assurance. Attendees will learn best practices and gain valuable insights for streamlining data-intensive processes and shaping a greener future.

General
Junior Ballroom
14:05
45min
Introduction to GitHub Actions: Understanding Key Terms and Building Your First GitHub Action
PAUL GILZOW

Learn about GitHub Actions, a CI/CD platform for automating build, test, and deployment pipelines. This presentation provides an overview of key terms and concepts, as well as a step-by-step guide to creating reusable components known as "Actions". Perfect for developers new to automation or those looking to transition to GitHub Actions.

General
Grand Ballroom II-III
14:55
14:55
25min
Nothing for Us, Without Us; Breaking Unconscious Bias in Building Products
Victor Ogunjobi

Are we really building products that serve everyone, or just a selected few?

As developers, we have responsibility to ensure that our products serve everyone, regardless of their background or identity. However, our unconscious bias often creeps into even the most well-intentioned projects and impacts the way we develop products or engage with communities, leading to unintentional exclusions.

When I first designed a Speech-Text-Analytic app, my focus was to simplify business communication with transcribed audio and valuable insights. However, feedback from the community highlighted it had limitations for diverse users, including those with disabilities who faced inaccurate captions for audio content.

This wake-up call prompted me to improve accessibility and user-friendliness for marginalized groups. And for the same reason, I'm making proactive steps to cater for the marginalized by integrating a feature that recognizes Nigerian native languages.

As tech creators, we have the power to create change, but good intentions alone are not enough. This talk will offer strategies to address unconscious bias in product and community building, while avoiding common pitfalls. Attendees will learn to understand diverse needs & experiences for more inclusive environments.

General
Junior Ballroom
14:55
25min
Strategies for Handling Conflicts and Rollbacks in Django database migrations
Abigail Afi Gbadago

Django is a popular web framework that comes with a powerful database migration system. However, managing database schema changes can be a challenging task, especially in complex projects with multiple developers and frequent releases. Conflicts can arise when multiple developers modify the same models or when migration files are applied in the wrong order. Rollbacks are also necessary when migrations fail or need to be reverted.

We will explore different strategies for handling conflicts and rollbacks in Django database migrations, discuss how to prevent conflicts by using tools such as database locking, how to resolve conflicts manually and how to use migration squashing to reduce the number of migration files. Additionally, we will explain how to handle rollbacks by using version control systems and backups.

By attending this talk, attendees will gain a deeper understanding of the challenges involved in managing database migrations in Django and learn practical strategies for handling conflicts and rollbacks. They will be able to apply these strategies in their own projects to improve their development workflow and ensure data integrity.

General
Grand Ballroom II-III
15:25
15:25
30min
Break
Junior Ballroom
15:25
25min
There's More to Open Source than Code
Ramón Huidobro

Interested in trying out OSS contributing, and can't find a project you're comfortable in? Maybe you found an issue but the scope is too big to start?

There are other ways to get into OSS! In this chat, we'll cover non-code contributions, the different types there is, and how to get started in a way that works for you.

General
Online talks
15:55
15:55
25min
All about djangoproject.com
Paolo Melchiorre

The djangoproject.com website is the showcase of the Django project and is the result of contributions from many people. In this talk, we'll update you on its development and learn how to contribute to it.

General
Junior Ballroom
15:55
25min
BDD To The Bone: Acceptance Testing with Behave and Selenium
Pat Viafore

Have you ever felt that unit tests just weren’t enough? It just feels like there’s always something wrong when your customers start to use your application. All your unit tests pass, so where does the problem stem from? It turns out we need to start thinking like users, not developers .

In this talk, you'll get a look at the the behave library to explore executable specifications and behavior driven development. You'll learn effective practices around specification testing and how to integrate that into your workflow. You'll also learn how to drive automated testing of a Django App through the web browser, via the selenium library.

General
Grand Ballroom II-III
16:25
16:25
45min
Managing Content with Django
Michael Trythall

Explore options for building Django-based content-managed websites that editors will love. Learn about the features and patterns necessary for content editing and how they are supported in Django-land. Gain the knowledge to select the best Django-driven CMS for their next project.

General
Grand Ballroom II-III
16:25
45min
The programmer's imagination
Daniele Procida

As creators of software, we're repeatedly told that we're not merely imagining the future of the world, but bringing it into being. Let's suppose that's true. What, exactly, are we imagining?

General
Junior Ballroom
17:15
17:15
25min
An approach to lightweight tenancy management using Django Rest Framework
Eliana Rosselli

Multitenancy is a broad spectrum, ranging from using separate databases for each tenant to using a shared database and schema. This talk will present a “lightweight” multitenancy use case that we’ve run into across different projects in various contexts. We will present a simple custom solution using Django Rest Framework and explain why it worked for our needs. We will also go over which cases could use a similar approach (and which could not), as well as a different approach using an existing library.

General
Junior Ballroom
17:15
25min
What Django Deployment is Really About
James Walters

Beginners often stumble when it’s finally time to get their Django app online. Instead of another deployment recipe, this talk seeks to explain the fundamental concepts of deploying a Django app and equip developers to think through the process for themselves when they’re ready to make the transition from their code editor to the web.

General
Grand Ballroom II-III
09:30
09:30
15min
Opening Remarks
Junior Ballroom
09:45
09:45
45min
Keynote 3
Junior Ballroom
10:30
10:30
10min
Sponsored Talk
Junior Ballroom
10:40
10:40
30min
Break
Junior Ballroom
10:40
25min
Django migrations, friend or foe? Optimize your Django migrations for faster testing
Denny Biasiolli

Django migrations are a great tool, but after years of changes in a project they can become very numerous, slowing down tests.
Is it possible to optimize them?

Deep Dive
Online talks
11:10
11:10
45min
Natalia's Talk
Junior Ballroom
12:00
12:00
25min
Django's Data Science Makeover: Integrating D3.js and Bokeh for Data Visualization
Drishti Jain

Data visualization is an essential component of data science, and web-based data visualization is becoming increasingly popular. In this talk, we will explore how to integrate Django, a popular Python web framework, with two of the most popular data visualization libraries, D3.js and Bokeh, to create interactive and dynamic visualizations for your data science projects.

Deep Dive
Junior Ballroom
12:30
12:30
50min
Lightning Talks
Junior Ballroom
13:20
13:20
45min
Lunch
Junior Ballroom
13:20
45min
Best Practices for Making a Wagtail Site as Accessible as Possible
Scott Cranfill

Wagtail is one of the most popular content management systems in the Django world, and the Wagtail team is committed to making it as easy as possible to create accessible websites. It still requires intention and effort on the part of a developer creating a Wagtail website, though. Learn the tools and techniques you need to set your editors up for success.

Deep Dive
Online talks
14:05
14:05
45min
How to Schedule Tasks with Celery and Django
Tobias McNulty

By an order of magnitude, Celery remains one of the most popular Django-adjacent packages for Python. In this talk, I'll explore what continues to make Celery a go-to solution for background and scheduled jobs with Django, how to integrate Celery with a Django project, and some common patterns to use (and avoid!) when writing tasks with Celery.

Deep Dive
Junior Ballroom
14:55
14:55
25min
One database table, one model, many behaviours: Proxy model
Ron Maravanyika

Proxy models are part of Django’s inheritance styles, but how to they work, how are they different from other inheritance styles that Django provide, practically where can they be applied in real world scenarios. Using simple code snippets and practical examples lets explore proxy models.

Deep Dive
Junior Ballroom
15:25
15:25
30min
Break
Junior Ballroom
15:25
25min
Back to the Future of Hypermedia in Django
Mario Munoz

Django is leading the charge when it comes to hypermedia adoption in the Python space. Let's take a look at patterns, tools, and projects that leverage htmx, examining where we are and where we are going in this ecosystem.

General
Online talks
16:00
16:00
45min
Django’s accessibility track record
Thibaud Colas

Ever wonder how accessible Django is? Sites built with Django, the admin, the docs. Let’s find out! We will leverage the HTTP Archive’s websites technology dataset to quantitatively review common accessibility issues on Django projects – and then we’ll dive into Django’s implementation choices to understand the results.

Deep Dive
Junior Ballroom
16:50
16:50
45min
Panel discussion
Junior Ballroom
17:35
17:35
25min
Closing remarks
Junior Ballroom
No sessions on Thursday, Oct. 19, 2023.
No sessions on Friday, Oct. 20, 2023.