Long talk

Optimizing SQL Queries in Django: Tackling the N+1 Problem with ORMs

Carmen Alvarez

Room PAM − Saturday, November 2, 2024 at 11:00 AM − 55 min

In this talk, we will introduce the N+1 query problem, a common pitfall encountered when using Object-Relational Mappers (ORMs) like Django's ORM. We'll see how ORMs simplify our lives compared to maintaining raw SQL queries.

We'll demonstrate how to debug the SQL queries generated by the ORM.

We'll explain the concept of lazy loading in ORMs and how it can lead to the N+1 query problem if we're not careful. Using a practical example of a CRUD application, we'll show how lazy loading can result in multiple SQL queries, thus degrading performance.

We will then provide a solution to the N+1 problem by using the select_related method in Django to optimize query performance, reducing the number of SQL queries to just one.

Additionally, we'll introduce Django's CaptureQueriesContext, a tool that can be used in unit tests to ensure that our application remains optimized as it evolves, preventing regressions related to N+1 queries.

Comment et pourquoi (bien) tester en Python

Philippe Gregoire

Room GAM − Saturday, November 2, 2024 at 11:00 AM − 55 min

  • Petit retour théorique sur les tests
    • La fameuse pyramide des tests... (ou la toupie, ou le clou, ou la tajine...)
      • unit, integration, end-to-end, ... tests
      • tests techniques ou fonctionnels, quel est le role de la QA?
      • Les diverses écoles et approches. full unit, unit through integration
    • Restons bien couverts: Le coverage, ses bienfaits et ses travers
      • Code coverage, branch coverage...
      • Attention à ne pas pêcher par omission
    • Comment évaluer ses besoins et sa complétude en tests
      • 100% c'est bien mais c'est pas assez...
      • tester à 200%, 300% ??
      • A trop tester on teste mal... Sachons raison garder
  • Technologies de test
    • Ducky (le canard) s'mock-on? Le Mocking
    • Faut-il piquer le canard? Injection vs Mock
  • Tests et Coverage, les IDEs à la rescousse!
    • petite demo d'integration des tests et coverage dans VSCode.

Covariance de type, contravariance et aspirine

Samuel de Framond

Room C03 − Saturday, November 2, 2024 at 11:00 AM − 55 min

Progressivement, python supporte de mieux en mieux le typage statique.

Cette conférence démystifie le concept de variance de type afin de pouvoir utiliser toute la puissance de ces nouvelles fonctionnalités.

Nous en tirerons quelques bonnes pratiques concrètes à utiliser tous les jours.

IA, potion ou poison ?

Reynald Riviere, Hascoët Camille

Room C02 − Saturday, November 2, 2024 at 11:00 AM − 55 min

Green AI, est-ce la nouvelle rébellion de nerds écolos ? L’IA, ce n’est pas juste du code python pour créer un modèle, c'est aussi un code de conduite. A l’ère de l’urgence climatique, "coder vert" c'est comme trier ses déchets. Les règles du jeu changent et nous data scientists avons le devoir de se mettre au vert.

Dans notre talk qui ne se veut non plus dénonciateur de notre profession, nous y présenterons une méthode pour faire des IA frugales ! Nous vous montrerons des pratiques concrètes et applicables pour réduire de moitié la consommation énergétique de nos chers réseaux de neurones ... sans qu’ils perdent le nord pour autant. On y verra comment PyTorch permet d'optimiser les nombreux calculs matriciels de nos IA.

Python 3.12's New Monitoring and Debugging API

Johannes Bechberger

Room PAM − Saturday, November 2, 2024 at 2:00 PM − 55 min

Python long lagged a good monitoring and profiling API. It had only the simplistic sys.settrace API, which had a high overhead and couldn't be configured appropriately. The new API, released in October 2023, will change this by offering a proper fine-grained and well-designed monitoring API while also making the commonly used operations fast.

This talk will give you an introduction to the new API and its design major design decisions and show you how you can use it to write a simple debugger from scratch.

Tout ce que vous ne vouliez pas savoir sur le DNS... en Python

Arthur Vuillard

Room C02 − Saturday, November 2, 2024 at 2:00 PM − 55 min

