Vinta's Talks Around the Globe: DjangoConUS, PyBay2017 and DjangoConAU
Felipe Farias • 13 August 2017
Slides from talks given during the DjangoConUS, PyBay2017 and DjangoConAU events will be posted here:
- Speaker: @xima
- Slides: Tasks: you gotta know how to run 'em, you gotta know how to safe' em
- Conferences: DjangoConUS: 4:40pm. August 16
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.
- Speaker: @flaviojuvenal
- Slides: Preventing Headaches with Linters and Automated Checks
- Conferences: PyBay17: 10am. August 13 and DjangoConUS: 12:20pm. August 16
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.
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.
- Speaker: @flaviojuvenal
- Slides: Your Django App is a User Interface
- Conferences: PyBay17: 3:15pm. August 12
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.
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.
What comes next?
We've just approved five new talks on next Python Brasil. The event will happen in October, so if you want to keep posted on our Python and Django content, please subscribe our newsletter or take a look at our past blog posts. Thanks!