Vinta's Talks Around the Globe: DjangoConUS, PyBay2017 and DjangoConAU

Felipe Farias
August 13, 2017
<p>Slides from talks given during the <strong>DjangoConUS, PyBay2017 and DjangoConAU events will be posted here:</strong></p><h3 id="djangoconus-">DjangoConUS:</h3><p><a href="https://twitter.com/flaviojuvenal">Flavio Juvenal</a> tried to summarize his <a href="https://www.vinta.com.br/blog/2017/going-to-technical-events-is-awesome-djangocon-experience/">experience on this DjangoCon with a post</a>. He mentioned talks that he enjoyed watching and open source projects that he got to know there.</p><figure class="kg-card kg-image-card"><img src="https://vinta-cms.s3.amazonaws.com/media/filer_public/3f/af/3faf4363-7733-4338-9ec5-b341340d9025/djangoconus.png" class="kg-image" alt="Alt text"></figure><h3 id="tasks-you-gotta-know-how-to-run-em-you-gotta-know-how-to-safe-em"><a href="https://speakerdeck.com/filipeximenes/tasks-you-gotta-know-how-to-run-em">Tasks: you gotta know how to run 'em, you gotta know how to safe 'em</a></h3><ul><li>Speaker: <a href="https://twitter.com/xima">@xima</a></li><li>Slides: <a href="https://speakerdeck.com/filipeximenes/tasks-you-gotta-know-how-to-run-em">Tasks: you gotta know how to run 'em, you gotta know how to safe' em</a></li><li>Conferences: <a href="https://2017.djangocon.us/">DjangoConUS: 4:40pm. August 16</a></li></ul><p>Web developers often find themselves in situations where server processing takes longer than a user would accept. One very common situation is when sending emails. Although simple and relatively quick task, it requires the communication with an external service. In this situation, it's not possible to foresee how long that service will take to answer. Not to mention the many unexpected situations that can arise, such as errors and bugs. The solution to this problem is to delegate long lasting tasks while responding quickly to the user. This is the point where we need async tasks. There are some tools available that can assist in this job. In this talk, you will learn about tools like Celery and Django Channels. Those offer different approaches to the asynchronous tasks problem. For each, you will understand the architecture behind and some of the good practices when developing this kind of system.</p><h3 id="preventing-headaches-with-linters-and-automated-checks"><a href="https://docs.google.com/presentation/d/1ccYOC1O1asGIbE62-pKFKlBRvkdu2sd2WQGCpSSiGC8/edit?usp=sharing">Preventing Headaches with Linters and Automated Checks</a></h3><ul><li>Speaker: <a href="https://twitter.com/flaviojuvenal">@flaviojuvenal</a></li><li>Slides: <a href="https://docs.google.com/presentation/d/1ccYOC1O1asGIbE62-pKFKlBRvkdu2sd2WQGCpSSiGC8/edit?usp=sharing">Preventing Headaches with Linters and Automated Checks</a></li><li>Conferences: <a href="https://pybay.com/">PyBay17: 10am. August 13</a> and <a href="https://2017.djangocon.us/">DjangoConUS: 12:20pm. August 16</a></li></ul><p>While it’s very common to enforce PEP8 code style with tools like flake8, it’s rare for Django projects to use any other types of tools for automated checks. However, linters and automated checks are a good way to enforce code quality beyond code style. Human-based code reviews are great, but if an experienced programmer leaves the organization, all quality-related knowledge they have will be gone. One way to prevent this is to make developers consolidate their knowledge as custom check tools. Instead of repeating to every junior programmer how they should code, experienced developers should write tools to do that for them. Having this kind of “executable knowledge” is great to ensure long-lasting good practices in organizations.</p><p>Thankfully, Python already has a number of extensible linters and check tools that can be used to consolidate knowledge. Also, Django has the System check framework, which can be used to write custom validations to Django apps. In this talk, we’ll discuss existing linters and tools, what benefit they bring to Django projects, how to extend them and how to build custom ones. Combined with IDEs, pre-commit hooks, and CI tools, linters can validate code at programming time, commit time, or CI time, thereby ensuring good practices in all development workflow.</p><h3 id="pybay2017-">PyBay2017:</h3><figure class="kg-card kg-image-card"><img src="https://vinta-cms.s3.amazonaws.com/media/filer_public/da/22/da227203-5490-4d49-abc6-1154ec56c307/pybay17.png" class="kg-image" alt="Alt text"></figure><h3 id="your-django-app-is-a-user-interface"><a href="https://bit.ly/django-apps-pybay">Your Django App is a User Interface</a></h3><ul><li>Speaker: <a href="https://twitter.com/flaviojuvenal">@flaviojuvenal</a></li><li>Slides: <a href="https://bit.ly/django-apps-pybay">Your Django App is a User Interface</a></li><li>Conferences: <a href="https://pybay.com/">PyBay17: 3:15pm. August 12</a></li></ul><p>Usability heuristics are a useful way to evaluate an interface. An often overlooked aspect of Django apps is they’re interfaces too, one that connects the developer with a reusable solution. In this talk, we’ll learn how to apply usability concepts to Django apps to make them better to (re)use.</p><h3 id="djangocon-australia-">DjangoCon Australia:</h3><figure class="kg-card kg-image-card"><img src="https://vinta-cms.s3.amazonaws.com/media/filer_public/78/56/7856f2f7-7556-4d39-b0ff-c6b1f53d4280/djangoconau17.png" class="kg-image" alt="Alt text"></figure><h3 id="multitenant-applications-how-and-why"><a href="https://speakerdeck.com/filipeximenes/multitenant-applications-how-and-why">Multitenant Applications: How and Why</a></h3><ul><li>Speaker: <a href="https://twitter.com/xima">@xima</a></li><li>Slides: <a href="https://speakerdeck.com/filipeximenes/multitenant-applications-how-and-why">Multitenant Applications: How and Why</a></li><li>Video: <a href="https://www.youtube.com/watch?v=yyJonajA_jI&amp;t=303s">Youtube</a></li><li>Conferences: <a href="http://2017.djangocon.com.au/">DjangoCon AU</a></li></ul><p>Applications often need multitenancy at some level. The most common scenario is to keep data isolated among clients. One way to achieve this is to have multiple database instances and connect to each according to the user accessing the system. Another approach is to have a single database and model relationships so it's possible to query data separately. The last common way is again to have a single database instance, but this time there are multiple separate schemas. I'll go over each of these approaches. For each, you will learn about the architecture, understand how to build it using Django, see examples on how to make queries and learn what tools can help on the job. By the end, you will understand key differences and be able to choose the approach that better suits your next application.</p><h3 id="what-comes-next">What comes next?</h3><p>We've just <strong>approved five new talks on next <a href="http://2017.pythonbrasil.org.br/">Python Brasil</a>.</strong> The event will happen in October, so if you want to keep posted on our Python and Django content, please <a href="http://bit.ly/subscribe-vinta">subscribe our newsletter</a> or take a look at <a href="https://www.vinta.com.br/blog">our past blog posts</a>. Thanks!</p>