DNS c'est facile, c'est juste un annuaire qui fait le lien entre un nom human-readable et une adresse IP.

Alors oui, mais non. DNS est beaucoup plus que ça !

Au cours de cette présentation, je vais vous expliquer quelques fonctionnement fondamentaux du DNS, et d'Internet, avec des exemples illustrés en Python, parce que c'est la PyConFr

À la découverte de la communauté libre autour de l'outil de gestion Odoo

Virginie Dewulf, Pierre Verkest

Room C03 − Saturday, November 2, 2024 at 2:00 PM − 55 min

Odoo est un outil de gestion d’entreprise avec un modèle économique open core.

En tant que libristes, nous sommes convaincus de la nécessité des outils de gestion libres pour les entreprises. Nous vous partageons nos convictions et nos expériences pour y arriver dans l'écosystème Odoo : Odoo S.A., l’Odoo Community Association (OCA), l’association Odoo espagnole (AEOdoo), l’association Odoo Italia, …

Tempête de boulettes géantes – le retour

Agnès Haasser

Room GAM − Saturday, November 2, 2024 at 2:00 PM − 55 min

Qui, parmi les développeuses et développeurs, n’a jamais gaffé ? N’a aucune boulette à raconter ? N’a pas d’erreur très embarrassante dans son historique ? Aucun·e. Comme le dit le dicton, il y a deux sortes de technicien·ne·s : celles et ceux qui ont déjà fait tomber un serveur, et celles et ceux à qui ça va bientôt arriver.

Je suis développeuse depuis bientôt 15 ans, j’appartiens résolument à la première catégorie. Laissez-moi vous raconter l’histoire de ma plus Grande Boulette de Tous Les Temps, et les Grandes Boulettes des autres. Rions un brin. Puis réfléchissons, apprenons, progressons. Laissons-nous illuminer par la pure essence des Boulettes pour progresser en tant que dev, en tant qu’équipe, en tant que personnes. Si, si, c’est possible.

Les gens ne savent pas ce qu'ils font, la plupart du temps !

Léa

Room GAM − Sunday, November 3, 2024 at 11:30 AM − 55 min

Quand on est enfant, on pense que nos parents savent tout, voient tout, peuvent tout ! Et puis on grandit et finalement on se rend compte qu'ils sont humains : parfois faillibles, parfois débordés, ou même fatigués !

Dans le monde de la technologie, j'ai été confrontée à la même illusion - l'idée que tout le monde maîtrise parfaitement son domaine. Cependant, comme pour mes parents, la réalité m'a rattrapée, et je me suis demandée, dans la colère de la desillusion, si tout le monde est fondamentalement incompétent.

Suite à cette prise de conscience, j'ai réalisé que non, les gens ne sont pas fondamentalement incompétents, mais beaucoup dissimulent leurs difficultés par peur. Peur d'échouer, peur d'être jugé, peur pour son emploi, ou simplement peur d'avoir l'air bête. Cette peur entrave leur progression individuelle et celle du groupe. C'est là que j'ai découvert la sécurité psychologique - créer un environnement où chacun se sent à l'aise pour échouer et apprendre de ses erreurs.

Dans ma présentation, je partagerai des méthodes concrètes pour mettre en œuvre la sécurité psychologique, que ce soit au sein des équipes ou au niveau des entreprises, en utilisant des exemples tirés de mes expériences. Venez voir comment accueillir les échecs et les erreurs peut stimuler la créativité, favoriser l'inclusivité et augmenter la productivité.

Faire du gRPC simplement avec Django

Léni Gauffier, Adrien Montagu

Room C02 − Sunday, November 3, 2024 at 11:30 AM − 55 min

gRPC ?

gRPC est un protocole RPC (Remote Procedure Call) open source et haute performance clé en main. Basé sur HTTP2 il fournit l'ensemble des fonctionnalités pour connecté plusieurs services supportant l'ensemble des langages les plus utilisés.

Django-socio-grpc

Afin d'utiliser la performance de gRPC avec la simplicité et le pragmatisme de Django la librairie Django-socio-grpc à été créé afin de reproduire la syntaxe connu de Django-REST-framework en remplaçant le protocol.

