 Hi everyone and welcome to the April meeting from the Montréal Piton team. I'm Isabelle and I'll be your MC for tonight. On the agenda tonight, we have a little time for announcements. Then we're going to have a presentation on machine learning in robotics by Nicola Nadeau in English. Following that, we're going to have the module of the month, which is something we do each month and this event is going to be random. Then we're going to have an overview of the Python 2021 program with Philippe Gagnon in French. Announcements. The first important thing is that the next event MP86 is going to happen at 12 and not at 6 p.m. as we do usually because we have European guests. The program changed also a little bit. So make sure you check the meet-up to see the last version of the program. And for the next announcements, I'm going to give my friend Yannick a speech. Hi Yannick. Hello, hello. It's a pleasure to be with you tonight. And two things that I want to announce tonight. First of all, there are already three weeks. One month maybe. We had the introduction workshop and the Python programming. And it was very interesting. We had people who didn't know how to program at all that we learned how to program in Python. And we're going to have a practice evening next Tuesday at 9 p.m. So Tuesday the 27th, we're going to do essentially the exercises of this workshop. We're going to separate into small groups according to our Python caliber. And so if you start in Python, you do a little bit of programming. Well, come join us. We're going to take a series of exercises. We're going to group them up. And we're going to discuss. We're going to exchange programming advice. So a little pair programming evening in Python. And the second announcement is next month. The second half of the month from the 15th, we're going to start again to translate the Python documentation in French. There is Python 3.10, which is coming soon. But not before October. So we're going to finalize what we can do with the 3.9 doc during the month of May. We're going to familiarize ourselves with the tools and then in the month of October. Just before Python 3.10 comes out, we're going to give it a big blow. And then we're going to make sure to be maybe, with a little luck, the language, the best supported in the international translation of Python. I think that would be a good goal to give yourself. Merci, Yannick. We're going to go to the first part of the event, which is a presentation by Nicolas Nadeau. He's the executive and project director at Alody Robotics. And he's leading their expansion into North America. He's an engineer. He has a PhD in mechatronics, robotics and automation engineering that he did in Montreal in PTS. So that's pretty impressive. And I'm looking forward to sharing him about machine learning and robotics. Hi there. Thank you very much. All right. Hello, everybody. Thank you very much for having me tonight. Today's presentation is called Hardware in the Loop, Training Robot Contact in Unstructured Environments. And this is a topic that I have a lot of fun with. So let's get started a little bit about me first. I'm the project director at Alody Robotics. And as Isabel mentioned, I'm running the North American expansion and making the headquarters for the company in Montreal. The international headquarters is actually in Norway. In my spare time, I moonlight as a mentor for tech stars and founder fuel. And as Isabel mentioned, I did my PhD at ETS focusing on collaborative robotics and machine learning and did a bachelor's of engineering in mechanical and biomedical engineering at McGill. And so I typically find myself at the interface of hardware and software. And this is where robotics is really interesting. So I'm fortunate to have the opportunity to work at Alody Robotics and work on collaborative robotics specifically. And so we want to bring robots into the human world instead of changing the world for robots. And so this is very different from typical approach of industrial robotics where entire factories are built around the robots and the humans are often thought a second fiddle to that. So we have the dream of creating helper robots for home and healthcare. But that's a really hard application. So we're taking simpler steps and are starting with smaller applications in the human world such as security guarding, retail and food packaging. But while robotics is full of hard problems, my favorite problem with them and what I did my PhD on was physical human-robot interaction. So the guiding question is how do we make physical human-robot interaction safe? How do we ensure that when robots collide, contact and crash into humans that it can be as safe as possible? And I tried my best to solve this through my PhD but this guiding question led me to create some weird systems and some interesting architectures that we'll get into now. So the original idea of my presentation was to perform medical freehand ultrasound on human limbs using cloud robots. But I soon realized that just the physical interaction between the probe and the human body was a very interesting problem that needed more attention itself. And I found that pure motion control is definitely not good enough and that tuning the controller and all the parameters that are required for this physical human-robot interaction is not a trivial task. And realizing that every body part, every object the robot interacts with has different stiffnesses and properties, this would need a whole range of different types of tuning. And then I also was thinking when I dug in closer was, wait, this is all in an unstructured environment. How does a robot know what it's in contact with? Can I train the model to tell the difference between a leg and a table just by touch? How would the difference between a calf, a knee or an ankle? And so with a typical machine learning approach you would collect a lot of training data apply it to a model, get some output and some predictions, update the model, rinse and repeat until your model became more and more accurate and you call it a day. But where do I put the robot in this process? Where do I put the hardware? How does the hardware connect into this? This isn't just software. I can't write a for loop and let it all take care of it. And the really fun part was how do I implement communication between my Python data processing, data science and my machine learning stack and the Java controller that the robot was using. And so at least for the communication side, for me, GRPC was the answer. And so it allowed me to create a client server model between the robot and my Python machine learning data science stack. And so the robot was a server in the eyes of my data models and the training algorithms. And so the function callbacks from the optimization loops would actually call these like blocking server functions on the robot which would make the robot move in the real world and do something physical. And so the return value from these robot motions would actually be the collected sensor data sent back to the Python data stack. And so for those not familiar with GRPC, we define our service using a language neutral proto file that can then auto generate boilerplate code in basically every language. And so in this case, it was mostly Python and Java. And this is really nice and a lot of fun because it integrates great with CI CD so that all my services across my code bases can use the same core proto definition and their interfaces can stay in sync. And so in this particular example, which is a cleaned up version of what I was using, we have a service called robot service that has a move command. And so this is what the robot would be implementing on its end. It requires as an input an array of joints and returns a session result message. So this array and these objects are defined below and array of joints is just a repeated set of doubles. And in this case, I said this session result is just a status flag essentially. On the Python side, we get to use that boilerplate import it. So the boilerplate the robot control PB2 GRPC is auto generated by the CI CD that I have, you get to import this robot stub class and then just implement your controller client to connect to this class. And so this makes it really clean and simple from the Python side and sort of abstracts away the whole concept of connecting to the hardware. For the actual training and optimization, we can call this robot as if it were a simple function provider. We simply connect to the robot through the controller client class and call the services whenever we need. So we start off by constructing the client class, calling it within our callback objective function and it's just a regular function provider, nothing fancy. And so here in this example, I'm using SciPy's differential optimization with the callback function. So this is the custom callback function that you have to define is actually running a robot motion session, but that's all abstracted away here. And so the result is that this session will feed back a bunch of session result data that we then evaluate and turn into a single float that we're going to minimize. But all the robot connection part and all the robot motion part completely abstracted away. And so this is where this particular example was used in real life. And so the human body, it's deformable. It's a very complex surface. It's an unstructured environment. And this is all a safety concern and a challenge when creating robot trajectories and planning for control. And so I was trying to optimize for the smoothest bounce free motion along the limb while performing ultrasound. And so to tune these parameters, I tried using differential evolution with the robot in the loop. And so every time this evaluate fitness step is run, that's the actual robot with the Java controller being called from SciPy through GRPC to run a motion session with a given vector of motion settings. And so it responds back to the Python data stack with a session result filled with force sensor data that's then converted into my float measure of fitness or quality. And so through real world sessions with this robot, we tuned the motion controller for optimal and safe trajectories along this human leg. And so hundreds upon hundreds of sessions were performed generations of candidates and eventually we get to nice smooth motion with this experiment. So this was a lot of fun. And from an experiment design perspective, it was a big win to have something like this that I can simply set it and forget it, letting it collect all the data on its own and run sessions very much automated in a lot of ways. And for those who've done hardware engineering or robotics, experiments set up your overall setup of the hardware and all that that takes a lot of time. So anything you could remove the human from the loop in and really make it automated is a big win. And so this first experiment led me to another experiment that was much simpler, but very silly. Take a guess what I was doing here. I taught a robot how to poke. So robot medical ultrasound is an example of a task where simply stopping the robot on contact detection is probably not the appropriate reaction charging. We don't want to clamp the human down if the robot detects a collision. We want the robot to continue. And so the robot should have an awareness of the body contact location to properly plan the force control trajectories along the human body. And so here, this framework was trying to classify what the robot became in contact with through the force sensor data. And so the guiding question here was what was involved in the contact event? Not if a contact event occurred, not if a collision occurred, but really what was involved? Was it a thigh, a knee, a calf, an ankle? Was it the table? And so using the same architecture, I gathered data to train a classifier in this case to really figure out what the robot's in contact with. And so this was trained using trained data that programmed the robot to poke until a force condition was triggered and many different speeds, force conditions, all sorts of different things to randomize the data and the training a bit. And so all this was also built on the same communication architecture with the Python data stack in the GRPC where the data science machine learning side treated the robot as a server with callable functions. And it's a big win. We can set it and forget it. We can let the robot train itself, very much the Python side treating the robot as just a service provider. And so I could also easily test my code by mocking the robot's server from the client's perspective, just writing a mock robot that responds in the same way that a real robot might do, but not necessarily take as long because there's no motion happening. And so this allows for a wonderful separation of concerns and a more robust codebase as I could split the data science side completely from the motion side and develop the two in parallel without regressions or too much conflict. And so back on the application side and the machine learning, we turned to scikit-learn for a simple quick and effective pipeline. And so with just a half a second of forced data from a single axis, some pre-processing steps and a decision tree classifier, we were able to have the robot know what was involved in the contact event, not just a collision occurred. And so I think the overall accuracy of this was 90 plus percent of the robot really knowing what it was in contact with on a human leg. And so the code is actually quite simple too. And I love scikit-learn for getting applications off the ground running and to really start that machine learning journey. And it makes it absolutely trivial to create and train pipelines, even branching pipelines with multiple pre-processing steps, custom pre-processing steps. And so this lets us test our hypotheses very quickly and effectively, which is very important in hardware engineering and robotics. We want to get up and running tests things quickly because every change, every new experiment design has a lot of cost to it. And so beyond machine learning applications, I've used this Python data stack to connect through GRPC to hardware in a variety of applications, including robot calibration and laser systems. And so this particular, these pictures are from an experiment I did where I set the robot set and forget it to calibrate itself using the Farrow Ion laser tracker, which was also controlled through GRPC. So now we have the robot as an abstract service provider and this laser pointer as an abstract service provider all feeding back to our Python data stack. And so, well, part of this slide didn't load. And this is why I love this architecture for bringing hardware into the loop. It's scalable and testable. All these hardware devices become abstract servers that provide a set of callable functions to a client. The client doesn't need to know what they are or how they're implemented, which makes it great for testing and mocking. And the hardware controllers don't need to know anything about the machine learning or data science side of things or the application stuff. They just focus on what they need to do to properly execute their motions or their core robotic application. And so all my interfaces can also stay versioned and in sync with this auto generated boilerplate and proto files. And from a hardware engineer perspective, my experiment design and set of times greatly reduced through this automation and well-defined APIs and interfaces between my Python data science machine learning side and the robots and what they do. So thank you very much, everyone. I really appreciate the opportunity to present what I think is some of the most fun things I've done recently. You can get in contact with me here and just an FYI for everybody, we are on a hiring spree at Holodea. And as I mentioned, I'm building North American HQ here in Montreal, but we do try our best to hire the best people no matter where in the world they're located. So thank you very much. Well, that was super interesting, Nicolas. Thank you very much. And I'm going to hand it over to Yanik for some questions. Hello, Nicolas. Everyone, you can ask your questions here on YouTube that you're probably watching right now or on Slack. So both locations are excellent for questions. I will relay them out loud to Nicolas. So everyone can ask your questions on the chat on YouTube or on Slack, on the channel Meeting. And then I'm going to relay these questions to Nicolas. I have a question, Nicolas. So that leg that you showed us, it's kind of assumed that there are bones in there or things that are harder to poke. Can you just give us an overview like how is that thing built and how realistic it is compared to a real leg and how close were you to put your real leg there to be subjected to the poke? Yeah, so that leg was a medical leg. I did not build it. You could buy that online from medical sites. It had full bones articulations to represent a real limb in an ultrasound application. So you can buy these human body parts, these mannequins to train yourself in ultrasound. So you could go on these websites and buy torsos and arms and legs to learn how to do medical procedures. I did not put my leg into that. I put my arm because it would be a little awkward to get my leg up on that table and do things. Excellent. We have a question on Slack. So what if the person moves? Yeah, so the joys of the PhD is trying to focus as much as possible on like the smallest problem. So you actually finished the PhD one day. The person moving would have been taken care of by some sort of external tracking system. So usually we would use... You can get like infrared trackers and things like that using vision systems to track the body motion. There was some research being done on basically doing semantic segmentation of the leg using machine vision to track where it is. And so you can do some visual surveying between the robot and the leg so that your frame of reference between the two remains constant. This particular example is completely out of the scope. Excellent. Another question on Slack is how do you manage if... How do you manage with all the different body types? Yeah, so like somebody a little... It's a shrubbier, somebody a little bit skinnier. That gets more bony. Yeah, so I'll start with body type in terms of just the leg. I focused 100% on the leg. One reason for that is in the robot safety and risk assessments, the leg is one of the safer areas to do robot motion around compared to the head or chest. And in terms of body types in terms like people's different weights, sizes, densities, that's what the whole point of this... Especially the first one I presented where training the motion tuning parameters to be able to be updated in real time. That way, depending on... You can set and calibrate a baseline motion control but then when you can implement it to other systems in real time, you hopefully have more capability to update your motion tuning in real time using some sort of background continuous learning algorithm. Excellent. And... Oh, very interesting questions on Slack. Are there any applications that you foresee for animals or pets soon? Yeah, so... Let's take robotics as a whole. I did work on about eight, almost 10 years ago, maybe. Neurosurgical robots, actually using a robot here made a Montreal for Mechanic using these robots to perform neurosurgery on small animals and to basically improve what the pharmaceutical industry is already doing to increase safety and have better outcomes for animals in that world. We did some work on saving labradors with deep-brain simulators to help them with Parkinson's disease and there is a lot of work being done probably not as much out in the public but there is a lot of work being done in that world. Excellent. I'm afraid that's all the time we have for questions now. Hopefully you will be able to join us for the virtual happy hour so I guess that would be one place where people can ask you questions. And please repeat your contact information so that people have more personal questions. I could flip back to the slide if you want to pop the slide back up. I have my website, NicholasNado.com Enginado on Twitter and Nado on GitHub. Thank you so much. Thank you. Merci Nicolas, merci Yannick. On va passer à la deuxième étape ça va être une présentation du module du mois. Un nouveau bénévole qu'on a chez Montréal-Piton qui s'appelle COAM et il est aussi nouveau avec Piton parce qu'il était avec nous pour l'atelier d'introduction à la programmation qu'on a organisé le mois dernier et le voici qui est déjà en train de me présenter le module du mois. Bonjour à tous, hello everybody. Bienvenue pour cette présentation du module du mois, Montréal-Piton. Ce module sera le module random. Je peux vous promettre que c'est vraiment de manière aléatoire que j'ai été choisi pour faire cette présentation. On va aller, disons, dans le vif du sujet de montrer la page de la documentation pour notre module random. Module random va nous permettre de générer des nombres pseudo aléatoires de pouvoir obtenir de manière aléatoire des nombres au mieux même des chaînes de valeur. On va vous présenter le code que nous avons préparé pour cela. La première partie, ce sera de vous faire un premier print random. Avant cela, on doit importer notre module et ensuite, on fait un print pour voir le résultat. On va venir l'exécuter ici. Comme on peut le voir, le random va choisir une valeur entre 0 et 1, toujours, je fais comme cela. Ensuite, au fur et à mesure. La deuxième fonction que je tenais à vous montrer que je trouvais vraiment assez intéressante, je viens directement ici, c'est le random uniform. Je vais juste commenter cette partie et présenter cela. Ensuite, il va renvoyer un nombre aléatoire avec une flotante et il va s'assurer que notre nombre s'étouffe entre 10 ans pour se tester le 5 et le 9. On vient là, tester notre code. J'ai oublié de commenter le premier random. Je vais le commenter rapidement comme cela. Je viens ici. On voit avec le random uniform qu'il va toujours choisir une valeur, un nombre flotante entre le 5 et le 13 que nous avons mis à l'intérieur. Ah plutôt, le 5 et le 9. La deuxième fonction que je tenais à vous montrer que je vais vous montrer les fonctionnalités de random. Je viens là, je commence le code. C'est le random, qui lui, en fait, cette fois-ci, il va nous envoyer un entier, mais toujours de manière aléatoire. Donc, j'ai préféré choisir un entier qui se trouve entre 5 et 20 pour cette partie. Donc, on va juste changer, entre 4 et 18. Je viens là, toujours. Cette fois-ci, il nous envoie un 10. Ensuite, un 8. Autre fonctionnalité que j'ai toujours trouvé assez intéressante avec notre module du mois, random, il dispose aussi d'une fonction pour des séquences. Donc, on peut déterminer ici une liste de séquences. Et on va choisir de l'imprimer cette manière. Et nous avons une liste de séquences qui va, on va mettre 10, 20, 30, 40 et 50. On vient là, et toujours, si je l'exécute, il a choisi 50, après 40, au fur et à mesure, et vraiment toujours de manière aléatoire. Donc, on peut faire ça de séquences. On peut aussi réussir cela pour des valeurs. Donc, je viens plutôt mettre ça en commentaire. Et je vais faire ça pour une chaîne de caractère. Donc, je vais venir venir fâcher ici. Et quand je vais venir exécuter le pouce, excusez, je ne sais pas. Ok, là, ça va. Hop, désolé, je suis bruit. Donc, il nous a choisi B de manière aléatoire. Donc, vraiment, c'est toutes ces petits modules qui sont disponibles, toutes ces petites fonctions qui sont disponibles dans notre module, qui nous permettent d'avoir des éléments assez intéressants. Je tenais aussi à vous montrer ce bout de code Rondon String qui va nous permettre de générer si ce n'est pas possible. Ça doit être utilisé. On importe toujours notre module Rondon et ensuite le String. Notre module String si je viens là, j'appelle juste cette fonction. Ok, de manière aléatoire. Donc, c'est vraiment ces petites fonctionnalités qui sont dans notre module du mois qui nous permettent de générer soit des valeurs aléatoires ou même des chaînes des caractères. Je voulais aussi ajouter que le module Rondon a été utilisé pour obtenir le mot de passe, pas le mot de passe, mais plutôt le nom de Montréal Piton et aussi, il peut permettre de choisir des images. Donc, pour cette partie, j'ai décidé de vous montrer de manière aléatoire, qu'est-ce que le code va choisir pour ma présentation. Donc, je vais juste m'assurer du nom code est ici. Donc, en fait, j'ai juste mis 2 images à l'intérieur d'un dossier et je lui ai dit d'aller choisir de manière aléatoire et de faire sortir cette image. Ok, ça c'est l'image de moi en quelque sorte. Donc, croyez en train d'écrire un grand code mais en temps, c'est Stack Overflow qui m'a vraiment aidé sur cette présentation de toute la team de module de Montréal Piton. Donc, je vous remercie et j'espère que vous avez vraiment appris quelque chose avec ce module du mois et que cela va vous motiver à aller lire la documentation et de faire vous aussi vos tests. Merci à vous et on est à tout à l'heure. Merci quoi. C'est vrai qu'on utilise ce module pour choisir les noms à tous les mois. Le nom Koala Poli, il est fait avec un script et dans ce script, on utilise le module Random. On va passer à la suite et ça va être un overview du programme de la conférence Python US 2021 qui aura lieu le mois prochain. Donc, vous savez déjà, c'est un énorme rassemblement de toute la communauté Piton. Il y a des conférences, il y a des tutoriels, il y a des sprints programme, committee, teacher. Je ne sais pas vraiment comment traduire. Bonjour à tous. Mon nom c'est Philippe et j'ai été évité ici aujourd'hui pour vous parler de la programmation de Python US édition 2021. Donc, je commence par une petite introduction. Encore une fois, moi c'est Philippe. Je travaille présentement pour Astronomer et on a des organisations à adopter Apache Airflow pour leur besoin d'orchestration de flûte donnée de diverses. Je suis base à Montréal puis précédemment, j'étais avec la case de déploie de placement du Québec dans l'équipe d'analytique de portefeuille puis thinking capital en enterprise data. Depuis deux ans, je fais l'responsable du comité de programme de Python US. Donc, j'assure la coordination d'une équipe d'environ 16 volontaires qui essentiellement traite les submissions de présentation pour la main track de la conférence. First, je m'implique dans les projets Apache Airflow puis Trino, plus particulièrement mais aussi dans votre truc de manière ad hoc. Puis, finalement, je suis un grand fan de l'application avec des stickers au grand désespoir de mes patrons. Donc, comme je disais, je vais vous parler de Python. C'est quoi Python? C'est le plus grand rassemblement annuel de la communauté mondiale depuis temps. Dans une année normale, on rassemble environ 3500 participants dans une velle américaine cette année. C'est pas une année normale. Contrairement aux autres conférences locales, régionales ou nationales, Python US, c'est l'événement flagship de la Python Software Foundation. Donc, la conférence est organisée, financée directement par la pièce. Ensuite, les revenus générés par la conférence servent à financer les activités de la fondation. Comme, par exemple, promouvoir Python sur la scène internationale, héberger puis opérer PyPy d'accorder du financement aux activités des User Group Locos puis, plus généralement, sur la croissance d'une communauté internationale diverse de programmeurs et de programmeurs, Python. C'est une conférence qui accorde beaucoup d'importance puis qui vise beaucoup à promouvoir la diversité au sein de la communauté. Puis, on suit très près le code de conduite de la fondation, évidemment. Donc, cette année, comme l'année dernière, la conférence aura lieu entièrement en ligne contenue des circonstances exceptionnelles auxquelles on fait tout se passe. Par contre, cette année, contrairement à l'année dernière, on a eu l'opportunité de préparer l'opinement conséquence. Donc, on a l'ambition d'offrir une expérience en ligne de première classe aux participants. Il y a beaucoup d'efforts qui ont été mis là-dessus pour y arriver. Donc, on a préparé un contenu de qualité non seulement dans la programmation principale dont je m'occupe plus particulièrement mais aussi au sein des différents sommets qui regroupent les maintainers de différents packages de l'écosystème Python. Le language submit qui essentiellement regroupe les impérimentateurs des différentes impérimentations Python pour discuter de l'avenir du langage. Puis, le education submit aussi, puis etc. etc. Education submit qui s'explique par lui-même. On propose des opportunités networking que ce soit en un courant avec les sponsors de la conférence, que ce soit au sein du job fair virtuel qui va être organisé ou plus généralement avec les autres participants. C'est sûr qu'on ne peut pas créer l'attentivité d'un contact en personne mais on cherche vraiment à offrir les next best-in pour cette édition 2021. Donc, on a aussi organisé des événements sociaux virtuels. On a, par exemple, l'atténu de la Famer's pilot des auctions en virtuel. On a aussi donné une course 5k qui est aussi traditionnelle à la Python mais virtuellement cette fois-ci. Bref, pour revenir à la programmation principale, la conférence se déroule du 12 ao 18 mai 2021 puis le rrc de 11h a.m. jusqu'en soirée sur les derniers jours. Les deux premiers jours de la conférence sont consacrés aux tutoriels qui sont des blocs d'une demi-journée avec un instructeur auquel on peut s'inscrire pour un frais supplément par la conférence. Puis, dans les deux prochains jours de la présentation. C'est l'événement principal de la conférence puis, comme je sais, c'est de ça que je m'accueille avec mon comité de longtemps. Finalement, les deux derniers jours sont consacrés à des sprints de la communauté dans lesquels on travaille conjointement avec un projet open-source avec un mentor puis un groupe essentiellement par Zoom et des Squares. Donc, maintenant, je pourrais vous parler du programme en tactile. Cette année, on a reçu 326 soumissions de propositions de la présentation. C'est environ 2 fois moins que dans une année normale. Par contre, cette année, on est aussi en mesure d'accepter 42 présentations. Puis, en général, on a présenté 95, donc le ratio reste assez similaire. Donc, oui, on a passé plusieurs mois à réviser puis à décortiquer les propositions pour créer un programme varié. Les sujets sont variés, mais ils sont tous les habitants. Ici, j'ai fait un petit breakdown des statistiques concernant les différentes catégories de talks qu'on a acceptés. Donc, c'est vraiment des catégories super diverses. Donc, on pense d'applications scientifiques, des applications plus générales. On a des talks sur le langage en tant que tel, les différentes fonctionnalités qui ont été développées durant la dernière année d'amplitons en tant que tel dans C-Python. Évidemment, plusieurs talks, plans, state engineering, pratique de développement plus général. On a des talks sur la communauté, sur le développement de carrière puis son développement professionnel, sur la documentation, système distribué, pratique de DevOps, etc. Bref, c'est super varié, puis le préfet le conducteur en réalité, c'est que toutes les conférences ont comme sujet principal, Python. Donc, le programme principal s'étend essentiellement quatre blocs et sur quatre tracks plus les workshops sponsorisés. Au début, j'avais eu l'ambition d'essentiellement retranscrire le programme au complet dans ma présentation, mais tout simplement pas réaliste, donc on peut le regarder ensemble sur les sites internet à la place. Essentiellement, la 14 mai de la première journée, on commençait aux heures avec une présentation d'essentiellement accueillir les participants. Puis ensuite, 20 minutes plus tard, on passe au premier keynote. J'ai aucune idée encore qu'est-ce que c'est moi non plus. Après le keynote à 12h15, on commence les présentations en tant que tel. Puis essentiellement, les présentations, c'est sur deux jours, en quatre blocs. Puis il y a les workshops sponsorisés, les trois tracks principales, ou Charles, je ne sais pas exactement comment le prononcer comme il faut, mais essentiellement, c'est des talks en espagnol, parce qu'il y avait de la demande puis de la disponibilité pour l'affaire. Juste à noter que les tracks ici sont plus ou moins thématiques, parce qu'en général, j'essaie de garder les sujets qui sont ralliés ensemble, mais aussi les dispersés un petit peu à d'autres moments au sein de la conférence pour permettre, par exemple, un participant qui a un intérêt particulier pour un sujet donné, un empêchement en un moment particulier de voir des présentations qui intéressent puis aussi pour des raisons logistiques parce qu'on fait des soaps de rares pour accommoder certains présentateurs. Bref, après un vote de présentation, on passe à 1h55 au Virtual Export, ça permet aux gens de networking puis d'interagir avec différentes entreprises ou différents projets qui font partie de communes au tépidon. Trois heures, on a un petit break, puis ensuite, on repasse le programme principal jusqu'à 5h45 ou le deuxième quinaulte va avoir lieu puis, par la suite, ça va être suivi The Lightning Talks, qui sont essentiellement des courtes présentations de 5 à 10 minutes dont je m'occupe pas, mais qui sont généralement super intéressantes aussi. Fin d'après la journée à 7h55 ensuite, deuxième journée du programme principal, on commence à en avoir 45 avec The Lightning Talks le plus officiel de la journée avec le troisième quinaulte puis ensuite de 12h15 jusqu'à 2h on a encore un bloc de talks plus traditionnel. Juste à noter qu'ici, dans la deuxième journée, on a 4 tracks principales puis pas de Charlest parce qu'il y en a tout simplement moi. Donc bref, le troisième bloc dure jusqu'à 2h00 p.m. sur la deuxième journée puis ensuite on retourne au Virtual Explorer avec des nouveaux participants pour une heure jusqu'à la pause de 3 heures puis, par la suite de 4h00 jusqu'à 5h45 on assiste au dernier bloc de la conférence principale puis, finalement, on a le dernier quinaulte de la conférence puis le mot de carme-sœur suivi du Paris des Hutchins qui est le principal de la conférence c'est comme ça qu'ils vont se décliner puis, finalement pour fermer, je voulais présenter quelques highlights de talks c'est juste mon opinion de présentation qui je pense vont être très intéressantes à la conférence donc la première dont je voulais parler ça peut être python performance at scale making python faster at Instagram tout simplement parce que traditionnellement c'est internet application slash c'est internet qui reçoit le plus de trafic au monde qui est entièrement développé en python donc, en général c'est vraiment intéressant parce qu'il faut un deep dive sur les modifications en langage assis python littéralement qui peut faire pour, justement, rendre le langage plus performant pour parce qu'il y a vraiment des angels de scale extraordinaire deuxième présentation qui a attiré mon attention ça s'appelle testing stochastic air models with hypothesis par Marina Schwartz tout simplement parce qu'à hypothesis c'est un module de testing stochastic que je trouve particulièrement intéressant à utiliser ça permet de couvrir les edge cases auquel qu'on pensait tout simplement pas des fois puis nous permet de faire un surface et des erreurs qui ne sont pas nécessairement éblants troisième, un statistical typing a runtime typing system for data science and machine learning called Niels Van Tilan parce que je trouvais l'idée intéressante étant le système de type pour essentiellement être capable de représenter des types statistics paraître une idée intéressante puis je vais vous avouer qu'à lire la description de la présentation j'ai pas vraiment compris exactement tout ce qui était décrit mais je pense que ça va être vraiment intéressant puis finalement the road to pattern matching in python par Tobias Kahn parce que tout simplement c'est Python 3.10 on a PEP 6.36 qui va être implementé et puis essentiellement ça va emmener la full standard structural pattern matching à Python puis c'est le highlight de ce program donc c'est essentiellement ce dont je voulais parler au plaisir de vous voir la conférence virtuellement puis si vous avez des questions Super merci Philippe merci d'avoir partagé tes recommandations highlights perso ça donne notre personnel et c'est cool je vais donner la parole à Yannick comme tantôt pour les questions pour votre travail sur le programme que vous avez sorti et super existant donc c'est très apprécié tout le monde peut poser vos questions sur Slack ou sur Youtube puis je vais les parler à Philippe de Vvoix et everyone you can ask your questions on Slack or on Youtube and I will relay them to Philippe j'ai une question Philippe en fait j'ai plusieurs questions personnellement mais je vais donner la priorité à nos visionneurs qui posent des questions donc avec le programme que vous avez sorti les présentateurs sont tous top notch vraiment impressionnant comment est-ce qu'un pardon moi l'expression un mortel ou un mortel peut arriver à un moment de vous donner parler à Picon qu'est-ce que c'est quoi vos critères de sélection et puis comment est-ce qu'une personne peut s'approcher d'avoir des sujets qui sera pertinent pour une conférence comme ça en termes de sujets pertinents tout sujet qui sera proche de près ou de loin à Python que ce soit une présentation qui est super technique ou quelque chose qui rallye à la communauté c'est définitivement quelque chose qu'on va vouloir avoir la conférence évidemment il y a un souci de qualité de la présentation qu'on va regarder au niveau de l'analyse des soumissions puis ensuite qu'on va regarder c'est essentiellement c'est d'avoir la possibilité de créer un programme qui est varié puis qui va répondre aux intérêts des gens qui assistent à la conférence en fait donc c'est pas mal ça les critères qu'on regarde en termes de sélection ensuite essentiellement les gens font leur soumission de propositions de présentation de la même manière qu'ils font dans toutes les autres conférences certainement on lance la paix de propositions puis on a nos gens de nous préparer une petite proposition de présentation, c'est-à-dire de donner le titre de la présentation et créer un abstract puis de donner un outline aussi de la présentation, c'est-à-dire des bullet points avec un timing approximatif de ce dont tu voudrais parler puis ça y est beaucoup les riviseurs à prendre la décision par rapport à est-ce que la présentation devrait être acceptée ou non? Excellent, donc si you understood what you were explaining there are almost more points on the presentation structure than on the identity of the presenter or the presenter Yes, exactly. How does the process of selection work in general? Essentially we receive the propositions and we evaluate them as they are received in general people don't want to be presented near the deadline, it's quite normal and we understand it very well to be able to accept this presentation if it comes before. Then, how the review of the propositions is done internally is that we have two selection rounds in the first round we evaluate the quality of the submission and from that during the first round, the evaluators don't have access to the identity of the person who made the submission so the first round is completely blind at the level of the person who is receiving and then in the second round the presentations that have been accepted at the level of the first round will be re-classified and the second round is not blind by the way, we have the identity of the person who made the submission and from that moment on we make decisions not necessarily depending on the presenter but rather on the score that the presentation received in the first round but simply in the idea of creating a conference a conference program that is diverse and that will interest people. Excellent. I remind people that don't bother you on Slack or on YouTube but since there is no question, I take the opportunity to ask one of my questions In the years past there was a rather interesting opportunity if we were not accepted we can submit a lighting talk that was accepted the day before will it be similar this year? Yes, I think the system will be in place Excellent, excellent we give a question here let me see and no, it's not a question it's not a question either so the program is on four tracks obviously it's difficult to separate our attention on four different subjects will we have the opportunity to see these videos in different modes? Yes, all the videos will be posted on YouTube after the conference Excellent. We still have to register at the conference, we want to participate in other activities than to watch the videos or will they have a delay to post the videos on the conference? I'm not sure but to participate in the live event you have to register at the conference there is a pre-nominal of $100 USD but this year we have the Financial Aid program so depending on the needs of each one it's possible to simply not have free resources and it also allows us to offer financing and presenters for example to buy self-visual materials to present quality presentations Excellent It covers my questions I don't have any questions I think people are reviewing the program and wondering what they're going to see and I'm going to pass the floor to Isabelle to conclude this event Thank you Philippe Thank you to all of you We'll see you at 5.7 That's the end of our event Thank you to everyone who participated As usual, we have a lot of satisfaction to be in the YouTube description and we'll also share it on Slack just after So we'll go to the 5.7 virtual, it's on JT the same link, there will be one in the YouTube description and one on Slack Here is a small reminder for all the people who are doing the program and I think it applies to life which will be our little phrase that we will use at the end of each event This of doubt resists temptation to guess It's easier to say than to do