DjangoCon US 2024 - Short Summary
I apologize in advance for (1) the brevity, and (2) that not every talk is listed here. I didn't get a chance to watch them all yet. I do not mean any disrespect to any speaker who spoke, but is not listed here.
Hopefully this can serve as a taste of the conference. I had a great time at DjangoCon US 2024, and I hope to see you next year!
Day 1
Learning, Teaching
Sheena O'Connell - Power to the People who Teach the People (Sheena's slides)
- "Make It Stick" by Peter C. Brown, Henry I. Roediger III, and Mark A. McDaniel.
- Mastery-based Learning
- Self-efficacy
SPA vs Progressive Enhancement
Chris May - Choosing Wisely: SPA vs. HTMX for Your Next Web Project
- "Progressive enhancement" means your site still works without JavaScript.
- The longer someone is on a page, the more likely a SPA would be useful. - 20+ operations on the same subset of data? - UI for chat or conversations?
- Katie Sylor-Miller's "Component Islands" explained in "Islands Architecture" by Jason Miller.
- The browser can handle a lot of things without JavaScript.
- Streamed HTML components
- Article series from Alex Russell on JavaScript excess.
- Packages: django-unicorn, htmx, alpinejs, django-template-partials, django-components, datastar, unpoly
Error Culture
- Reactive, firefighting Culture
- Provide useful and relevant context along with your alerts: actionable, important items sent to the correct people.
Lightning Talks
- Calvin Hendry-Parker: scaf
- Paul Everitt: PEP750
- Tim Allen: pyromania
- Jay Miller: learn about Python
- Santos: bandit, CodeQL
- Sangeeta Jadoonanan: Django Stickers, Django Brew
- Megan Voss: Carpalx, Tarmak (transitional colemak layout)
- Norma Miller: White Coat Captioning
Django Forms
Josh Thomas - An Opinionated Guide to Modern Django Forms
- Forms
as_field_group
- django-template-partials and django-cotton
SQL Queries
Chris Adams - A Related Matter: Optimizing your webapp by using django-debug-toolbar, select_related(), and prefetch_related()
- django-debug-toolbar
select_related()
for foreign keysprefetch_related()
for many-to-many relationships and reverse foreign keys- Make sure to inspect the 95th and 99th percentile queries on sites with high traffic because highly active users may be encountering problems that your other users don't feel.
Passkeys
Ryan Hiebert - Passkeys: Your password-free future
- Passkeys are in development for django-allauth
- Passkeys are inherently multi-factor (you own the device, you have the fingerprint/retina)
- webauthn.guide, webauthn.io, passkeys.dev, Passkeys: A Shattered Dream
Running Django in Production
Vince Salvino - One Thousand and One Django Sites
- Error detection might auto-trigger a self-healing patch or rollback
- MaxMind for fraud detection
- codered.cloud for deploying Django and Wagtail apps
Day 2
Self-Improvement
Mario Munoz - How To Be A Developer and Other Lies We Tell Ourselves
- The way to be a better developer is to be a better human.
htmx + Alpine.js
Karen Tracey - Django + Alpine.js + htmx Ups & Downs
- htmx for interacting with the server
- Alpine.js for interacting with the user
- These tools increase the shared knowledge between the frontend and backend
- django-formset, django-template-partials, django-components, and django-cotton
Maps
Paolo Melchiorre - Maps with Django
- SQLite uses SpatiaLite
- PostgreSQL uses PostGIS
- Django uses GeoDjango
Lightning Talks
- Richard Terry: nanodjango
- Adam Fast: what it takes to bring DjangoCon to your city
- Jib Adegunloye: Brute forcing a new MongoDB integration for Django
- Lilian: Djangonaut space mentorship program
- Reddy Tintaya: TDD
- Lacey Henschel: Django Commons supporting community package maintenance
- Daniele Procida: Twelve rules for job applications and interviews
- Rachell Calhoun: Django Girls
- Sheena O'Connell: DjangoCon Africa 2023
End-to-End Testing
Avindra Fernando - Lessons from E2E Testing Web Applications
- Cypress and Playwright
- Testing Playground for selecting elements in your tests
Atomic Transactions
Eva Nanyonga - Only reliable Data: Protecting Database Integrity
Migrations
Tim Bell - Deploying Django migrations at Kraken scale (Tim's slides)
- Locks
- Break up migrations into smaller chunks
- "Async Migrations" from Yakko Majuri at Posthog
Large Scale Project Considerations
Benjamin "Zags" Zagorsky - Fighting Homelessness with Django (Zags' slides)
- Used Vue with one Vue app per Django template that needed it
- Sticky sessions on load balancer
Day 3
Django Fellows
Natalia Bidart - The Fellowship of the Pony
- Who is a Django Fellow and what do they do?
Release Notes
Sarah Boyce - Hidden gems of Django 5.x
- Not all changes are listed in the release notes
Django History
Frank Wiles - A Brief History of Django
- How Django came to be (starting out known as "The CMS")
Lightning Talks
- Natalia Bidart: https://inclusivenaming.org/
- Brent O'Connor: https://github.com/epicserve/django-base-site
- Levi Mann: Debugging SQL
- Josh O'Brien: Tips for improving your CV
- Sam Eure: Custom querysets
- Marcelo Elizeche Lando: https://airelib.re/
- Abigail (Afi) G.: Updates from the Ghanaian community
- Jon Gould: Light work now makes your next job search easier
- Alvaro Justen (Turicas): Storing data, vcard info in QR codes
- Thibaud Colas: DSF updates
WebRTC
Ken Whitesell - WebRTC with Django, Channels, HTMX, and coturn
- STUN = "What's my IP?" for WebRTC; like a ping
- TURN = distribution hub for WebRTC data
- SDP = data defining the content of the connection
- https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation
- chrome://webrtc-internals
PostgreSQL
Elizabeth Christensen - A Guided Tour Through Postgres Internals
- Tons of tips on how to use PostgreSQL and the psql commmand
Django User Model
Will Vincent - Django User Model: Past, Present, and Future
- Did you know Django has a wiki?
- Django's current auth provides friction for new users trying to learn Django
- Suggesting a profile model, ship with a login template, add Profile model to docs
- Simon Willison also suggested maybe a profile JSONField on the User model
Bootstrapping
Carlton Gibson - API Maybe: Bootstrapping a Web Application circa 2024
- Django is the perfect framework when money is tight