Why ?

  • Performance
  • Streaming clé en main
  • Sérialisation binaire
  • Multi langage architecture
  • Contrat d'API fort

Petit manuel de déminage de l’ORM Django

Roxane Bellot

Room C03 − Sunday, November 3, 2024 at 11:30 AM − 55 min

Depuis la nuit des temps, les Djangonautes manipulent leurs bases de données en utilisant l'ORM. Cependant, en abstrayant la réalité des requêtes exécutées, il est facile de tomber sur des pièges de performance qui alourdissent nos applications.

Pour éviter ces mines, nous allons nous pencher sur quand et comment la base de données est interrogée. Vous repartirez avec un maximum de clés pour désamorcer tous vos problèmes liés aux performances de l'ORM : quels sont les motifs à repérer ? Les outils à votre disposition ? Les pièges à éviter ?

Impostor Syndrome in Tech

Paweł Zajączkowski

Room PAM − Sunday, November 3, 2024 at 11:30 AM − 55 min

Do you ever get that awful feeling that you're not good enough to do your job? That you lack skills, intelligence and talent? That everyone around you knows what they're doing, and you just slip through by luck, chance, and appearing to be better than you really are? Do you live in fear that it's only a matter of time before someone discovers you're just a fraud?

You are not alone.

According to research, Impostor Syndrome affects almost 90% of people working in IT. In this presentation, I will unravel this phenomenon, explore why it is so dominant in our industry, how one gets into a vicious circle and where it can lead to. I will discuss how the awareness of simple mechanisms will help you see your competencies and what tricks to use to defy the demons of insecurity.

*May contain traces of rubber ducks.

Retour d’expérience : on a créé notre SaaS avec le CMS Wagtail

SebCorbin, Tristan Benier

Room C03 − Sunday, November 3, 2024 at 2:00 PM − 55 min

En 2023, RGOODS décide de lancer son service de formulaire de dons en ligne pour les ONGs et les associations. Afin d'accélérer le développement et ne surtout pas réinventer la roue, nous décidons de nous reposer sur le framework Django et le CMS Wagtail.

Dans cette conférence, nous vous présenterons donc Wagtail et ses principaux atouts, notamment techniques. En prenant des exemples de notre implémentation, nous vous montrerons ce qui fait de Wagtail un socle intéressant pour construire une application métier SaaS, hors de son cœur de métier CMS, et comment nos utilisateurs profitent de ses "killer features".

Nous aborderons également notre manière de contribuer au projet en retour.

Python et éducation : bien, mais peut mieux faire…

Claude Simon

Room C03 − Sunday, November 3, 2024 at 3:00 PM − 55 min

Quand il s'agit d'initiation à la programmation ou de son apprentissage, Python occupe une place de choix. Ainsi, c'est le langage retenu par l'Éducation nationale pour les spécialités « sciences numériques et technologie » (SNT, classe de 2de, obligatoire) ainsi que « numérique et sciences informatiques » (NSI, classes de 1re et terminale, optionnelle).

Cependant, force est de constater que, bien qu'en légère hausse, moins de 10% des élèves choisissent NSI en 1re (dont seulement 18% de filles), contre 25% en moyenne pour l'ensemble des spécialités. En outre, plus de la moitié délaisse cette spécialité lors du passage en terminale (plus de 2 sur 3 pour les filles).

Devant l'omniprésence des smartphones chez les adolescentes et adolescents (plus de 92% d'entre eux en possèdent un), ce désintérêt pour les sciences du numérique n'est-il pas dû à aux différences entre l'informatique telle que pratiquée dans ces spécialités et celle telle que vécue au quotidien avec son smartphone ?

Ainsi, les programmes soumis aux débutants à titre d'exercice ont généralement une interface texte, dont l'austérité tranche par rapport aux interfaces graphiques auxquelles les jeunes sont habitués avec leur smartphone, sans compter l'ergonomie comparativement moindre inhérente aux interfaces texte.

Par ailleurs, ces programmes sont peu ou pas adaptés aux smartphones. Quand bien même ils s’appuieraient sur une interface graphique utilisable avec un smartphone, les procédures pour les rendre accessibles depuis un smartphone sont d'une complexité ou nécessite des compétences hors de portée de débutants.

