Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions djangocon-us-2025/category.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"title": "DjangoCon US 2025"
}
26 changes: 26 additions & 0 deletions djangocon-us-2025/videos/a-i-modest-proposal.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "In 1729, Jonathan Swift presented an elegant and well thought-out solution to the problem of homelessness and poverty plaguing Ireland. He argued that his solution would result in a much more productive and fulfilling society. While not many could digest the meat of his proposal, it was still effective in exposing a widening gap of social inequality and abuse. \n\nIs it possible that Swift's proposal can be applied within our technosphere? Did he provide us with a recipe for success, or at least little nuggets of wisdom to chew on? \n\nMany attending this conference may be keenly aware of the dichotomy between open source and big tech. There is a relationship that always seems to be at risk of imploding. Should we be encouraging new (and existing) engineers to participate in open source, in spite of this tenuous relationship? If this topic whets your appetite, you'll definitely want to come to see what's cooking.",
"language": "eng",
"recorded": "2025-09-10",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/a-i-modest-proposal/"
}
],
"speakers": [
"Mario Munoz"
],
"thumbnail_url": "https://i.ytimg.com/vi/Ws9lNrrK8dw/maxresdefault.jpg",
"title": "A(i) Modest Proposal",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=Ws9lNrrK8dw"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "Deployment has been a sticking point for many Django developers as long as the framework has existed. With the 1.0 release of `django-simple-deploy`, that should no longer be the case. This release signifies a stable API, and most importantly a stable platform for building plugins.\n\nIf you haven't seen `django-simple-deploy` in action, it lets you deploy a project in three steps. Assuming you have the target platform's CLI installed, here's what that looks like:\n\n```\n$ pip install django-simple-deploy[<platform_name>]\n# Add django_simple_deploy to INSTALLED_APPS.\n$ python manage.py deploy --automate-all\n```\n\nThis currently works for Platform.sh, Fly.io, and Heroku. If you want a bit more control, you can separate out the configuration and deployment steps.\n\nThe plugin ecosystem\n---\n\nThe core `django-simple-deploy` library only does a little work. It inspects your system and your project, and then hands off to an external plugin (such as `dsd-platformsh`) to take care of platform-specific configuration and deployment work. It should be possible to write a plugin for just about any hosting platform that can be configured to support Django.\n\nEach PAAS provider needs its own plugin. However, a single plugin, `dsd-vps`, can be used to deploy to *any* VPS host: Digital Ocean, Linode, Hetzner, and many more.\n\nThis talk will discuss the following:\n\n- Why does the Django community need a deployment library?\n- What kinds of deployments can `django-simple-deploy` handle today?\n- What is the full range of use cases and benefits of this tool?\n- How can you contribute to the plugin ecosystem?\n\nJust about everyone in the community is affected by Django's deployment story. If you'd like Django to have a much simpler initial deployment story, this talk is for you.",
"language": "eng",
"recorded": "2025-09-10",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/automating-initial-deployments-with-django-simple-deploy/"
}
],
"speakers": [
"Eric Matthes"
],
"thumbnail_url": "https://i.ytimg.com/vi/GpHxaxnMAi4/maxresdefault.jpg",
"title": "Automating initial deployments with django-simple-deploy",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=GpHxaxnMAi4"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "Traditional search in Django apps, typically powered by **queryset filters or keyword search, often fails to capture user intent**. It matches exact words but misses meaning. Vector search solves this by representing the \"meaning\" of data (text, images, audio, video, etc) as high-dimensional vectors generated with ML models, enabling more relevant, personalized, and faster results. \n\nIn this talk, you'll learn:\n- When traditional search with Postgres or Elasticsearch falls short\n- What vectors are, how vector search works, and when vector databases help\n- How to **integrate vector databases into your Django models** using django-semantic-search\n- A **demo of \"More products like this\" feature with vectors in a Django e-commerce app**\n- Brief understanding of **use cases beyond text search**: multi-modal search, recommendations, content discovery, clustering, anomaly detection, and retrieval-augmented generation (RAG)\n- The **trade-offs and limitations of vector search** \u2014 when it helps and when it doesn't\n\n### Who Should Attend\nThis session is for **intermediate Django developers** familiar with models, views, and basic querying. Vector search is becoming a high demand skill so everyone is welcome. But if you've built search features with filters or keyword search and are curious about taking them to the next level with vectors, this talk is definitely for you! \n\n### Prerequisites\n- Familiarity with Django ORM and basic database concepts\n- Exposure to search implementation using Postgres or Elasticsearch is helpful but not required\n- **Basic understanding of machine learning is helpful but not required**",
"language": "eng",
"recorded": "2025-09-09",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/beyond-filters-modern-search-and-more-with-vectors-in-django/"
}
],
"speakers": [
"Kumar Shivendu"
],
"thumbnail_url": "https://i.ytimg.com/vi/GvEkCBvvA_g/maxresdefault.jpg",
"title": "Beyond Filters: Modern Search (and more) with Vectors in Django",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=GvEkCBvvA_g"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "What if your Django app could defend itself and get smarter over time? In this talk, we'll dive into AIWAF, an open-source, Django-native firewall that learns from real web traffic to catch suspicious behavior like 404 floods, probing attacks, and UUID tampering. You'll learn how easy it is to plug AIWAF into your project and build a self-adapting defense system without needing a full security team.",
"language": "eng",
"recorded": "2025-09-09",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/beyond-rate-limiting-building-an-active-learning-defense-system-in-django/"
}
],
"speakers": [
"Aayush Gauba"
],
"thumbnail_url": "https://i.ytimg.com/vi/PUPSRMUlvdw/maxresdefault.jpg",
"title": "Beyond Rate Limiting: Building an Active Learning Defense System in Django",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=PUPSRMUlvdw"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "Our team at Energy Solutions spent a year building a robust data ingestion and query pipeline using OpenSearch to provide centralized data to a distributed suite of applications. Along the way, we learned to question and rethink a lot of our relational database assumptions and take fuzzy search customization and accuracy to the next level. Meanwhile, we implemented Pydantic wrappers around JSON responses so we could continue to handle responses like native Python objects (along with other benefits we\u2019ll discuss). We addressed long-standing challenges, such as:\n\n- Improving the performance of the per-row create/update/delete paradigm (in one case, leading to a ~9x faster data ingest + load!)\n- Putting OpenSearch \u201caliases\u201d to work to help track current vs archival data\n- Improving search relevancy\n- PII exposure reduction\n\nIn this presentation, we\u2019ll walk through the decisions that led us to moving to an OpenSearch-based solution that works within a traditional Django framework, how we tackled advanced topics like token analysis, and how we put OpenSearch aliases to work. We\u2019ll also cover some of the cost-benefit equations, summarize our next phase of work in the project, and include real-time demonstrations of some concepts.\n\n### Background on Energy Efficiency\n\nUtilities, which are often regulated, are responsible for generating a consistent supply of energy for their consumers at a stable price. Efficiency incentive programs that manage demand help insulate utilities from the costs associated with purchasing raw materials (coal, gas, etc.) and help reduce the need to build new power plants that are expensive to build, staff, insure, and supply with consumable, non-renewable resources. \n\nUtilities are also usually required by law to spend part of the budget they collect on customer bills on something to reduce the demand for energy in their territory. For instance, a utility might offer a $1,500 rebate (AKA incentive) for the sale of an industrial heat pump that is far more efficient than other industrial heat pumps, via an energy efficiency (EE) program. By incentivizing high efficiency equipment, utilities help move the market towards ever more efficient versions of equipment, thus locking in energy savings even after the EE programs end. In this way, we can help utilities and their customers save energy and move the needle away from climate change.\n\n#### Cosmos Project Background\nWhat Cosmos is, a service for our other projects to access larger datasets such as locations and equipment, and why we needed a new service.\n\n#### Motivations for moving from Postgres\n- Elimininate redundancy\n- Reduce PII storage\n- Improve load speed\n- Faster, more accurate fuzzy search\n\n#### Why OpenSearch?\n- Super-fast, built on Lucene\n- Open source but supported by AWS\n- Features like aggregation, tokenization well-documented\n- Ranked results (hits sorted by _score)\n- Intuitive and flexible searching for addresses, equipment, etc\n- Performance trade-off between ingesting data and searching data (optimize query performance at the expense of slower indexing)\n\n#### Helper Tools\n- opensearch-py \n- Kibana\n\n#### Cost Breakdown\n- AWS cost vs our own standalone\n\n#### API access\n- Not presenting raw output - transformed for readability, consistency \n- Data passed through Pydantic models \n- Strict access controls for PII \n- \u201cSearch Helper\u201d for for non-tech staff\n\n#### Load and Query Demos\n- Comparison of a complex PG query vs equivalent OS query\n\n#### Django Integration\n- Pydantic models rather than Django models - consistency with old code \n- Validation, dot notation",
"language": "eng",
"recorded": "2025-09-09",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/beyond-the-orm-from-postgres-to-opensearch/"
}
],
"speakers": [
"Andrew Mshar"
],
"thumbnail_url": "https://i.ytimg.com/vi/_iB7ET5rt7s/maxresdefault.jpg",
"title": "Beyond the ORM: from Postgres to OpenSearch",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=_iB7ET5rt7s"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "You want to test against something as close to production as possible - but you don\u2019t want to expose client data or company secrets during your development process. Let\u2019s talk through the world of development environments for your Postgres database. From local options to using the cloud. We\u2019ll also cover what\u2019s available in terms of replication, copies, anonymizing data, and automation. Believe it or not, there\u2019s some Postgres tricks that can make this easier for your team. \n\nThis talk will be 75% talk and 25% audience participation - Let's talk about development environments in the real world, what is working for folks, and how to improve.",
"language": "eng",
"recorded": "2025-09-09",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/big-bad-world-of-postgres-dev-environments/"
}
],
"speakers": [
"Elizabeth Garrett Christensen"
],
"thumbnail_url": "https://i.ytimg.com/vi/xeYAfPZUw18/maxresdefault.jpg",
"title": "Big Bad World of Postgres Dev Environments",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=xeYAfPZUw18"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "When a website redesign is on the horizon, frustrations with the existing content management system (CMS) are often a major driver. Yet in many cases, the root problem isn't the CMS itself; it's how it was implemented. \n\nWagtail CMS offers powerful tools for building rich, flexible content-driven websites, but without careful planning and thoughtful design, even the best technology can lead to editor frustration.\n\nIn this talk, we'll explore strategies and best practices for modeling content and design systems in Wagtail CMS that prioritize the needs of editors and content teams. You'll learn how to structure StreamFields, Pages, and Design Systems to create intuitive, flexible, and scalable editing experiences. We'll cover tips for creating governance and patterns that evolve with a site over time, so your Wagtail builds not only launch successfully but also thrive for years to come.\n\nWhether you're a Django developer new to Wagtail or an experienced Wagtail user looking to level up your implementation skills, this session will leave you with practical techniques for building CMS experiences that editors love and that support Wagtail and Django\u2019s continued success.",
"language": "eng",
"recorded": "2025-09-08",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/building-a-wagtail-cms-experience-that-editors-love/"
}
],
"speakers": [
"Michael Trythall"
],
"thumbnail_url": "https://i.ytimg.com/vi/47RsWpnB_JI/maxresdefault.jpg",
"title": "Building a Wagtail CMS Experience that Editors Love",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=47RsWpnB_JI"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "Rather than focusing on a single theme this talk touches on a range of real-world engineering problems and patterns, all centred around the challenges that arise in a mature codebase. Topics include:\n\n**1. Cross-Framework Harmony with Custom Events and `json_script`**\n\nStill stuck halfway through migrating to your new JavaScript framework 5 years later? (Just me?) I'll demonstrate a pattern which uses custom DOM events to keep things loosely coupled and how `json_script` can transmit structured data when you can't go all in on APIs.\n\n**2. Customising DRF for more consistent APIs and Observability**\n\nThe Django REST Framework is powerful, but building standard patterns around it makes it even better. I\u2019ll show how custom serializer fields and base viewsets can make data access consistent and enable things like automatic event tracking and monitoring endpoints.\n\n**3. Taming Long-Running Queries with Postgres Statement Timeouts**\n\nLong-running queries can kill user experience. By setting a `statement_timeout` in Postgres and pairing it with custom middleware and a database backend, we turn slow queries into graceful 503 responses that we can handle in the front-end.\n\n**4. Fine-Grained Permissions with Decorators and Feature Flags**\n\nWe'll look at how we can define flexible access rules per view or endpoint and how feature flags can provide gated access to beta features for specific user segments and internal use.\n\n**5. Better Logs with Middleware and Request Tracing**\n\nWe'll explore middleware patterns for injecting a shared `request_id` into logs, techniques for surfacing Django view names in nginx logs, and how to connect database monitoring to specific HTTP requests for a full trace through the stack.\n\nWhether you\u2019re wrangling a large project or trying to avoid turning your fresh greenfield into a mess, these tips aim to make your Django stack more predictable, observable, and maintainable.",
"language": "eng",
"recorded": "2025-09-09",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/building-maintainable-django-projects-the-difficult-teenage-years/"
}
],
"speakers": [
"Alex Henman"
],
"thumbnail_url": "https://i.ytimg.com/vi/J30ltoatmYo/maxresdefault.jpg",
"title": "Building maintainable Django projects: the difficult teenage years",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=J30ltoatmYo"
}
]
}
26 changes: 26 additions & 0 deletions djangocon-us-2025/videos/closing-remarks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "",
"language": "eng",
"recorded": "2025-09-10",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/closing-remarks/"
}
],
"speakers": [
"Keanya Phelps"
],
"thumbnail_url": "https://i.ytimg.com/vi/z0aZtG47GTA/maxresdefault.jpg",
"title": "Closing Remarks",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=z0aZtG47GTA"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"description": "DEFNA President Peter Grandstaff will give an update on DEFNA's activities in the community, how you can help, and what the foundation is looking forward to in 2026.",
"language": "eng",
"recorded": "2025-09-08",
"related_urls": [
{
"label": "Conference Website",
"url": "https://2025.djangocon.us"
},
{
"label": "Talk Webpage",
"url": "https://2025.djangocon.us/talks/community-update-defna/"
}
],
"speakers": [
"Peter Grandstaff"
],
"thumbnail_url": "https://i.ytimg.com/vi/MSH_hU6qG6I/maxresdefault.jpg",
"title": "Community Update: Django Events Foundation North America",
"videos": [
{
"type": "youtube",
"url": "https://www.youtube.com/watch?v=MSH_hU6qG6I"
}
]
}
Loading