{"acronym":"djangocon2018","aspect_ratio":"16:9","updated_at":"2026-04-08T21:00:05.119+02:00","title":"DjangoCon Europe 2018","schedule_url":"","slug":"conferences/djangocon2018","event_last_released_at":"2018-05-25T02:00:00.000+02:00","link":null,"description":null,"webgen_location":"conferences/djangocon2018","logo_url":"https://static.media.ccc.de/media/conferences/djangocon2018/logo.png","images_url":"https://static.media.ccc.de/media/conferences/djangocon2018","recordings_url":"https://cdn.media.ccc.de/events/djangocon2018","url":"https://api.media.ccc.de/public/conferences/djangocon2018","events":[{"guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","title":"Keynote: The naïve programmer","subtitle":null,"slug":"hd-132-keynote-the-nave-programmer","link":"https://c3voc.de","description":null,"original_language":"eng","persons":["Daniele Procida"],"tags":["djangocon2018","132"],"view_count":125,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2024-04-01T16:00:03.483+02:00","length":3022,"duration":3022,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/132-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/132-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c4f46227-9af7-5180-bba8-1c23e005f12e-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c4f46227-9af7-5180-bba8-1c23e005f12e-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-132-keynote-the-nave-programmer","url":"https://api.media.ccc.de/public/events/c4f46227-9af7-5180-bba8-1c23e005f12e","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":5},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":8},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":6},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":6},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":8},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":6},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":5},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":6},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":9},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":6},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":6},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":7},{"event_id":5475,"event_guid":"fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","weight":5},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":10},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":8}]},{"guid":"4b9c312b-de9f-5934-974c-e09f70998899","title":"Guten Morgen","subtitle":null,"slug":"hd-135-guten-morgen","link":"https://c3voc.de","description":"Welcome to DjangoCon Europe 2018!\n\nWelcome to DjangoCon Europe 2018!","original_language":"eng","persons":["Raphael Michel","Tobias Kunze","DjangoCon Europe Crew"],"tags":["djangocon2018","135"],"view_count":134,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2025-05-30T16:45:07.489+02:00","length":1173,"duration":1173,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/135-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/135-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/4b9c312b-de9f-5934-974c-e09f70998899-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/4b9c312b-de9f-5934-974c-e09f70998899-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-135-guten-morgen","url":"https://api.media.ccc.de/public/events/4b9c312b-de9f-5934-974c-e09f70998899","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":19},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":7},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":3},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":9},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":10},{"event_id":5456,"event_guid":"ec35cf84-dd5b-52cf-8954-cb2082cd8c13","weight":9},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":5},{"event_id":5468,"event_guid":"b8760441-85be-5e9b-9063-cb2e913d1f51","weight":9}]},{"guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","title":"An ODe to OAuth","subtitle":null,"slug":"hd-68-an-ode-to-oauth","link":"https://c3voc.de","description":"We all know that remembering passwords is hard, so why not leave it to someone else? In this talk, I would like to introduce how we improved our social authentication system in our Django applications at Prezi with the aid of the Python Social Auth package.\n\nAfter a long time coming, we at Prezi introduced social authentication using Google mid last year. This seemingly trivial problem soon became a nightmare after we realized that our custom built session management systems completely misalign with the standards of the industry and open source. However, our team did not give up the dream of having a fully scalable and easy-to-maintain component that we can be proud of.\n\nIn this talk, I would like to present you the war story of how we revamped the social authentication systems at Prezi (whilst becoming open source contributors) using the Python Social Auth package, enabling a significant amount of users to access our services on all platforms.","original_language":"eng","persons":["Akos Hochrein"],"tags":["djangocon2018","68"],"view_count":103,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-10-26T05:30:02.825+01:00","length":1648,"duration":1648,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/68-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/68-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/7d45b2f8-2a05-5e07-becd-4fb89a15b983-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/7d45b2f8-2a05-5e07-becd-4fb89a15b983-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-68-an-ode-to-oauth","url":"https://api.media.ccc.de/public/events/7d45b2f8-2a05-5e07-becd-4fb89a15b983","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5252,"event_guid":"7805cae2-d664-441a-af87-555a2c5633a2","weight":1},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":7},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":3},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":3},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":1},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":3},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":1},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":4},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":4},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":1},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":5},{"event_id":5475,"event_guid":"fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","weight":1},{"event_id":5479,"event_guid":"3dd2e5f3-b549-5f88-a986-f782295b0af3","weight":4},{"event_id":5482,"event_guid":"24c5b7d4-3b73-592f-897e-72acff95d8cf","weight":1},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":4},{"event_id":5506,"event_guid":"l8rsEk_Xh1bV4a02AfxXkQ","weight":1},{"event_id":5509,"event_guid":"Wy6jqnZ_111KAk-Vr3FLXA","weight":1},{"event_id":5530,"event_guid":"qdF7gg_mucGoRsXsKeWS_A","weight":1}]},{"guid":"ec35cf84-dd5b-52cf-8954-cb2082cd8c13","title":"Guten Morgen","subtitle":null,"slug":"hd-136-guten-morgen","link":"https://c3voc.de","description":null,"original_language":"eng","persons":["Raphael Michel","Tobias Kunze","DjangoCon Europe Crew"],"tags":["djangocon2018","136"],"view_count":26,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2025-08-25T02:15:04.351+02:00","length":527,"duration":527,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/136-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/136-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/ec35cf84-dd5b-52cf-8954-cb2082cd8c13-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/ec35cf84-dd5b-52cf-8954-cb2082cd8c13-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-136-guten-morgen","url":"https://api.media.ccc.de/public/events/ec35cf84-dd5b-52cf-8954-cb2082cd8c13","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":9},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":4},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":3},{"event_id":5468,"event_guid":"b8760441-85be-5e9b-9063-cb2e913d1f51","weight":6}]},{"guid":"b8760441-85be-5e9b-9063-cb2e913d1f51","title":"Guten Morgen","subtitle":null,"slug":"hd-137-guten-morgen","link":"https://c3voc.de","description":null,"original_language":"eng","persons":["Raphael Michel","Tobias Kunze","DjangoCon Europe Crew"],"tags":["djangocon2018","137"],"view_count":34,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2026-01-06T00:15:24.349+01:00","length":175,"duration":175,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/137-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/137-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/b8760441-85be-5e9b-9063-cb2e913d1f51-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/b8760441-85be-5e9b-9063-cb2e913d1f51-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-137-guten-morgen","url":"https://api.media.ccc.de/public/events/b8760441-85be-5e9b-9063-cb2e913d1f51","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":9},{"event_id":5456,"event_guid":"ec35cf84-dd5b-52cf-8954-cb2082cd8c13","weight":6},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":3}]},{"guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","title":"Can packaging improve Django deployments?","subtitle":null,"slug":"hd-117-can-packaging-improve-django-deployments-","link":"https://c3voc.de","description":"How can packaging Django projects make deployments easier, faster and more reliable?\n\nDeployments of Django projects can be a challenging task. Beside the Python source code itself you usually have to handle a lot of other stuff:\n\n* Installing Python dependencies\n* Shipping JavaScript code and installing it's dependencies\n* Compiling SCSS to CSS\n* Collecting static files\n* Building documentation\n* Compiling translations\n* …\n\nAnd of course you want a deployment approach that is independent of a specific hosting solution.\n\nAlso you have to think about the scalability of your deployment when the number of servers you operate increases.\n\nThis usually means that `git pull` is not the best way to deal with these tasks.\n\nSo I will discuss different ways to package your Django project like\n\n* Wheels\n* JavaScript packages\n* Operating system packages\n* Containers\n\nSome of these concepts will hopefully help you to make your deployment process easier, faster and more reliable.","original_language":"eng","persons":["Markus Zapke-Gründemann"],"tags":["djangocon2018","117"],"view_count":134,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2025-02-11T23:00:10.595+01:00","length":1763,"duration":1763,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/117-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/117-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/272a6c50-7083-5987-bc28-c0c6cbfc2d8f-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/272a6c50-7083-5987-bc28-c0c6cbfc2d8f-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-117-can-packaging-improve-django-deployments-","url":"https://api.media.ccc.de/public/events/272a6c50-7083-5987-bc28-c0c6cbfc2d8f","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":11},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":11},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":16},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":11},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":11}]},{"guid":"5a5b720d-fc8a-5804-9172-b3571fea972a","title":"Automated spell-checking in Django projects","subtitle":null,"slug":"hd-63-automated-spell-checking-in-django-projects","link":"https://c3voc.de","description":"I'm aiming to show how avoid spelling errors by showing ways to implement automated spell-checking.\n\nNearly all Django applications have two main textual bodies that users come in touch with: First, any text in the application and its translation, second the documentation. Since both are usually written by humans, they will contain spelling errors.\nThis is considered harmful and can from time to time hinder the user trying to understand what to do.\nTherefore, an automated spell-checking tool should be a part of any CI-cyle.\n\nFor spell-checking documentation, I will give a short demonstration on how to use the \"sphinxcontrib-spelling\"-tool written by Doug Hellmann, the problems we had and how we overcame them.\nFor spell-checking text in the application and its translations that are usually found in .po-files, I have implemented a small tool called \"potypo\" (name and development in progress).\nI will present this tool and show challenges and problems on the way to implementing automated spell checking for .po-files.","original_language":"eng","persons":["Jakob Schnell"],"tags":["djangocon2018","63"],"view_count":97,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2026-03-18T12:45:08.227+01:00","length":1923,"duration":1923,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/63-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/63-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/5a5b720d-fc8a-5804-9172-b3571fea972a-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/5a5b720d-fc8a-5804-9172-b3571fea972a-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-63-automated-spell-checking-in-django-projects","url":"https://api.media.ccc.de/public/events/5a5b720d-fc8a-5804-9172-b3571fea972a","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":4},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":4},{"event_id":5441,"event_guid":"17362d9b-7b44-5115-be19-cf9378f90a5a","weight":1},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":1},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":4},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":1},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":4},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":3},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":1},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":4},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":3},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":3},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":1},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":1},{"event_id":5468,"event_guid":"b8760441-85be-5e9b-9063-cb2e913d1f51","weight":1},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":1},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":1}]},{"guid":"5ac8d175-b219-549e-8c0b-415af750a750","title":"Organizing Conferences For Learners: How we did it in Namibia","subtitle":null,"slug":"hd-106-organizing-conferences-for-learners-how-we-did-it-in-namibia","link":"https://c3voc.de","description":"In this talk you will hear about the importance of organizing conferences for school learners, how you can go about organizing one, what you need to do and what you need to avoid as you prepare the conference, how to engage with school teachers as a software developer, what the results of such conferences could bring out in our children and many more.\n\nThe poor quality of the software developers in our community is increasing. On top of other factors, most of our learners are introduced or exposed to computing only in university. This has caused the quality of our software developers to drop. We wanted to change that by introducing programming clubs in high schools and then we decided that why not run a conference for them. That's how this idea came up.","original_language":"eng","persons":["Jessica Upani"],"tags":["djangocon2018","106"],"view_count":25,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2022-01-01T05:45:03.781+01:00","length":1578,"duration":1578,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/106-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/106-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/5ac8d175-b219-549e-8c0b-415af750a750-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/5ac8d175-b219-549e-8c0b-415af750a750-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-106-organizing-conferences-for-learners-how-we-did-it-in-namibia","url":"https://api.media.ccc.de/public/events/5ac8d175-b219-549e-8c0b-415af750a750","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":2},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":9},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":4},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":5}]},{"guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","title":"An Intro to Docker for Djangonauts","subtitle":null,"slug":"hd-14-an-intro-to-docker-for-djangonauts","link":"https://c3voc.de","description":"If you've never used it before, Docker can be a little overwhelming. There is new vocabulary to learn, new commands to memorize, and new files to add to each project. Most resources fall into one of two camps: they teach you the bare bones of Docker but still leave you with too many questions to comfortably try it on your own, or they throw you into the deep end by assuming you're more familiar with Docker than you are.\n\nIn this talk, you will find that middle ground: a talk that doesn't assume you're familiar with Docker and so keeps everything simple, but leaves you with enough information that you can get started as soon as you leave the room. Together, we will step through the parts of a Dockerfile and learn what they do. Then, I'll introduce you to Docker Compose and explain why using it to run multiple containers is helpful. Finally, you will learn to run commands and execute scripts from the command line using Docker, how to enter a container and why you might need to, and what to do before you go home for the day.\n\nThis talk is for Djangonauts who are curious about Docker, need to learn to use it for work or personal projects, or who seek a better understanding of containers in general. Audience members might be beginners to Python/Django or not, but they are definitely beginners to containerizing all the things. \n\nThe audience should be familiar with basic Python concepts such as variables and running things from the command line. Some basic familiarity with Django would be helpful, as the sample project I will demo is a Django app, but beginner Djangonauts will be able to follow along. \n\n1. Introduction - Who am I? (1 minute) \n2. What is Docker? Why use it? (3 min) \n  - Eliminates \"it works on my machine\" problems \n  - Never install anything globally ever again \n  - Great for working with teams \n3. Docker definitions (4 min) \n  - Image \n  - Container \n  - Dockerfile \n  - Where do virtual environments fit in? \n4. Dockerfile (5 min) \n  - Go through parts: Python image, setting environment variables, dealing with requirements.txt, set working directory of /code/, expose port \n5. Docker Compose \n  - What is Docker Compose? (3 min) \n    - Allows you to run more than one container in a Docker application\n    - Useful for running multiple services like your web server, database, Redis, etc. in separate containers as part of one Docker application \n   - docker-compose.yml (6 min) \n    - Version \n    - Define services (db and web for this presentation)\n    - Explain volumes \n    - Run commands from services, like runserver \n    - Define dependencies \n6. Docker on the Command Line (8 min) \n  - docker-compose up\n  - manage.py commands (docker-compose run web ./manage.py [command]) \n  - running tests (docker-compose run web py.test [or ./runtests.py]) \n  - opening a shell (docker-compose run web bash) \n  - viewing containers (docker ps) and entering a container (see where the /code/ dir is that we created in the Dockerfile) \n  - docker-compose down \n7. Q\u0026A (any remaining time)","original_language":"eng","persons":["Lacey Williams Henschel"],"tags":["djangocon2018","14"],"view_count":235,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-07-03T14:15:04.558+02:00","length":2038,"duration":2038,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/14-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/14-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/1bb2c793-0c0a-51da-94d6-82ae8d11d0d9-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/1bb2c793-0c0a-51da-94d6-82ae8d11d0d9-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-14-an-intro-to-docker-for-djangonauts","url":"https://api.media.ccc.de/public/events/1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":6},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":7},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":8},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":7},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":11},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":6},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":6},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":6},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":9},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":7},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":10},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":5}]},{"guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","title":"Creating Solid APIs","subtitle":null,"slug":"hd-73-creating-solid-apis","link":"https://c3voc.de","description":"Increasingly, our apps are used not by humans but by other apps - via their APIs. Thus it is increasingly important that your APIs are well-designed and easy to consume for other developers.\nI will share tips and good practices on authentication, versioning, documentation, response structure, and why it all matters.\n\nAdding a few API endpoints to your application for internal consumption is easy. Creating APIs that other developers will love to use is a much harder problem.\nYou'll need to think about solving variety of topics such as versioning, authentication, response structure, documentation and more. There are existing good practices for each of them, but often developers who haven't done a lot of API work aren't familiar with them.\n\nMy talk will show how to build on top of Django and DRF and find reasonable solutions for those problems.\nI will talk about JSON API, OAuth2, and other technologies and show how they fit into the puzzle.\nBenefits of standardized response structure, as well as auto-generated documentation will also be discussed.\n\nI'll introduce OAuth2, discussing when it is a good choice and when not, as well as some trickier parts of it.\nNext we'll look at why a standardized response structure such as JSON API makes lives of 3rd-party developers easier. We'll then move on to versioning and how you can change your API without breaking all existing apps. And the talk wouldn't be complete without looking at documenting your APIs and why the docs should be auto-generated.","original_language":"eng","persons":["Rivo Laks"],"tags":["djangocon2018","73"],"view_count":213,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2025-04-28T22:00:06.534+02:00","length":2742,"duration":2742,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/73-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/73-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/66a5d858-82d8-5f9c-b252-b97d61b6cf54-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/66a5d858-82d8-5f9c-b252-b97d61b6cf54-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-73-creating-solid-apis","url":"https://api.media.ccc.de/public/events/66a5d858-82d8-5f9c-b252-b97d61b6cf54","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":11},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":12},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":21},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":11},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":11},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":18},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":7},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":7},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":10},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":9},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":10},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":7},{"event_id":5481,"event_guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","weight":7}]},{"guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","title":"Growing old gracefully: on being a career programmer.","subtitle":null,"slug":"hd-83-growing-old-gracefully-on-being-a-career-programmer-","link":"https://c3voc.de","description":"Software development is often seen as a young person's game. But what if, as you get older, you want to keep at the keyboard? Thoughts from a (now) veteran developer on building your career in software development for the long-haul.\n\nThis is a community talk. My favourite topics from DjangoConEU 2017 were the non-technical talks. The most interesting (on-topic) conversations I had were about the non-programming aspects of working in software. I wanted to give a talk on that line. \n\n_Prima facie_ I'm not the best place person to talk about diversity (white, male, etc), but, having been freelance since 2006, with four young children, and now slightly greying hair, I am in a position to talk about how to build a career in software development for the long-haul. Hiring in tech is massively ageist. I want to discuss strategies to handle that. \n\nMy target audience is individual programmers (whether freelance or employed) as well as software managers, looking to build **and retain** a team. (The message for managers is simply that they need to facilitate their employees' careers. This seems obvious but it **is** worth bringing out.) \n\nThe core point of my talk is around the idea that a career is very much a marathon rather than a sprint, and that it needs to be approached in that spirit. (Again, this may seem obvious but it **is** worth bringing out.)\n\nThere are two aspects of this. The one is **pace**. That to work on software day-in, day-out for 10, 20, 30, 40 years (or more) we need to pace ourselves, to manage our reserves, and to have fun. \n\nThe other is that there is noting to be scared of. That expertise which now may seem intimidating is, yes, available to us too. That with 5, 10, 15 years of continued effort we too (yes, us) can be as experienced as whomever, in the speciality we choose. \n\nI bring this out with three points. That we need to: \n\n* **Be disciplined**: The key point is to keep going. We each need to find patterns that work for us and develop them into habits that we build into a routine. The great thing is it doesn't have to be 100 hour weeks. As long as we keep doing it, whatever we do builds up over time. Despite the impression to the contrary, time is on our side. Which leads to...\n\n* **Be prolific**: Do lots, and put it out there. This one seems scary. \"I'll never do as much as ...\" — but it's an illusion. Do one thing. Put that out there. Do something else. Repeat. Again, the work builds up over time, and (seemingly) all of a sudden, you're in a position of being the expert. Finally...\n\n* **Be social**: And I don't necessarily mean Facebook (unless Facebook is your thing). In whatever environment or medium suits you get out there meet people. (Stretch your comfort zones a bit here.) Share what you've done. Relish in what others have done. Be part of the community. Help build the community. \n\nAll three of these are essential. As you get older — all the more as you get older — they allow you to build a sustainable career writing software.\n\nThis tale is brought out with stories on finding work, and on choosing clients, and employers, financial planning and job security, on family and free-time, and on the importance self-care. It's part inspiration, part battle-plan.","original_language":"eng","persons":["Carlton Gibson"],"tags":["djangocon2018","83"],"view_count":93,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2024-11-03T17:30:02.853+01:00","length":2707,"duration":2707,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/83-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/83-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-83-growing-old-gracefully-on-being-a-career-programmer-","url":"https://api.media.ccc.de/public/events/ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":1},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":1},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":6},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":5},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":1},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":2},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":8},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":5},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":2},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":5},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":6},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":6},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":6},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":6},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":5},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":3}]},{"guid":"3dd2e5f3-b549-5f88-a986-f782295b0af3","title":"Intro to Sprints","subtitle":null,"slug":"hd-143-intro-to-sprints","link":"https://c3voc.de","description":null,"original_language":"eng","persons":["DjangoCon Europe Crew"],"tags":["djangocon2018","143"],"view_count":26,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-01-04T20:30:10.120+01:00","length":527,"duration":527,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/143-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/143-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/3dd2e5f3-b549-5f88-a986-f782295b0af3-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/3dd2e5f3-b549-5f88-a986-f782295b0af3-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-143-intro-to-sprints","url":"https://api.media.ccc.de/public/events/3dd2e5f3-b549-5f88-a986-f782295b0af3","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":3},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":3},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":2},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":2},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":2},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":2},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":3},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":2},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":2},{"event_id":5481,"event_guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","weight":4},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":2},{"event_id":5506,"event_guid":"l8rsEk_Xh1bV4a02AfxXkQ","weight":2},{"event_id":5509,"event_guid":"Wy6jqnZ_111KAk-Vr3FLXA","weight":1},{"event_id":5530,"event_guid":"qdF7gg_mucGoRsXsKeWS_A","weight":1}]},{"guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","title":"Lightning Talks III","subtitle":null,"slug":"hd-142-lightning-talks-iii","link":"https://c3voc.de","description":"-\n\n-","original_language":"eng","persons":["DjangoCon Europe Crew"],"tags":["djangocon2018","142"],"view_count":92,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-01-08T22:15:10.561+01:00","length":3025,"duration":3025,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/142-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/142-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/48e09a34-d21f-5f55-903f-e0cbd667fad4-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/48e09a34-d21f-5f55-903f-e0cbd667fad4-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-142-lightning-talks-iii","url":"https://api.media.ccc.de/public/events/48e09a34-d21f-5f55-903f-e0cbd667fad4","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":13},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":19},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":8},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":9}]},{"guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","title":"Taking Channels Async","subtitle":null,"slug":"hd-26-taking-channels-async","link":"https://c3voc.de","description":"We take a look at Channels 2.0 and the changes it brings by going fully async, examining not only why the change makes things better, but also how we've managed to bridge between Django's synchronous world and the async world, and what the future might hold for Django and Channels.\n\nThe Channels project has taken a major turn with version 2.0, embracing Python's async functionality and building applications around an async event loop rather than worker processes. But why the big change? And what does it mean for Django?\n\nWe'll look at the progress Channels is making in turning more of the request/response cycle into native async code - how far can we get down the stack before making APIs async becomes hard? Can we make it as far as the ORM? How do we bridge between Django's synchronous world and the async world when we do reach that boundary?\n\nWe also take a look at how it's changed both Channels consumers, opening up the possibility of mixing async calls in with your synchronous code, and how it's changed what the ASGI spec looks like and what that might mean for adoption.\n\nAnd, finally, we'll look what's next for Django and Channels, and maybe how it will affect the Python web world as a whole.","original_language":"eng","persons":["Andrew Godwin"],"tags":["djangocon2018","26"],"view_count":80,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2024-10-25T16:45:03.816+02:00","length":1722,"duration":1722,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/26-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/26-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-26-taking-channels-async","url":"https://api.media.ccc.de/public/events/b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":9},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":9},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":11},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":7},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":3}]},{"guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","title":"ORM: The Sequel","subtitle":null,"slug":"hd-13-orm-the-sequel","link":"https://c3voc.de","description":"This summer... a story of learning. She came from a different world, and must understand her new surrounds. Follow her on a journey of self discovery as she learns about... the Django ORM, via SQL.\n\nDjango tutorials often use the perspective of a complete newcomer to Python and web development, and while they provide a good practical on-ramp for brand new developers, they are often not quite right for developers from other backgrounds.\n\nThe common backbone of MVC development, no matter the base language, is the database and the language specifically for it's manipulation: Structured Query Language (SQL). But Django hides this behind it's amazing drawcard, the Object Relational Model (ORM).\n\nBut how can a developer already familiar with SQL get a handle on the ORM?\n\nThis talk endeavours to introduce the ORM using shared SQL and relational database concepts, showcasing the features the ORM uses to make database querying and manipulation a joy, rather than a burden, to the polyglot developer.","original_language":"eng","persons":["Katie McLaughlin"],"tags":["djangocon2018","13"],"view_count":78,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2024-01-02T22:30:05.124+01:00","length":1948,"duration":1948,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/13-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/13-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/3523f8de-05b5-5e01-9d59-d8ca55eb4988-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/3523f8de-05b5-5e01-9d59-d8ca55eb4988-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-13-orm-the-sequel","url":"https://api.media.ccc.de/public/events/3523f8de-05b5-5e01-9d59-d8ca55eb4988","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":10},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":8},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":11},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":7},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":3},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":7},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":1},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":9},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":6},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":3},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":3},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":7}]},{"guid":"8dee6863-f2ab-5d48-9260-11d017abb870","title":"Making smarter queries with advanced ORM resources","subtitle":null,"slug":"hd-127-making-smarter-queries-with-advanced-orm-resources","link":"https://c3voc.de","description":"Django ORM has lots of resources for making complex database queries and the documentation brings good examples on how to apply each one of them, but understanding how to orchestrate all of those resources on real-life projects may not be so simple. My goal with this talk is to show through examples how to combine some of the QuerySet Methods, Query Expressions and other optimization techniques to make the most of DB resources when processing information inside the code is not an option.\n\nWhen we start modelling an application, we don’t always know how it’s models will evolve and it may be even more difficult to foresee their behaviour when big amounts of data are stored in their respective tables. With tables getting bigger through the project’s life apparently harmless operations may become impossible to make. Thankfully, databases are already prepared for dealing with large amounts of data and resource consuming operations and Django’s ORM provides solutions for most of them.\n\nFor this talk I’m going to build an example Django project, populate it’s tables with big enough datasets and formulate complex questions to demand the most on the ORM’s possibilities. For each question I’m writing at least one solution using the resources described in the QueryExpressions section of Django’s Docs to then analyse the SQL generated by it and the pros and cons between operational costs and code complexity.\n\nThe following topics will be covered:\n    - Using F() expressions for filtering, ordering and annotate operations\n    - Using Max, Min, Avg with annotations\n    - Compare Subquery expressions to queryset equivalents\n    - Present the new Window functions for partitioned operations\n    - Using Union queries","original_language":"eng","persons":["Mariana Bedran Lesche"],"tags":["djangocon2018","127"],"view_count":486,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2026-01-12T20:30:25.161+01:00","length":1716,"duration":1716,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/127-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/127-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/8dee6863-f2ab-5d48-9260-11d017abb870-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/8dee6863-f2ab-5d48-9260-11d017abb870-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-127-making-smarter-queries-with-advanced-orm-resources","url":"https://api.media.ccc.de/public/events/8dee6863-f2ab-5d48-9260-11d017abb870","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":21},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":18},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":5},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":29},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":18}]},{"guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","title":"Strategies to Edit Production Data","subtitle":null,"slug":"hd-45-strategies-to-edit-production-data","link":"https://c3voc.de","description":"Editing data in a production database is sometimes necessary. However, mistakes in running these queries can be disastrous. In this talk, you will learn strategies for making edits to a production database with examples from a Python stack that increase safety and auditability.\n\nAt some point, we all find ourselves at a SQL prompt making edits to the production database. We know it’s a bad practice and we always intend to put in place safer infrastructure before we need to do it again — what does a better system actually look like?\n\nThis talk progresses through 5 strategies for teams using a Python stack to do SQL writes against a database, to achieve increasing safety and auditability:\n\n(1) Develop a process for raw SQL edits (2) Run scripts locally (3) Run scripts on an existing server (4) Use a task runner (5) Build a Script Runner service\n\nWe’ll talk about the pros and cons of each strategy and help you determine which one is right for your specific needs.\n\nBy the end of this talk you’ll be ready to start upgrading your infrastructure for making changes to your production database safely!","original_language":"eng","persons":["Julie Qiu"],"tags":["djangocon2018","45"],"view_count":55,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2025-07-15T14:15:05.152+02:00","length":1788,"duration":1788,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/45-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/45-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/67424b6c-7035-5ea8-82ad-75ebc257e061-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/67424b6c-7035-5ea8-82ad-75ebc257e061-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-45-strategies-to-edit-production-data","url":"https://api.media.ccc.de/public/events/67424b6c-7035-5ea8-82ad-75ebc257e061","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":4},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":4},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":4},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":5},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":4},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":4},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":5},{"event_id":5464,"event_guid":"5a5b720d-fc8a-5804-9172-b3571fea972a","weight":3},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":3},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":5},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":5},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":4}]},{"guid":"635aa265-555f-5794-b641-916f7ac41a48","title":"It's not a bug, it's a bias","subtitle":null,"slug":"hd-61-it-s-not-a-bug-it-s-a-bias","link":"https://c3voc.de","description":"Product makers have a biased view of the world, and this translates to biased algorithms.\nHow can we take this into account, and create a fairer world though fairer algorithms?\n\nEven though Apple's Siri came out with a built-in response to where to hide a body, it was incapable of pointing a user to an abortion clinic.\nHow did an Artificial Assistant get iffy about abortion?\nAnd how can I stop my own biases from seeping into the products and services I create?\n\nIn this talk, I explore our preconceptions about the nature of algorithms, and how users and makers influence them to model the world according to their perspective.\nI conclude the talk by proposing a change of mindset for product designers, to be more aware of our capacity to let our biases infuse our services, and to put in place tools to create more inclusive experiences for our clients.","original_language":"eng","persons":["Anna-Livia Gomart"],"tags":["djangocon2018","61"],"view_count":118,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2025-06-23T06:30:05.897+02:00","length":1471,"duration":1471,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/61-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/61-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/635aa265-555f-5794-b641-916f7ac41a48-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/635aa265-555f-5794-b641-916f7ac41a48-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-61-it-s-not-a-bug-it-s-a-bias","url":"https://api.media.ccc.de/public/events/635aa265-555f-5794-b641-916f7ac41a48","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":12},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":13},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":13},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":6},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":6},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":13},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":6}]},{"guid":"c7bbe110-900b-5bc3-9582-3c1d6fab48ee","title":"Don't Look Back in Anger: Wildman Whitehouse and the Great Failure of 1858","subtitle":null,"slug":"hd-96-don-t-look-back-in-anger-wildman-whitehouse-and-the-great-failure-of-1858","link":"https://c3voc.de","description":"In the 1850s, Edward Orange Wildman Whitehouse was appointed the lead engineer of the first attempt to build a trans-Atlantic telegraph cable. This is a tale of a project gone horribly wrong in the age of magnificent facial hair. Step up to learn the secrets of recovering your project from failure!\n\nIn the 1850s, Edward Orange Wildman Whitehouse was appointed the lead engineer of the first attempt to build a trans-Atlantic telegraph cable. With the entire population of two continents waiting for his go-live, their handlebar moustaches aquiver, he demonstrated in fine form just how spectacularly a big project can be a bigger disaster.\n\nThis is a tale of long-winded rants, spectacular sideburns, and gentlemen scientists behaving badly. It is also a lesson about the importance of honest reflection in technical teamwork. Lilly outlines some of the mistakes made during one of the biggest tech delivery projects in history, and how a constructive view of failure helped to turn it all around. Through the public meltdowns of Wildman Whitehouse you will learn the importance of feedback, how to handle complex tasks gracefully, and the best way to recover from having your pipeline eaten by a whale.","original_language":"eng","persons":["Lilly Ryan"],"tags":["djangocon2018","96"],"view_count":38,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2026-02-15T11:15:10.908+01:00","length":1862,"duration":1862,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/96-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/96-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c7bbe110-900b-5bc3-9582-3c1d6fab48ee-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c7bbe110-900b-5bc3-9582-3c1d6fab48ee-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-96-don-t-look-back-in-anger-wildman-whitehouse-and-the-great-failure-of-1858","url":"https://api.media.ccc.de/public/events/c7bbe110-900b-5bc3-9582-3c1d6fab48ee","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":2},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":1},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":1},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":1},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":1},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":3},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":1},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":1},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":2},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":3},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":1}]},{"guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","title":"Out of Sight, Out of Mind: Survival tricks and tools for remote developers","subtitle":null,"slug":"hd-11-out-of-sight-out-of-mind-survival-tricks-and-tools-for-remote-developers","link":"https://c3voc.de","description":"What to do and what not to do in order to collaborate remotely on Django projects without losing your mind\n\nRemote working and “smart working” is very much in fashion these days, but what does it entail for the daily routing of a distributed development team? We will talk about tools, the disputed use of email, Skype, Slack but more specifically about time management, what you can expect from yourself and from other members of the remote team. Is your company “remote-friendly” or rather “remote-first”? When it’s time to spend a few days in physical proximity with your colleagues? We will share some examples out of the experience of a distributed team actively working with Python and Django on a daily basis, and show how you can make it all work, if you work on it.","original_language":"eng","persons":["Alessio Bragadini"],"tags":["djangocon2018","11"],"view_count":63,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-01-26T01:45:05.020+01:00","length":2597,"duration":2597,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/11-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/11-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-11-out-of-sight-out-of-mind-survival-tricks-and-tools-for-remote-developers","url":"https://api.media.ccc.de/public/events/62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":2868,"event_guid":"0549d204-604a-46c5-92a2-e64b85aa9892","weight":1},{"event_id":2907,"event_guid":"3b16ddc9-499b-44b1-9084-b3e328daea30","weight":1},{"event_id":2979,"event_guid":"e2d62f19-f20d-47fe-94eb-4a892e95875e","weight":1},{"event_id":3814,"event_guid":"60b4de59-a9e2-4999-a3a8-3c3a8422adf6","weight":1},{"event_id":3816,"event_guid":"e370add0-106d-48e6-9e97-cd560ba60b9c","weight":1},{"event_id":5124,"event_guid":"724a3f03-abbd-5052-bfee-e3c28380e8e0","weight":1},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":5},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":3},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":2},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":2},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":6},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":2},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":1},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":6},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":4},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":2},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":5},{"event_id":5476,"event_guid":"c7bbe110-900b-5bc3-9582-3c1d6fab48ee","weight":1},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":1}]},{"guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","title":"Keynote: Writing Code? Pfft... Evolve it Instead!","subtitle":null,"slug":"hd-134-keynote-writing-code-pfft-evolve-it-instead-","link":"https://c3voc.de","description":"We’re heading into a future of delivery drones, driverless cars and 3D-printed “hoverboards” …\n\nWith machines now able to perform many tasks better than humans, some people are going to be out of a job.\n\nBut not software developers, right?! Could a computer generate the code you currently write for a living?\n\nIn this talk, we’ll take a look at how technology is changing the work that people do, and think about the implications of that for our society. We'll then take a look at one of the many biologically inspired approaches to AI - Genetic Algorithms, and how they can be used to generate code given a description of the function that that code should perform, rather than having a software developer write it.\n\nSpoiler - you’re probably not out of a job, yet…","original_language":"eng","persons":["Emma Gordon"],"tags":["djangocon2018","134"],"view_count":178,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2024-08-03T18:00:02.853+02:00","length":2705,"duration":2705,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/134-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/134-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/50c2e0a9-ba96-57bf-9f35-73782b2548d9-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/50c2e0a9-ba96-57bf-9f35-73782b2548d9-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-134-keynote-writing-code-pfft-evolve-it-instead-","url":"https://api.media.ccc.de/public/events/50c2e0a9-ba96-57bf-9f35-73782b2548d9","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":19},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":26},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":12},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":24},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":11},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":11},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":21},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":11}]},{"guid":"17362d9b-7b44-5115-be19-cf9378f90a5a","title":"Accessibility Matters: Creating a Better Web","subtitle":null,"slug":"hd-92-accessibility-matters-creating-a-better-web","link":"https://c3voc.de","description":"Accessibility is an afterthought to many, but to those with issues navigating the web it's very important. We will go over examples of accessibility on the web, short and long term solutions, and talk about why accessibility matters to a variety of users. The audience should leave with the ability to spot some accessibility issues and the knowledge of how to fix them.\n\nAccessibility is a huge topic that is often acknowledged as important...by the people who already care about it. This talk is meant to help the entire audience start thinking about accessibility and realize how easy it is to at least put some accessibility into a site (or avoid adding blatantly inaccessible content).\n\nTen to fifteen percent of the EU has a disability, according to the EU Labour Force Survey, which is a large potential audience for any site. There are various laws that factor into the amount of web accessibility a country must have, and the consequences a business can face because of that. Accessible web development also tends to lead to better UX and a happier user base. And, another plus: It will save devs time and frustration when they’re working with the code, since good HTML is enforced.\n\nThis talk will start with a broad introduction to accessibility, how to break different concerns down into categories for consideration, and touch on some laws around web accessibility. The second part will go through examples of good and bad accessibility and what to look out for, as well as ways to improve accessibility (including \"easy wins\" that they could implement quickly to drastically improve their sites). The final section will include resources for finding accessibility standards and also browser extensions and the like for people to check on their own.\n\nThe audience will be expected to have working knowledge of the internet, webpages, and using webpages.","original_language":"eng","persons":["Lindsey Dragun"],"tags":["djangocon2018","92"],"view_count":43,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2024-06-10T13:00:03.874+02:00","length":1746,"duration":1746,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/92-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/92-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/17362d9b-7b44-5115-be19-cf9378f90a5a-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/17362d9b-7b44-5115-be19-cf9378f90a5a-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-92-accessibility-matters-creating-a-better-web","url":"https://api.media.ccc.de/public/events/17362d9b-7b44-5115-be19-cf9378f90a5a","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":3},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":6},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":6},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":5},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":4},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":5}]},{"guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","title":"It's about time","subtitle":null,"slug":"hd-18-it-s-about-time","link":"https://c3voc.de","description":"Why is dealing with dates and time so difficult? Well, it's because time has a very sordid history. Join us on a deep dive into that history, and how that history affects the data modelling and APIs we use every day.\n\nHere's a fun experiment: Mention timezones within earshot of any experienced programmer. Now wait until the profanity stops.\n\nHandling dates and time is an incredibly common requirement in computer applications. That's hardly surprising - we all use computers to record when we did old things, track how long things take, and to plan when we're going to do things. So why is dealing with time so difficult?\n\nWell, it's because time has a very sordid history. What we even think of as time has changed. In this talk, you'll travel through time, and see the impact that two thousand years of history have had on our modern life. You'll be shown how all this wibbly-wobbly, timey-wimey history stuff affects the data modelling and APIs we use on a daily basis.\n\nThis is going to take... some time.","original_language":"eng","persons":["Russell Keith-Magee"],"tags":["djangocon2018","18"],"view_count":198,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-08-25T19:15:05.026+02:00","length":1940,"duration":1940,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/18-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/18-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/23fbe7f1-c50f-50f0-b871-2556068bfc66-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/23fbe7f1-c50f-50f0-b871-2556068bfc66-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-18-it-s-about-time","url":"https://api.media.ccc.de/public/events/23fbe7f1-c50f-50f0-b871-2556068bfc66","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5337,"event_guid":"50c2af4c-4826-50ee-bde7-cbed07d3bf2e","weight":2},{"event_id":5343,"event_guid":"41f8b9a3-6245-5cf4-9c36-abfa5ffbd666","weight":2},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":5},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":1},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":6},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":4},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":5},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":1},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":5},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":10},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":4},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":1},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":5},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":5},{"event_id":5475,"event_guid":"fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","weight":2},{"event_id":5482,"event_guid":"24c5b7d4-3b73-592f-897e-72acff95d8cf","weight":3},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":9}]},{"guid":"fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","title":"Want More Women in Tech? Start with Django Girls","subtitle":null,"slug":"hd-102-want-more-women-in-tech-start-with-django-girls","link":"https://c3voc.de","description":"If your hometown can benefit from a free, friendly environment where women can learn to program, it’s time to bring Django Girls to your city. You’ll learn what it takes to run a successful event while hearing tales from the trenches from a seasoned Django Girls organizer.\n\nEver heard of Django Girls and thought, “Gee, if only that would come to my city, I’d love to be involved!” Django Girls is a fantastic, free weekend-long workshop that teaches women how to code through a comprehensive, Django-based tutorial. Encouraging more women to strive for programming careers benefits the tech community at large, and spearheading a Django Girls event in your city is a positive, actionable way for you to personally become involved.\n\n##But I’m a Developer - Not an Event Planner!\nSo you’re sold that Django Girls is a great idea, but maybe you’re not confident you can execute on it. You don’t need a degree in event planning to plan a great event - developers specialize in problem solving, and running a workshop involves just that. All it takes is a little passion. And sponsors. And a great venue with impeccable WiFi. And a team full of mentors, volunteers and organizers dedicated willing to follow you into the battlefield… Okay, okay. It’s a lot of hard work, but it’s incredibly rewarding to yourself and your community, and I’m ready to share my years of wisdom to help your event run smoothly.\n\n##Learn From My Mistakes\nFrom avoiding volunteer burnout to preventing mutiny from your attendees because the caterer was a flop, I’ll share my insights on what’s worked and what hasn’t over the past three years - and how I intend to improve upon the past two years to make my next event my best yet. I’ll cover logistics, and how to make the event memorable and enjoyable for everyone involved, including recruiting attendees, mentors, sponsors, and other organizers; how to find a great location; what small details are illogically important; and how to communicate effectively within your role as you transform from developer into a community leader.","original_language":"eng","persons":["Sara Heins"],"tags":["djangocon2018","102"],"view_count":59,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2025-09-14T02:00:03.055+02:00","length":1182,"duration":1182,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/102-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/102-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/fb53f8ca-e14c-5534-9f7b-0efe299b1ba5-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/fb53f8ca-e14c-5534-9f7b-0efe299b1ba5-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-102-want-more-women-in-tech-start-with-django-girls","url":"https://api.media.ccc.de/public/events/fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":1},{"event_id":5441,"event_guid":"17362d9b-7b44-5115-be19-cf9378f90a5a","weight":1},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":1},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":5},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":1},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":3},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":3},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":3}]},{"guid":"52179f9c-aa68-534d-9004-b4237c85761a","title":"Lightning Talks II","subtitle":null,"slug":"hd-141-lightning-talks-ii","link":"https://c3voc.de","description":"-\n\n-","original_language":"eng","persons":["DjangoCon Europe Crew"],"tags":["djangocon2018","141"],"view_count":83,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2024-05-23T07:15:03.038+02:00","length":2335,"duration":2335,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/141-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/141-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/52179f9c-aa68-534d-9004-b4237c85761a-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/52179f9c-aa68-534d-9004-b4237c85761a-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-141-lightning-talks-ii","url":"https://api.media.ccc.de/public/events/52179f9c-aa68-534d-9004-b4237c85761a","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":6},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":6},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":1},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":17},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":2},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":8},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":1},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":19}]},{"guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","title":"Building real time applications with Django","subtitle":null,"slug":"hd-65-building-real-time-applications-with-django","link":"https://c3voc.de","description":"Since the introduction of Channels, real time web has become much easier to work with in Django: discover how you can easily create yours with Django!\n\nSince the introduction of Channels, real time web has become much easier to work with in Django. It’s now possible to build real time applications with much less effort in managing the idiosyncrasies of the async programming and a lot of batteries are included. Starting with a brief introduction to Channels (targeting version 2.0), we will see how to build a real time application, both on the Django and the frontend side and how easy it’s to start experimenting with it. The talk has a very hands-on approach, to allow the attendees to experiment with the proposed solution and approach, and starting immediately building their own real time applications with Django.","original_language":"eng","persons":["Iacopo Spalletti"],"tags":["djangocon2018","65"],"view_count":409,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2026-01-13T20:30:13.390+01:00","length":1758,"duration":1758,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/65-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/65-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c385ad1d-5cfd-55bd-afa1-a453f9e338c3-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c385ad1d-5cfd-55bd-afa1-a453f9e338c3-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-65-building-real-time-applications-with-django","url":"https://api.media.ccc.de/public/events/c385ad1d-5cfd-55bd-afa1-a453f9e338c3","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":9},{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":24},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":26},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":13},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":16},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":21},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":11},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":29},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":16},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":9},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":8},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":9}]},{"guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","title":"Keynote: 23 Years Without A Proper Job","subtitle":null,"slug":"hd-133-keynote-23-years-without-a-proper-job","link":"https://c3voc.de","description":"Ever wondered about being your own boss? Then this talk is for you. Good experience, bad experience: I’ve had some of both as a startup founder and freelancer in the 23 years after I left my last salaried job. Let me share them with you.\n\nWhether you love your job or hate it, at some time you’ve probably wondered what it would be like to work for your self. \n\nMaybe you’re working on a sideproject and wonder how you could make some money from it? Or maybe you have the idea for the next Facebook or Uber?\n\nTo be a coder in today’s world of work is to have amazing opportunities to design the business life you want. You can work remotely; you can write books, or teach, or consult, with anyone anywhere.\n\nYou can have a crazy idea on Friday and have it running by Monday. Design your architecture to use cloud computing, so your tiny team can scale up your huge ideas.\n\nOr keep it small, and just earn some extra money with a Wordpress plugin, or a training course.\n\nIt has been 23 years since I last had a ‘real job’ and a regular income.\n\nI survived creating and running a company through the madness of the dotcom years. I made money from sideprojects, that I had started just for fun and for learning. I have freelanced without needing to use an agency to find the work.\n\nListen to my stories and learn from my mistakes and successes.","original_language":"eng","persons":["Rachel Willmer"],"tags":["djangocon2018","133"],"view_count":155,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2026-01-08T15:00:25.387+01:00","length":2794,"duration":2794,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/133-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/133-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/6c8a8eff-c71b-5471-ad8c-681fc5483aa8-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/6c8a8eff-c71b-5471-ad8c-681fc5483aa8-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-133-keynote-23-years-without-a-proper-job","url":"https://api.media.ccc.de/public/events/6c8a8eff-c71b-5471-ad8c-681fc5483aa8","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":9},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":7},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":7},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":8},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":6},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":9},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":7},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":8},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":8},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":5}]},{"guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","title":"A different Form of navigation","subtitle":null,"slug":"hd-113-a-different-form-of-navigation","link":"https://c3voc.de","description":"Web tooling for data analysis requires, at its heart, a way to select the data a user want's to analyze. This talk shows how you can use forms to pass data among pages, retain the selected form elements through the request/response cycle and build web interfaces that utilize forms while looking like simple link elements. I will also show how I use my [django-modelqueryform](https://django-modelqueryform.readthedocs.io/en/latest/) package to facilitate an advanced user-centric data filtering interface.\n\nData analysis and visualization tools are different than many applications we build with django. They are not simple CRUD apps, and different users often want to use vastly different data subsets for their analysis. \n\n- The talk will start with a quick demo of such an application to give context. \n- Overview of the functionality provided by [django-modelqueryform](https://django-modelqueryform.readthedocs.io/en/latest/\n- Building widgets that encapsulate an instance of the form\n- Coding required to maintain the form context through the request/response cycle so that the data selection is maintained through navigation to different analysis types\n- Questions/Comments","original_language":"eng","persons":["Chaim Kirby"],"tags":["djangocon2018","113"],"view_count":131,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2026-01-04T11:30:10.710+01:00","length":1371,"duration":1371,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/113-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/113-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/f2c3b29f-d6d1-5196-ba0d-c094e805ce04-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/f2c3b29f-d6d1-5196-ba0d-c094e805ce04-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-113-a-different-form-of-navigation","url":"https://api.media.ccc.de/public/events/f2c3b29f-d6d1-5196-ba0d-c094e805ce04","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":26},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":13},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":26},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":12},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":18}]},{"guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","title":"Protecting Personal Data with Django (because it's the law)","subtitle":null,"slug":"hd-81-protecting-personal-data-with-django-because-it-s-the-law-","link":"https://c3voc.de","description":"A new EU regulation comes into effect in the middle of this conference. Here is an overview of what is required and how you can use Django to comply.\n\nFrom 25 May 2018, anyone collecting personal data on European Union residents will have to follow a number of new rules, some of which are pretty far-reaching. The new rules are however simple enough to understand, and as professionals, getting on top of things like this is what we're being paid for.\n\nThe regulation is called \"Regulation (EU) 2016/679\" and is commonly known as the \"General Data Protection Regulation\" or \"GDPR\". It has been around for a couple of years and comes into effect now. The previous regime (95/46/EC) was only an EU Directive, so the exact rules were implemented in the native laws of each EU Member State. The new regulation applies everywhere automatically, so it is a single set of rules for all of Europe, which is a good thing. Not everyone will be responsible for managing compliance, but I think every professional software developer should get to know this regulation.\n\nIn the first half, I'll provide an overview of the parts of the regulation that are relevant for developers. In the second half, I'll look at the ways of complying using Django: what Django already does for you, how to make Django do more, and also (quickly) what sort of data protecting batteries might be useful Django to include going forward.\n\nI'll be around for the sprints if anyone is interested in working on this at a framework level.","original_language":"eng","persons":["Will Hardy"],"tags":["djangocon2018","81"],"view_count":138,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2026-04-08T21:00:05.116+02:00","length":2389,"duration":2389,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/81-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/81-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/136fe55e-bef6-50f7-99b9-6b465ce649a6-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/136fe55e-bef6-50f7-99b9-6b465ce649a6-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-81-protecting-personal-data-with-django-because-it-s-the-law-","url":"https://api.media.ccc.de/public/events/136fe55e-bef6-50f7-99b9-6b465ce649a6","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":8},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":7},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":10},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":10},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":9},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":3},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":6},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":2},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":8},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":2},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":3}]},{"guid":"c25d9b08-a843-56e9-9846-a905a4269d82","title":"Lightning Talks I","subtitle":null,"slug":"hd-145-lightning-talks-i","link":"https://c3voc.de","description":"-\n\n-","original_language":"eng","persons":["DjangoCon Europe Crew"],"tags":["djangocon2018","145"],"view_count":145,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2024-05-06T16:00:03.996+02:00","length":1996,"duration":1996,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/145-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/145-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c25d9b08-a843-56e9-9846-a905a4269d82-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c25d9b08-a843-56e9-9846-a905a4269d82-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-145-lightning-talks-i","url":"https://api.media.ccc.de/public/events/c25d9b08-a843-56e9-9846-a905a4269d82","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":10},{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":11},{"event_id":5435,"event_guid":"635aa265-555f-5794-b641-916f7ac41a48","weight":5},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":16},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":3},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":10},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":17},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":13}]},{"guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","title":"Physical Health offering","subtitle":null,"slug":"hd-146-physical-health-offering","link":"https://c3voc.de","description":"-\n\n-","original_language":"eng","persons":["djangocon crew"],"tags":["djangocon2018","146"],"view_count":52,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2022-06-24T21:30:04.207+02:00","length":437,"duration":437,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/146-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/146-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c9de4bee-db3e-516a-9d1a-ac49c236614f-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/c9de4bee-db3e-516a-9d1a-ac49c236614f-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-146-physical-health-offering","url":"https://api.media.ccc.de/public/events/c9de4bee-db3e-516a-9d1a-ac49c236614f","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":6},{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":4},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":6},{"event_id":5457,"event_guid":"6c8a8eff-c71b-5471-ad8c-681fc5483aa8","weight":4},{"event_id":5468,"event_guid":"b8760441-85be-5e9b-9063-cb2e913d1f51","weight":3},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":6},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":5},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":4}]},{"guid":"16129578-76f6-5464-a54a-9f43b1a55488","title":"On The Look-Out For Your Data","subtitle":null,"slug":"hd-42-on-the-look-out-for-your-data","link":"https://c3voc.de","description":"Do you have data in the database of your Django project? Do you want to find that the needle in the haystack of your data? There are plenty options how you can achieve that. With various levels of complexity, confidence, and reliability. I'll give an insight into what the most common are nowadays.\n\nYou're tasked with building a search for the project you're working on. But where do you start? What search implementation are you going to use? There's a sheer unlimited set of ways to implement \"I'm looking for X in Y\" out there. Elasticsearch, LIKE and ILIKE queries, MySQL's Fulltext Search, PostgreSQL's Fulltext Search, Solr, Whoosh, Xapian, to only name a few. I'll be looking at the most common ones and will be showing some basic implementation techniques.\n\nYou should be familiar with Django in so much as that I'm not talking about how to create or update an object in a database. You should also have an idea of what database transactions are. The talk will feature some code snippets that I will provide in full, afterward.","original_language":"eng","persons":["Markus Holtermann"],"tags":["djangocon2018","42"],"view_count":34,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2025-06-03T19:00:05.289+02:00","length":1536,"duration":1536,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/42-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/42-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/16129578-76f6-5464-a54a-9f43b1a55488-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/16129578-76f6-5464-a54a-9f43b1a55488-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-42-on-the-look-out-for-your-data","url":"https://api.media.ccc.de/public/events/16129578-76f6-5464-a54a-9f43b1a55488","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":3468,"event_guid":"91c80405-d612-48f2-832f-2c42ffcfada6","weight":1},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":5},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":5},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":1},{"event_id":5443,"event_guid":"be758761-e7e8-5c35-894c-abca5f0876e4","weight":1},{"event_id":5448,"event_guid":"dfd9e236-cd5d-5f9d-9d18-a99d6d639226","weight":1},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":4},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":6},{"event_id":5464,"event_guid":"5a5b720d-fc8a-5804-9172-b3571fea972a","weight":3},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":5},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":4},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":1},{"event_id":5475,"event_guid":"fb53f8ca-e14c-5534-9f7b-0efe299b1ba5","weight":2},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":1},{"event_id":5481,"event_guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","weight":3},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":1}]},{"guid":"a0168486-07a8-53a0-b327-70d937df9794","title":"Slow Food Digests Better - or how to maintain a 8.5 year old Python project without getting lost","subtitle":null,"slug":"hd-23-slow-food-digests-better-or-how-to-maintain-a-8-5-year-old-python-project-without-getting-lost","link":"https://c3voc.de","description":"AMO - https://addons.mozilla.org/ was originally written as a PHP web application, ported to Python / Django 1.1 in 2010, more or less maintained over time and only recently got much more traction because of Firefox Quantum and Mozilla's move to WebExtensions.\n\nThe talk will show our approach to maintaining very old code, handling refactoring, adding new features as well as feature/code removal while slowly upgrading our way to a Python 3 and Django 2.0 ecosystem and why we chose that approach over a rewrite.","original_language":"eng","persons":["Christopher Grebs"],"tags":["djangocon2018","23"],"view_count":88,"promoted":false,"date":"2018-05-24T00:00:00.000+02:00","release_date":"2018-05-24T02:00:00.000+02:00","updated_at":"2025-02-27T01:00:02.871+01:00","length":1823,"duration":1823,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/23-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/23-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/a0168486-07a8-53a0-b327-70d937df9794-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/a0168486-07a8-53a0-b327-70d937df9794-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-23-slow-food-digests-better-or-how-to-maintain-a-8-5-year-old-python-project-without-getting-lost","url":"https://api.media.ccc.de/public/events/a0168486-07a8-53a0-b327-70d937df9794","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5270,"event_guid":"5ae52c55-6447-45f8-9d13-36d15303fffe","weight":4},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":4},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":5},{"event_id":5454,"event_guid":"f1743f41-f61b-562d-bf09-8197713f62df","weight":1},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":7},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":4},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":3},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":4},{"event_id":5463,"event_guid":"16129578-76f6-5464-a54a-9f43b1a55488","weight":4},{"event_id":5465,"event_guid":"67424b6c-7035-5ea8-82ad-75ebc257e061","weight":5},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":4},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":6},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":6},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":6}]},{"guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","title":"Representing Hierarchies in Relational Databases","subtitle":null,"slug":"hd-29-representing-hierarchies-in-relational-databases","link":"https://c3voc.de","description":"In this talk, I’ll explain the fundamental problem representing deep hierarchies in relational databases. To address this problem, we can use a database design pattern, named Materialized Path Trees.\n\nMany data structures require a representation, where one parent node can have any arbitrary number of children. Inside relational databases, this typically is represented by a foreign key onto its own table. In Django’s ORM, we use ``models.ForeignKey('self', ...)``, to create this kind of recursive relationship.\nThe major problem with this kind of representation is, that it doesn’t scale for deep trees. Whenever we have to traverse the tree from a given starting node, our code has to perform one database query per hierarchy level.\nTo circumvent this, some database vendors implemented SQL dialects, to fetch a whole subtree with one query. Long time ago, Oracle for instance implemented 'CONNECT BY', which is proprietary and not part of the SQL standard. Nowadays, newer releases of most major database vendors implemented the 'WITH RECURSIVE' clause, which has been added to the SQL-99 standard. This allows us to build recursive queries.\n\nFortunately there is a clever recipe to represent hierarchies in relational databases using standard SQL techniques, but without the mentioned scaling problem: Materialized Path Trees, discovered by Vadim Tropashko. Django’s ecosystem offers two libraries, which implement this design pattern: **django-mptt** and **django-treebeard**. I also would like to mention **django-tree**, which only works on Postgres, using their SQL extension mentioned before.\nIn this talk I’ll explain the design patterns for Materialized Path Trees. Furthermore I’ll show the pros and cons of both libraries.","original_language":"eng","persons":["Jacob Rief"],"tags":["djangocon2018","29"],"view_count":573,"promoted":false,"date":"2018-05-23T00:00:00.000+02:00","release_date":"2018-05-23T02:00:00.000+02:00","updated_at":"2026-01-13T10:00:14.655+01:00","length":1636,"duration":1636,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/29-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/29-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/9f66f449-ac25-59d7-b6c8-84c4d50b51d0-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/9f66f449-ac25-59d7-b6c8-84c4d50b51d0-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-29-representing-hierarchies-in-relational-databases","url":"https://api.media.ccc.de/public/events/9f66f449-ac25-59d7-b6c8-84c4d50b51d0","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5349,"event_guid":"16a1a1ce-98ce-5d69-9af1-49ca4f154640","weight":1},{"event_id":5367,"event_guid":"f738088c-f2cf-54ab-a6cd-f3f5c5cc8481","weight":1},{"event_id":5432,"event_guid":"4b9c312b-de9f-5934-974c-e09f70998899","weight":1},{"event_id":5433,"event_guid":"50c2e0a9-ba96-57bf-9f35-73782b2548d9","weight":9},{"event_id":5434,"event_guid":"f2c3b29f-d6d1-5196-ba0d-c094e805ce04","weight":8},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":11},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":11},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":12},{"event_id":5444,"event_guid":"fcabf377-2082-5e37-9c17-7bc1aa5dc051","weight":1},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":8}]},{"guid":"24c5b7d4-3b73-592f-897e-72acff95d8cf","title":"Auf Wiedersehen","subtitle":null,"slug":"hd-144-auf-wiedersehen","link":"https://c3voc.de","description":null,"original_language":"eng","persons":["DjangoCon Europe Crew"],"tags":["djangocon2018","144"],"view_count":19,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2019-09-28T18:28:15.942+02:00","length":888,"duration":888,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/144-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/144-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/24c5b7d4-3b73-592f-897e-72acff95d8cf-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/24c5b7d4-3b73-592f-897e-72acff95d8cf-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-144-auf-wiedersehen","url":"https://api.media.ccc.de/public/events/24c5b7d4-3b73-592f-897e-72acff95d8cf","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":2846,"event_guid":"527d5a8e-841d-48ad-89d9-b62fbee741b8","weight":1},{"event_id":2920,"event_guid":"d516ffe3-d32d-4bed-8289-09d245ac2b2f","weight":2},{"event_id":2922,"event_guid":"47cbd880-f500-4c44-b717-c11ed1da087d","weight":1},{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":2},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":1},{"event_id":5466,"event_guid":"52179f9c-aa68-534d-9004-b4237c85761a","weight":1},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":1},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":3},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":3},{"event_id":5481,"event_guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","weight":1},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":1},{"event_id":5507,"event_guid":"lCd2eP4dZfnl5eXWz14qIQ","weight":1}]},{"guid":"178e37b7-7508-50e9-b603-ce864723e0db","title":"Banking with Django - how to not lose your customer's money","subtitle":null,"slug":"hd-110-banking-with-django-how-to-not-lose-your-customer-s-money","link":"https://c3voc.de","description":"Topic: Banking with Django - how to not lose  your customer's money\nAbstract: How Holvi decided to pick Django as part of their core infrastructure. I'll go through both the business reasons for using Django for banking (5-10 minutes), and technical details of how we do reliable distributed software which keeps our and customer's money safe (10-20 minutes).","original_language":"eng","persons":["Anssi Kääriäinen"],"tags":["djangocon2018","110"],"view_count":187,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2026-01-30T19:45:09.081+01:00","length":1808,"duration":1808,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/110-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/110-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/178e37b7-7508-50e9-b603-ce864723e0db-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/178e37b7-7508-50e9-b603-ce864723e0db-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-110-banking-with-django-how-to-not-lose-your-customer-s-money","url":"https://api.media.ccc.de/public/events/178e37b7-7508-50e9-b603-ce864723e0db","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5436,"event_guid":"c385ad1d-5cfd-55bd-afa1-a453f9e338c3","weight":9},{"event_id":5438,"event_guid":"66a5d858-82d8-5f9c-b252-b97d61b6cf54","weight":5},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":7},{"event_id":5458,"event_guid":"5ac8d175-b219-549e-8c0b-415af750a750","weight":2},{"event_id":5461,"event_guid":"ccec5a72-2adf-5ac0-8ef5-07f4c6ff95b3","weight":5},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":6},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":6},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":7},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":10},{"event_id":5472,"event_guid":"62890ee6-a49a-5f2e-ae9d-1fa9cd9cb44e","weight":5},{"event_id":5473,"event_guid":"7b23facb-2220-517b-b467-855b10983849","weight":9},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":4},{"event_id":5481,"event_guid":"7d45b2f8-2a05-5e07-becd-4fb89a15b983","weight":5}]},{"guid":"7b23facb-2220-517b-b467-855b10983849","title":"GraphQL in Python and Django","subtitle":null,"slug":"hd-37-graphql-in-python-and-django","link":"https://c3voc.de","description":"In this talk, I’ll talk about GraphQL, a data query language created by Facebook as an alternative to the widely used REST. I’ll list the key differences between the twos and pros and cons of GraphQL over a “traditional” REST API.\n\nI’ll tell why GraphQL has been created, what problems does it solve and how to create GraphQL APIs with Python with an additional follow up on how to use it with Django, one of the most popular web framework. If we have enough time I’ll touch on advanced topics like authentication, caching, security and real-time.\n\nTakeaway: the objective of the talk is to have an introduction on GraphQL, understand why and when to use it and, finally, how to use it Python.\n\nAudience: the talk is for web developers with some experience building web APIs.","original_language":"eng","persons":["Patrick Arminio"],"tags":["djangocon2018","37"],"view_count":242,"promoted":false,"date":"2018-05-25T00:00:00.000+02:00","release_date":"2018-05-25T02:00:00.000+02:00","updated_at":"2026-03-27T18:00:05.295+01:00","length":1589,"duration":1589,"thumb_url":"https://static.media.ccc.de/media/conferences/djangocon2018/37-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/djangocon2018/37-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/djangocon2018/7b23facb-2220-517b-b467-855b10983849-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/djangocon2018/7b23facb-2220-517b-b467-855b10983849-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/hd-37-graphql-in-python-and-django","url":"https://api.media.ccc.de/public/events/7b23facb-2220-517b-b467-855b10983849","conference_title":"DjangoCon Europe 2018","conference_url":"https://api.media.ccc.de/public/conferences/djangocon2018","related":[{"event_id":5256,"event_guid":"c2474049-40f0-4d92-935e-e22090e3d343","weight":7},{"event_id":5437,"event_guid":"272a6c50-7083-5987-bc28-c0c6cbfc2d8f","weight":5},{"event_id":5439,"event_guid":"9f66f449-ac25-59d7-b6c8-84c4d50b51d0","weight":5},{"event_id":5440,"event_guid":"8dee6863-f2ab-5d48-9260-11d017abb870","weight":7},{"event_id":5455,"event_guid":"c25d9b08-a843-56e9-9846-a905a4269d82","weight":7},{"event_id":5459,"event_guid":"3523f8de-05b5-5e01-9d59-d8ca55eb4988","weight":7},{"event_id":5460,"event_guid":"b100c61e-48ed-5b1c-a9b5-c0bf56a39a2f","weight":4},{"event_id":5462,"event_guid":"136fe55e-bef6-50f7-99b9-6b465ce649a6","weight":6},{"event_id":5467,"event_guid":"a0168486-07a8-53a0-b327-70d937df9794","weight":6},{"event_id":5469,"event_guid":"c4f46227-9af7-5180-bba8-1c23e005f12e","weight":6},{"event_id":5470,"event_guid":"c9de4bee-db3e-516a-9d1a-ac49c236614f","weight":5},{"event_id":5471,"event_guid":"1bb2c793-0c0a-51da-94d6-82ae8d11d0d9","weight":7},{"event_id":5474,"event_guid":"178e37b7-7508-50e9-b603-ce864723e0db","weight":9},{"event_id":5480,"event_guid":"23fbe7f1-c50f-50f0-b871-2556068bfc66","weight":4},{"event_id":5482,"event_guid":"24c5b7d4-3b73-592f-897e-72acff95d8cf","weight":3},{"event_id":5483,"event_guid":"48e09a34-d21f-5f55-903f-e0cbd667fad4","weight":3}]}]}