Au cours de cette conférence, vous verrez concrètement et pourrez expérimenter comment, au travers de technologies comme Brython ou PyScript ou de paquets comme term2web, EduTK ou tortoise, Python peut contribuer (encore plus) à rendre la programmation en particulier et l'informatique en général plus attrayante pour nos jeunes, filles comme garçons.

Qu'est-ce qu'il y a dans un virtualenv?

Denis Viviès

Room GAM − Sunday, November 3, 2024 at 3:00 PM − 55 min

L'utilisation d'environnements virtuels (virtualenvs) est la solution recommandée pour séparer ses dépendances en Python. Mais vous-êtes vous déjà demandé comment ils fonctionnaient? À quoi sert ce source venv/bin/activate? Après un rappel de comment se servir des virtualenvs, nous verrons leur architecture et comment ils séparent nos dépendances avant de voir d'autres solutions (Anaconda, pex, ...)

Créez une app mobile hybride à partir de votre application Django ou Flask avec Turbo Native et Strada

Thierry Chappuis

Room C02 − Sunday, November 3, 2024 at 3:00 PM − 55 min

Vous avez développé une application web avec Django ou Flask et vous souhaitez étendre son utilisation aux plateformes mobiles sans repartir de zéro ? Cette conférence vous montrera comment transformer rapidement et efficacement votre application web en une application mobile hybride en utilisant Turbo Native et Strada. Ces outils permettent de réutiliser votre code existant, simplifiant ainsi le processus de développement et vous permettant de bénéficier des fonctionnalités natives des appareils mobiles.

Turbo Native facilite la création d'applications mobiles en exploitant les technologies web que vous maîtrisez déjà. En combinant les capacités de Turbo avec Django ou Flask, vous pouvez développer des interfaces réactives et interactives sans sacrifier les performances. Strada, quant à lui, ajoute une couche de gestion des interactions spécifiques aux applications mobiles, vous permettant de tirer parti des fonctionnalités natives telles que les notifications push, l'accès aux capteurs et bien plus encore. Vous découvrirez comment ces outils peuvent s'intégrer harmonieusement à votre pile technologique existante pour créer une expérience utilisateur fluide et cohérente.

Au cours de cette session de 25 minutes, nous aborderons les concepts clés et les meilleures pratiques pour démarrer avec Turbo Native et Strada, illustrés par des exemples concrets. Vous verrez comment configurer votre projet, adapter votre code pour l'environnement mobile et déployer votre application hybride. Que vous soyez développeur web cherchant à élargir vos compétences ou simplement curieux de connaître les possibilités offertes par ces technologies, cette conférence vous fournira les connaissances nécessaires pour transformer votre application web en une app mobile hybride performante.

Django FTL: Resolving Bottlenecks on the Path to High Performance

Maxim Danilov

Room PAM − Sunday, November 3, 2024 at 3:00 PM − 55 min

Raw Django doesn't take the first places when comparing the performance of Python web frameworks. However, it can be pretty fast if we identify the bottlenecks and find ways to avoid them. Comparing performance and implementation complexity before and after gives us an understanding of which features should be implemented and what can be skipped.


The Django framework offers a beautiful collection of diverse tools that are easy to understand, set up, and start working with. However, after some time, appearing disadvantages of the framework's features may increase the complexity of the development process and fatally reduce project performance. While the new version of Django successfully improves the developers effictivity, the task to improving performance requires a good understanding of how Django works.

In this talk, I will review the most significant performance-reducing factors in Django and provide examples of how to avoid them.

Overview of the talk from a 10,000-feet view:

  1. Django vs. other faster frameworks: reviewing architectural differences.
  2. Request-Response Flow: Identifying elements that can be easily omitted.
  3. Forms and Data validation: Balancing flexibility and performance.
  4. The quickest methods for data serialization.
  5. Debunking myths about async-await productivity.
  6. Fire and Forget: FTL Client-Server Communication.
  7. Improving Time to First Byte (TTFB). Less known Responce classes.
  8. Reviewing other utilities to expedite our project.
  9. Q&A.

By comparing performance before and after, every developer attending this talk can decide which advice to implement in their own projects.