Conférences

Conférences


Programme

Solving Python Cold Start Issues in Cloud Infrastructure

Par Denys Makogon − Salle Alfred Wegener − Samedi à 10 h 30

We all do cloud applications, no matter if they were built with the cloud (an app that consumes cloud services) or for the cloud (an app that was designed to run within cloud/container). The only thing that we, as Python community, haven’t talked out loud is imports performance that is so critical for business especially when you run your own business and cloud provider charges your own credit card.

Until Python 3.7 it was quite challenging to profile application code dependencies and imports specifically. With a new imports profiler, Python developers can measure how much time each import takes at the startup. The interesting thing, a new profiler opened the whole new Python problem - cold start issue. In this talk, we will go through one very challenging case: Python in serverless and why most of the Python libraries were never been designed to start fast.

If you’re going to attend this talk you’d get the following key takeaways:

and my favourite ones:

Zero to Blockchain in 30 minutes

Par Carine-Belle + Yonatan − Salle Alfred Wegener − Samedi à 11 h 00

We will build a working blockchain with all the basic functionality, and deploy our own currency, pyconCoin - from scratch.

Let’s take a complicated topic, break it up into simple building blocks, and connect the dots in our favorite way - by implementing them in Python.

It's incredibly cool to see how easy it is to create things that sound relatively complex.

No understanding in blockchain is needed for this talk.

Turning Spatial Data into Arrays: Python Coming Handy for GIS People!

Par Julie Pierson − Salle Alfred Wegener − Samedi à 12 h 00

GIS software is used to analyze spatial data. In some cases, GIS data can be voluminous and Python can come in handy.

Such a case will be described here. I was trying to visualize superpositions between rectangular extents (a lot of rectangular extents !) and found QGIS and PostGIS too slow for the job (although I must say I'm no PostGIS guru). I then used Python to convert my extents into arrays of 0 and 1 and could add them all in a few minutes, and visualize superpositions by turning the resulting array into an asc file. Sorry if this is not quite clear, it's easier to explain with a few pictures, as often is the case with spatial data !

I then tried to substract 2 of the resulting asc files to visualize the evolution between 2 dates, and stumbled upon a problem in Python : the files were too big to be held in memory. A developer helped me solved this problem and I undestood better how memory is used in Python and how to hold in memory only one line of a file.

All in all, this is a story about GIS people venturing into Python programming !

Scripts can be found here : https://github.com/UMR-PASSAGES/metadata-extents

The Joy of Creating Art with Code

Par Neeraj Pandey − Salle Alfred Wegener − Samedi à 14 h 00

Art is everywhere and it’s beautiful. Unleash the creative artist inside you with the beauty of Generative Art. Learn how algorithms are used to create these aesthetic art forms, how motion and structures emit sounds and what toolkits are required to do so. The talk will take the audience to a small history of Generative Art and how autonomously these art forms are created using algorithms with various examples using Processing, Numpy, PyCario and more.

Computation Techniques for Encrypted Data

Par Gajendra Deshpande, Shrirang Kulkarni − Salle Alfred Wegener − Samedi à 14 h 30

The session begins with a discussion on homomorphic properties of cryptographic algorithms such as RSA, Elgamal, Paillier, Elliptic Curve and Gentry's Cryptosystems with demonstration. The session discusses the concept of recryption for secure computation. This session also discusses a case study on how machine learning technique can be applied on encrypted data for secure computation and protecting machine learning model. Finally the utility of homomorphic encryption for block chain will be discussed.

Python et la CAO

Par Philippe Boulanger − Salle Alfred Wegener − Samedi à 15 h 00

Python est un langage qui permet de laisser libre-court à son imagination: même la CAO, un domaine plus souvent couvert par le C++, est accessible aux développeurs Python grâce à pythonOCC (merci M. Paviot). FreeCAD est le parfait exemple d'application scriptable en Python. Mais il y a aussi Blender ou les outils de C4W-Digiléa et bien d'autres...

RedisGears

Par Itamar Haber − Salle Alfred Wegener − Samedi à 16 h 30

Redis is an in memory, key-value, database written in C. The main advantages of Redis are performance, simplicity and extensibility. It introduces some common datatypes (like Strings, Hashes, Lists) and allows you to query the data using simple commands like GET/SET which retrieve the exact key you were asking for or allowing single key in-place update

One shortcoming of Redis is that it does not support cross-key/cross-shards aggregation queries, while there are several use-cases in which users might want to e.g count how many times a property appears in subset of all hashes or group by some value and return a unique count.

In order to achieve these things a user usually has three patterns he can use: 1. Retrieve all the data from the Redis and run the aggregation on the client side. 2. Analyze the data by another system like spark/hadoop and perform those queries there. 3. Use Redis embedded Lua capabilities and write some lua code that performs the aggregation on the server side.

The first and the second option require moving all the data over the network. While the third option is good for a single Redis server, but it does not support clustering and requires writing a Lua script which is not a common programming language that most engineers/data scientists are familiar with.

In the last couple of months we, at Redislabs, developed a new programming module called RedisGears. RedisGears utilizes an embedded python interpreter to allow the users to run their Python based Map-Reduce on Redis. The API allows to the user to perform aggregation queries on all or part of the data by defining python lambda functions that will be executed on all or part of the data in Redis.

RedisGears uses an internal CPython C API like sub-interpreter and GIL handling to allow environment distinction between different Redis clients executions. In addition RedisGears uses the CPython API to expose inner Redis capabilities via a Python script (like command execution and internal modules integration).

Last, following the Streams support in Redis, it also supports Streaming API processing, allowing the user to trigger a Python based execution plan on a Stream event.

Monitoring : de rien à bien

Par Guillaume Ayoub, Lucie Anglade − Salle Charles Darwin − Samedi à 10 h 30

Mettre en place des gros outils de monitoring peut être assez complexe, surtout lorsqu'on n'a que quelques sites à surveiller. À partir de ce constat, nous avons décidé il y a quelques années de développer nos propres petits outils libres de monitoring en Python, simples à installer et à maintenir.

Boîte à outils Python de l'expert CTF

Par Mathis Hammel, Hugo Delval, Nicolas Bonfante − Salle Charles Darwin − Samedi à 11 h 00

Lors de cette conférence présentée par trois passionnés de compétitions en cybersécurité, nous vous parlerons de tous les outils et astuces que nous utilisons pour décrocher la première place !

Les grandes thématiques abordées seront :

Data center DIY avec Python et Raspberry Pi

Par Arthur Vuillard, Samira Rabaâoui − Salle Charles Darwin − Samedi à 12 h 00

À des fins expérimentales, nous avons monté un micro data center dans la cave de l'immeuble de bureau. L'objectif de ces expérimentations est d'amener plus d'écologie dans l'hébergement de services informatiques. Pour ce faire, nous nous sommes appuyés sur ce que nous savions faire : du Python, du logiciel libre, du Do It Yourself, avec en particulier le µ ordinateur Raspberry Pi.

Nous allons vous présenter les idées que nous avons eues, leurs mises en oeuvres, les problèmes rencontrés et les perspectives pour la suite. Nous parlerons en particulier du dispositif pour surveiller la température dans la pièce et évacuer la chaleur, du dispositif pour suivre la consommation énergétique, et de l'orchestration des services installés sur les serveurs.

Après Jupyter notebook, voici JupyterLab

Par Maxime Morinière − Salle Charles Darwin − Samedi à 14 h 00

Le notebook de Jupyter est un grand succès, si bien que certains y voient le nouvel Excel. La version 1.0 de son successeur, JupyterLab, est sortie cet été. Après un rapide coup d'oeil des nouveautés visuelles et fonctionnelles, je présenterai quelques cas d'utilisation que j'ai apprécié, spécifiques à JupyterLab ou non (édition LateX, visualisation de cartes, utilisation de nbformat pour créer des notebooks de manière programmatique, conversion en pages de documentation avec nbsphinx, ...). Je donnerai enfin quelques références utiles et parlerai d'autres projets reliés à l'écosystème jupyter que je n'ai pas encore testé mais qui me semblent intéressants à suivre.

Comment j’optimise ma sécurité avec mes ressources mentales limitées

Par Nina Cercy − Salle Charles Darwin − Samedi à 14 h 30

54 secondes, c’est le temps qu’un être humain moyen passe chaque jour à choisir ses chaussettes. Sa sécurité informatique ne devrait pas lui prendre plus de temps. Pourtant, les injonctions sont légion : un mot de passe par application, de préférence avec des chiffres, des lettres, Julien Courbet et des caractères spéciaux ; le tout stocké dans votre mémoire s’il vous plaît - ou dans un gestionnaire de mots de passe, mais, horresco referens, pas dans le cloud !

Dédramatisons : ce qui compte vraiment, c’est de savoir ce qu’on protège, de qui on le protège et comment on le protège. Ici, on se concentre sur le mot de passe, avec un framework mental qui vous apprendra à vous poser les bonnes questions en moins de temps qu’il n’en faut pour dire socquettes.

Brancher Anyblok à 14 ans d'historique métier

Par Jean-Sébastien Suzanne, Hugo Quezada − Salle Charles Darwin − Samedi à 15 h 00

AnyBlok est un framework python open source, dont l'objectif est de faciliter le développement d'applications métiers. Il est basé sur des librairies python réputées telles que : SQLAlchemy, Pyramid ...

En prod depuis 3 ans, résultat de 6 ans de travail de son créateur Jean-Sébastien Suzanne, passionné et persévérant, il a basé ses travaux sur plus de 15 ans d'expérience en développement d'applications métiers.

Retour d'expérience sur la reprise progressive d'une application PHP avec 15 ans d'historique, en python et en utilisant la même base de données. Quelles ont été les évolutions à apporter à AnyBlok et comment AnyBlok nous a facilité la tâche.

Configurez / tracez / débuguez votre noyau Linux avec Python

Par Fourcot Florent, Victorien Molle, Charles Daymand − Salle Charles Darwin − Samedi à 16 h 30

Le noyau, le système, le débug noyau, sont des sujets habituellement associés à des langages bas niveau (avec omniprésence de C). C'est assez limitant, coûteux à maintenir (imaginez de l'export JSON sur toutes les commandes réseaux). Moins connues d'autres solutions existent, surtout avec Python.

Chez Wifirst (un opérateur Internet), nous n'utilisons que Python afin de configurer nos routeurs : VLANs, routage, namespaces, IPSet, QoS. Y compris pour des sujets émergents, comme les fonctionnalités eBPF et même XDP.

Cette présentation présentera les outils et bibliothèques (pyroute2 / bcc), comment nous les utilisons aujourd'hui mais aussi comment contribuer afin d'ajouter de nouvelles fonctionnalités à ces bibliothèques. La présentation comportera trois parties :

Présentation de Pyroute2: Pyroute2 est un module python permettant principalement de piloter la configuration réseau (création d'interface, adressage IP, gestion de la QoS, contrôle du part feu) sur Linux via des sockets Netlink. Netlink étant de plus en plus utilisé, d'autres sous-systèmes du noyau (par exemple quota) sous également joignables par ce moyen.

Présentation de BCC: BCC est une boite à outils gérant plusieurs langage notament python et permettant d'ajouter des filtres eBPF dans le noyau linux pouvant actionner des évènements vers la partie utilisateur, et donc python.

Présentation de la fonctionnalité XDP de BCC: XDP est une sous partie du noyau permettant d'ajouter des filtres eBPF sur une interface réseau avant la prise en compte d'un paquet par la couche réseau du noyau (mécanisme de « bypass »). L'intérêt est la flexibilité (vous pouvez injecter n'importe quel code de traitement des paquets, y compris pare-feu, routage, redirection...) et les performances impressionnantes. Le tout pilotable toujours en python.

Les trois présentations montreront des exemples concrets d'utilisation de ces bibliothèques.

GitLab + Mercurial = Heptapod

Par Georges Racinet − Salle Henri Poincaré − Samedi à 10 h 30

Heptapod est un projet communautaire dérivé de GitLab pour y intégrer Mercurial, le système de contrôle de version distribué (DVCS) écrit principalement en Python.

Après un prototype en 2018, le projet Heptapod monte actuellement en puissance, suscitant d'autant plus d'intérêt que la communauté Mercurial cherche des alternatives à Bitbucket.

La présentation fournira les prérequis nécessaires s'agissant de Mercurial, puis se focalisera avec des exemples sur l'interaction avec Heptapod dans le cadre d'un workflow Mercurial moderne. Enfin, on évoquera l'état d'avancement et le futur du projet, notamment les développements Python en cours et à venir, pour ceux qui seraient intéressés à contribuer.

Le saviez-vous ?

Par Kevin Samuel − Salle Henri Poincaré − Samedi à 11 h 00

Saviez-vous que Python avait une variable magique __debug__ ? Que functools.partial() pouvait remplacer de nombreuses lambdas ? Que vous pouviez décompresser un zip dans un faux fichier en mémoire avec io.ByteIO ? Que PYTHONSTARTUP rendait votre shell plus beau et musclé ?

À moins d'avoir lu tout doc.python.org, cette petite heure va vous faire pétiller de découvertes !

Impacts technologiques − Au delà du code

Par Geoffroy Bailly − Salle Henri Poincaré − Samedi à 12 h 00

A l'heure actuelle la technologie est un sujet sensible, notre métier est ainsi controversé entre impact climatique et social. Nous explorerons les problèmes de la technologie numérique avec des exemples inattendus de conséquences et les moyens afin de concevoir des outils plus respectueux, durables et bénéfiques. Cette présentation ne traitera pas de technique et se destine au grand public autant qu'aux développeurs/développeuses.

Interfacer C++ avec Python, tour d'horizon.

Par Antoine Wecxsteen − Salle Henri Poincaré − Samedi à 14 h 00

Plusieurs technologies existent pour appeler du code C ou C++ depuis Python. Cette conférence se propose de présenter les principales. Nous partirons du très standard et très basique « ctypes » pour en montrer les limites, puis nous explorerons des approches alternatives, de la librairie d'interfaçage « Boost.Python » au langage « Cython », en passant par le générateur de code « SWIG ». On comparera ces solutions en soulignant leurs forces et leurs faiblesses respectives, au regard du type et de la quantité de code à interfacer. Cette conférence à donc pour but de donner au développeur Python désireux d'interfacer du code C ou C++ une idée générale de la technologie la plus adaptée à ses besoins. Elle n'a pas vocation à présenter de manière détaillée les performances de chacune de ces technologies, cela pourra cependant être évoqué dans le comparatif.

Je construis mon premier moteur (asynchrone) de Python 2 à Python 3.7

Par Romain Bellan − Salle Henri Poincaré − Samedi à 14 h 30

L'asynchrone dans les versions récentes de Python n'est plus à présenter. Nous vous proposons donc une autre approche, avec un voyage commençant par Python 2.7 pour bien comprendre les concepts et comment les couches bas niveaux peuvent être implémentées. On utilisera ensuite progressivement les fonctionnalités des versions plus récentes (3.4, 3.5...) pour simplifier ce moteur.

Cette présentation contiendra du « live coding ».

Tests : la jungle des frameworks

Par Robin Huart − Salle Henri Poincaré − Samedi à 15 h 00

Les tests sont nécessaires à la qualité logicielle; ils se déclinent de différentes manières : unitaires, fonctionnels, etc... Les méthodes agiles via le BDD et le TDD lui font la part belle. Quels frameworks pour quels objectifs? Comment faire les bons choix?

Mettez Elasticsearch à votre service

Par Alexandre Garel − Salle Henri Poincaré − Samedi à 16 h 30

Octopusmind fait une utilisation intensive d'Elasticsearch. Je vous ferais découvrir une partie des possibilités qu'offre Elasticsearch du point de vue du développeur. Nous verrons rapidement comment utiliser des bibliothèques Python afférentes: elasticsearch-dsl, django-elasticsearch-dsl et luqum. Il y aura bien sûr quelques astuces et aperçus d'utilisation avancée..

Micro framework visuel avec Tkinter

Par François Girault − Salle Rosalind Franklin − Samedi à 10 h 30

Lors de PyConFr 2018, l'intervention "Tkinter, toujours de la partie ?" ( https://github.com/fgirault/pyconfr2018 ) revenait sur les possibilités d'usages modernes du toolkit graphique fourni en standard avec Python en démystifiant sa rusticité. Cette année, nous verrons comment construire un micro framework "flat design", à la manière des design frameworks populaires dans le monde du web, pour produire des interfaces graphiques ergonomiques et cohérentes.

Déployer Django avec Compose

Par Mehdi Raddadi − Salle Rosalind Franklin − Samedi à 11 h 00

Explication de la construction d'un squelette de projet déployé avec docker-compose ainsi que le processus de développement associé. Tests en local et sur gitlab-ci puis déploiement.

Robotique : Python au service de machines qui bougent

Par Yoan Mollard − Salle Rosalind Franklin − Samedi à 12 h 00

Python est, avec C++, l'un des 2 langages officiels du middleware robotique opensource ROS (Robot Operating System).

Il s'agît d'un couteau suisse logiciel permettant de piloter des robots de toutes tailles, allant de petits robots roulants jusqu'à des manipulateurs industriels de plusieurs tonnes.

Au dessus d'un automate assurant le contrôle et la sûreté électromécaniques, Python peut intervenir sur toute ou partie du cycle de fonctionnement robotique : perception de l'environnement, prise de décision, contrôle des moteurs et des trajectoires, interface homme-robot.

Durant cette conférence nous verrons les rudiments de l'écosystème ROS, nous démarrerons un robot martien simulé que nous contrôlerons en 4 lignes de code Python, et nous ouvrirons sur comment aller plus loin avec les ressources de formation robotique ROS4PRO à destination des techniciens et ingénieurs en activité ou en devenir.

Pourquoi j'ai traduit une partie de la doc de python et pourquoi je vais continuer

Par Pierre Bousquié − Salle Rosalind Franklin − Samedi à 14 h 00

Retour d'expérience sur ma participation à la traduction de la doc suite à la précédente pyconfr. Mon objectif: vous donner le virus également :).

« Privacy by design » : protéger les données personnelles, 1 million de lignes de code à la fois

Par François Séguin − Salle Rosalind Franklin − Samedi à 14 h 30

Câbles diplomatiques américains, emails de Sony Pictures, photos de prototype d'iPhone : on sait que ces informations sont confidentielles, et elles ont pourtant été victimes de fuites. Les informations personnelles de nos utilisateurs sont tout aussi confidentielles, et nous devons les protéger. Les logs et interfaces d'une application web exposent souvent des données personnelles: comment les expurger et/ou restreindre leur accès? Je partagerai mes travaux sur la protection des données personnelles dans un écosystème mature de plusieurs millions de lignes de code, et du paquet open-source pour Django que nous avons créé.

Python pour tous : amener un zeste de programmation dans les milieux moins favorisés

Par Nathanaël Langlois, Amaury Carrade, Titouan Soulard − Salle Rosalind Franklin − Samedi à 15 h 00

Python, aussi bien utilisé pour du développement d’application que pour des programmes de calculs complexe, ouvre par sa facilité de prise en main un champ gigantesque de possibilité à toutes les populations. L’association “Zeste de Savoir”, fédérée autour d’un site communautaire de partage de connaissances éponyme, organise régulièrement des ateliers dans des universités à destination de collégiens et lycéens en proposant notamment aux enfants de quartiers défavorisés de s’y joindre. Comment rendre la programmation simple et attractive ? C'est ce à quoi nous tentons de répondre dans nos ateliers et cette conférence.

Workalendar, cette bibliothèque qui ne prend jamais de vacances

Par Bruno Bord − Salle Rosalind Franklin − Samedi à 16 h 30

La réponse à la question "combien y a-t-il de jours ouvrés entre le 16 avril et le 3 mai ?" peut paraître simple... Mais on se rend vite compte qu'il faut préciser un peu...

De quelle année ?

Mais aussi et surtout : dans quel pays ?

Parce que toutes les nations du monde n'offrent pas les mêmes jours fériés ou chômés à leur population, parce que même au sein d'un même pays on peut avoir plusieurs calendriers et parce que la vie serait trop rasoir sans cas particuliers, il a fallu essayer de trouver une réponse logicielle à la question initiale.

Workalendar est une bibliothèque Python, développée pour la société PeopleDoc en tant que logiciel libre (licence MIT, 50+ contributeurs). Elle compte plus de 230 calendriers du monde entier, capables de calculer les jours fériés d'une soixantaine de pays... autant que possible.

Cette conférence présentera un tour d'horizon de la bibliothèque et ces usages, et vous en apprendrez sûrement sur le Jour de la Réconciliation en Afrique du Sud, le Premier Jour de l'Été islandais... et le calendrier de la Mongolie !

Sécurisez votre application web avec les nouveaux « audit hooks » de Python

Par Nicolas Vivet − Salle Thomas Edison − Samedi à 10 h 30

The audit hooks were added to Python 3.8 with the PEP 578. This security mechanism gives you more visibility and control over what your application does at runtime. After a short introduction of the new feature, we will explore ideas on how web developers, library maintainers and security engineers can leverage it to detect and block security vulnerabilities, illustrated with concrete examples.

Plongée au cœur du modèle asynchrone Python

Par Antoine "entwanne" Rozo − Salle Thomas Edison − Samedi à 11 h 00

Tout mécanisme Python, que ce soit les itérables, les conteneurs ou encore les appelables, repose sur des interfaces simples. Le modèle de programmation asynchrone et ses coroutines n'échappent pas à la règle et se basent aussi sur des méthodes spéciales que nous allons découvrir.

L'objectif de cette présentation est d'explorer ces interfaces et de construire pas à pas un équivalent minimaliste d'asyncio.

Algorithmes de graphes et applications en analyse de données descriptives et prédictives

Par Estelle Scifo − Salle Thomas Edison − Samedi à 12 h 00

La représentation des données sous forme de graphes, encore à la marge il y a quelques années, croit de jour en jour. Avec l'essor des bases de données graphes comme Amazon Azure ou Neo4j, ce type de données n'est plus réservé au GAFA et les applications sont nombreuses.

Dans cette présentation, je vous ferai découvrir certains algorithmes indispensables pour caractériser des données graphes comme la détection de communautés, mais aussi comment aller vers des algorithmes prédictifs de machine learning tels que la prédiction de liens.

Le processus de lisibilité de code à Google

Par Bruno Cauet − Salle Thomas Edison − Samedi à 14 h 00

Le processus de « readability » (lisibilité) de code à Google est un mécanisme qui, pour chaque language de programmation, garantit la bonne qualité de la codebase en déterminant qui peut commit du code dans quel langage.

Ma conférence explorerait les éléments suivants :

Passer à Python 3

Par Michel Casabianca − Salle Thomas Edison − Samedi à 14 h 30

La fin du support de Python 2 est annoncée pour le 1er janvier 2020, donc la question du passage à Python ne se pose plus. La seule question qui reste est comment ? Cette conférence présente les différences majeures entre Python 2 et 3 et comment migrer dans de bonnes conditions du code vers Python 3.

The XSS files, la sécurité est ailleurs − Retour d’expérience avec le projet Fedora

Par Michael Scherer − Salle Thomas Edison − Samedi à 15 h 00

À travers l'exemple de l'infrastructure du projet Fedora et de la 20aine d'applications métier écrite par les membres du projet, nous examinerons la problématique du cross site scripting (injection de javascript dans la page web), comment trouver ce genre de souci en examinant le code, et comment y remédier dans les frameworks modernes et moins modernes. Nous verrons notamment l'exemple de Pagure, une forge logicielle écrite avec le framework Flask et un certain nombre de soucis trouvé l'année dernière.

Un Captcha libre, c'est possible !

Par Mindiell − Salle Thomas Edison − Samedi à 16 h 30

Le Captcha (ou Completely Automatized Public Turing test to tell Computers and Humans Apart) est un moyen a priori simple de déterminer si l'utilisateur stué derrière un site web est un humain ou un robot. Cet outil est aujourd'hui souvent synonyme de ReCaptcha, technologie rachetée par Google en 2009. Malheureusement, cet outil est surtout utilisé à des fins de surveillance et d'espionnage, voire pour améliorer des IA utilisées par l'armée américaine.

C'est en souhaitant lutter contre les abus de Google via cette technologie que j'ai travaillé sur un prototype fonctionnel qui pourrait facilement remplacer l'actuel. Pas forcément plus compliqué, pas forcément plus fiable, ce test est, par contre, beaucoup plus libre, son code source est ouvert et chacun peut l'installer chez soi (ou dans son entreprise).

On parlera donc de ce qu'est un Captcha, de ce que ça demande comme travail de recherche pour générer des tests de manière automatisée, de gérer des tests pour les déficients visuels (accessibilité quoi), de l'adapter pour remplacer un ReCaptcha le plus facilement possible, bref de comment faire un Captcha de A à Z !

How I Fell In Love With Pytype & Why You Should Too

Par Nathaniel Manista − Salle Alfred Wegener − Dimanche à 10 h 00

We all are always finding complex and novel ways of making mistakes and introducing defects into our software, and we all want all the help we can get and all the tools we can carry in our toolbox to fix our mistakes and defects. I’ll relate how experience changed me from a detractor of Pytype to one of its biggest fans and why I believe that it is one of the best tools we can use to craft correct Python code.

Building a Text Processing Pipeline − Application to Relationship Detection between Fictional Characters

Par Arnault Chazareix − Salle Alfred Wegener − Dimanche à 10 h 30

Over the years, we have flooded the Internet with information and opinions about everything. We are at the point where it is impossible to read everything about a subject. The purpose of this talk is to demonstrate how we can build a text processing pipeline to extract information by reading website pages. We will go through the conception of a text processing pipeline to detect relationships between Fictional Characters of any show. The goal is to be able to remember the characters and their relationships before the release of the next season without having to binge-watch all the seasons again.

Everything You Want to Know About Kubernetes (Preferably Before Using It)

Par Guillaume Gelin − Salle Alfred Wegener − Dimanche à 11 h 00

There is a lot of hype about Kubernetes those days, but do you know what Kubernetes really gives you, out of the box? Not as much as you might expect.

« Kubernetes is a platform for building platforms. It's a better place to start; not the endgame. » Kelsey Hightower (Developer Advocate at Google)

In this talk, I will present my experience as a software engineer who started building a bare-metal Kubernetes cluster without much knowledge in networking or other low-level infrastructure concepts, but with a developer background and mindset that ended up being quite useful.

Ever Wondered what is the Best Company that Suits You?

Par Taneja Ankisetty − Salle Alfred Wegener − Dimanche à 12 h 00

Working individuals, top management and investors are in constant turmoil to find the right company from plethora of options. This presentation aims to help find answers for them. An individual could gauge if he’s being underpaid or overpaid. Top management could have a quick, summarized and transparent feedback from their employees. A company could discover about its competitors strengths and weaknesses.

Attendees will learn how to scrape numerical and text data (reviews) from online websites and transform into structured data. Analyze trends and aggregate numerical data at different levels to form the big picture about the company. However, compiling text is a powerful means to understand details and also sentiment of employees. So we form tf-idf matrix, apply dimensional reduction techniques and explore clustering to summarize reviews. Finally, we will delve into simpler methods that are more apt than ML algorithms for this problem statement.

APIs and Language Processing with Python for Twitter

Par Sonal Sannigrahi − Salle Alfred Wegener − Dimanche à 14 h 30

Have you wanted to know in real time what everyone’s saying about anything—ranging from the Amazon fires to the latest iPhone release? Fear not, Twitter is the key. Learn about engaging with the Twitter API and using language processing as a tool to discover interesting patterns about your data! In this talk, I’ll cover the concept of the Twitter REST API, along with a new geolocating tool developed for Python, and lastly, a simple way to analyse tweet sentiments.

Pytest: Yes Let's Go

Par Santiago E Fraire Willemoes − Salle Alfred Wegener − Dimanche à 15 h 00

My intention with this talk is to help people understand how tests can help us write better code and how it can guide our designs. In this opportunity I'll show how to do this using pytest, and get most of its power.

I'm a Python developer who also happens to have written some Java, which has a strong influence in how mocks came to be, and this has influenced my way of testing.

Combine this with a sudden motivation to start doing TDD, and I'd say there's a lot to be shared.

I will show different pytest features and how they can assist us in writing easier, and understandable tests.

Overview

  1. Some words about testing
  2. Understanding the core of pytest
  3. Tests as documentation
  4. Fixtures
  5. Parametrize
  6. Mocks
    • Understanding mocks
    • Using mocks
  7. Refactoring with tests in mind
  8. TDD
  9. Plugins

Optimizing Python at Scale

Par Bogdan Balas, Thibault Poisson − Salle Alfred Wegener − Dimanche à 16 h 00

Cover a brief history of YouTube and Python, our frontends and our Python based templating language (Spitfire). Follow up with the challenges of optimizing for latency in a Python web server. Then talk about how we used Clif and Cython as well as other tricks to optimize key parts of our serving infrastructure to meet our latency needs. Spitfire, Clif and Cython are all open source tools available for the python community

Equip Your Performance Toolbox − Cython vs. Pybind11

Par Gavin Chan − Salle Alfred Wegener − Dimanche à 16 h 30

Developing Python applications is handy and rapid, but performance is always concerned, especially on the CPU bound components. We'll first go through the common tools and tricks which may surprise you on the performance improvement, and compare the two prevailing tools, Cython and Pybind11. Finally, their similarity and difference, in terms of implementation and performance, will be listed out so that attendees can thoroughly understand the criteria to choose the right library in their projects.

Carnet de recherche scientifique avec Python (Git + Jupyter Notebook + Pandoc)

Par Constance de Quatrebarbes − Salle Charles Darwin − Dimanche à 10 h 00

Comment rendre un projet scientifique plus ouvert, plus lisible et s'assurer que les résultats soient reproductibles?

Ce talk propose de montrer comment réaliser un carnet de recherche scientifique d'équipe avec Git + Jupyter Notebook et Pandoc pour dévoiler la recherche en train de se faire.

Classification automatique de nuage de points en 3D : dessine-moi une falaise !

Par Raphael Delhome − Salle Charles Darwin − Dimanche à 10 h 30

Oslandia est un prestataire de service spécialisé en architecture SIG (Systèmes d'Information Géographique) et en développement Open Source utilisant Python au quotidien. Dans le cadre de notre activité de R&D, nous avons été amenés à développer un programme pour la segmentation automatique de nuages de points en 3D.

La présentation sera l'occasion de faire un retour sur ce projet, entre description du contexte du projet, développement en Python, et construction d'algorithme de machine learning.

Tout d'abord, un besoin métier : en environnement montagneux, il convient donc de maîtriser les risques d'éboulement en répondant à une question très simple : de quoi sont constituées les falaises ? Ensuite, très vite, un constat douloureux : impossible de faire de l'apprentissage supervisé sans données labellisées (exit le Deep Learning...).

À partir de prises de vue photogrammétriques, nous détaillerons le petit pipeline de traitement de données développé pour l'occasion, qui mobilise des bibliothèques telles que laspy, pandas ou encore scikit-learn. Compte tenu des quantités de données mobilisées, une bonne touche de multiprocessing agrémentera aussi un exposé où la question des performances aura une place de choix.

Épanouissement personnel et collectif dans le monde du développement informatique en télétravail

Par Pierre Verkest, Audrey Braun − Salle Charles Darwin − Dimanche à 11 h 00

Venez découvrir la vie en entreprise chez Anybox, nos difficultés personnelles ou collectives ainsi que les réussites, petite ESN (20 personnes), organisée en télétravail généralisé depuis 2016 et en holacracy depuis 2017, nous revenons sur nos explorations, en passant par l'agilité depuis la gestion des projets clients à la gestion de l'organisation.

C’est avec enthousiasme que nous viendrons mêler nos expériences aux vôtres !

Comment hériter de str et survivre

Par Rémi Bois − Salle Charles Darwin − Dimanche à 12 h 00

Hériter de str ou de int est généralement une mauvaise idée : mieux vaut encapsuler. Qu'importe ! Lançons nous dans la construction d'une classe héritant de str et voyons quels problèmes se posent avant de tenter de les résoudre au mieux. Un talk technique mais accessible pour mieux comprendre comment un str nait et comment intercepter ses méthodes, le tout en pur Python.

Booster Python avec Rust : le cas de Mercurial

Par Raphaël Gomès − Salle Charles Darwin − Dimanche à 14 h 30

Historiquement, le gestionnaire de version Mercurial utilise des modules en C pour améliorer ses performance lorsque Python ne suffit plus. L'année dernière, des contributeurs ont commencé à utiliser des modules en Rust comme une alternative plus sécuritaire, plus agréable et mieux outillée que C afin de compléter la base Python de Mercurial.

Depuis fin 2018, Octobus a le plus grand nombre de contributions Rust dans Mercurial. Nous avons découvert des problèmes liés l'interaction de ces deux langages et trouvé des solutions qui n'avaient jusque-là - à notre connaissance - jamais été publiées sur Internet.

Au programme :

gRPC/Python : Exemple pratique d'utilisation de micro-services pour une (mini) application d'analyse sémantique de textes (NPL)

Par Lionel Atty − Salle Charles Darwin − Dimanche à 15 h 00

mots clés: Python gRPC micro-services NPL Spacy packaging architecture Docker

Après une (courte) présentation du framework Google gRPC (paradigmes, protocoles, API de communications, ...), on s'intéressera à son binding spécifique Python. On présentera une utilisation (concrète) des outils du framework gRPC (Python) via le développement d'une (mini) application Python. L'application permet d'analyser des contenus textes (texte associé à des tweets). Cette analyse (sémantique) s'appuie sur des outils (python) de NPL (Natural Processing Langage). L'étude (du développement) de cette application nous offre un cadre de (semi)production, à travers lequel on pourra aborder des considérations de production (ou mise en production) d'applications python. On s'intéressera particulièrement à des notions d'architecture et (un peu) d'infras:

Dash : applications web de visualisation de données interactives sans Javascript

Par Dom Weldon − Salle Charles Darwin − Dimanche à 16 h 00

Aujourd’hui, on ne veut plus simplement produire un rapport PDF pour son projet de data science ou d'apprentissage automatique. De plus en plus, les utilisateurs souhaitent des outils interactifs permettant d'explorer des données avec des visualisations et des graphiques interactifs. Ces outils étant exécutés dans un navigateur web, soit il faut embaucher un spécialiste front end qui respire le Javascript dans son équipe soit il faut que les data scientists apprennent les technologies web. Ces alternatives ne sont pas pratiques et sont coûteuses. L’alternative se nomme Dash !

Dash, une bibliothèque de Plotly, peut résoudre le dilemme ainsi: les scientifiques de données peuvent faire les sites interactifs utilisant uniquement le Python et une connaissance minimale du HTML, et absolument aucun JavaScript.

À decisionLab, une société de conseil en modélisation mathématique du centre du Londres, nous avons adopté Dash pour créer des interfaces pour nos POCs et les premiers alphas de nos projets. Bien que nous ne fassions pas officiellement partie du projet Dash, en l’utilisant quotidiennement, à travers de nombreux projets, nous avons acquis de nombreuses connaissances. Nous aimerions les partager ainsi que des conseils et des bonnes pratiques. Puis obtenir vos retours!

Cette conférence donnera un aperçu de Dash, de son fonctionnement et de son utilité, avant de présenter certains problèmes pouvant survenir lorsque les data scientists sont laissés à eux-mêmes pour créer des applications Web, et que les ingénieurs informatiques doivent travailler avec l'écosystème pydata. Nous identifierons aussi certaines des limites de Dash, et discuterons de la façon de prendre la décision d'arrêter d'utiliser Dash pour commencer à créer une application Web complète.

La série Chernobyl à travers le prisme de l'intelligence artificielle

Par Pierre-Loïc Bayart − Salle Henri Poincaré − Dimanche à 10 h 00

L'intelligence artificielle a permis des avancés très intéressantes dans de nombreux domaines. Alors pourquoi ne pas s'en servir pour analyser une série? Grâce à de l'analyse du langage naturel principalement, je vous propose une analyse de la série Chernobyl qui permettra une mise en perspective de la série avec les évènements qui se sont réellement déroulés. Site de la présentation : https://pierre-loic.github.io/

La visualisation dynamique des données en Python

Par Romain Colle, Thibault Derousseaux − Salle Henri Poincaré − Dimanche à 10 h 30

Python est aujourd’hui le langage principal pour l’analyse de données, mais il y a une étape qui reste encore longue et mal optimisée : le passage du notebook vers la visualisation dans les applications BI des utilisateurs métier. Dans quasiment tous les cas il faut réécrire le code dans le langage de l’application BI, c’est long et très mal adapté à une approche agile d’itérations successives.

Chez ActiveViam j’ai voulu accélérer ce process et concevoir un système qui permette de sauter entièrement cette étape. Le but du projet était de mettre la visualisation directement dans le notebook, pas juste des graphes statiques mais quelques chose de vraiment dynamique.

Le résultat, que je propose de présenter, c’est une librairie Python que nous avons mise en open source et qui permet de visualiser les données en continu à mesure qu’on les charge et qu’on les travaille en Python dans son notebook. C’est utile pour faire ses propres analyses, mais surtout quand il faut concevoir des dashboards qui seront utilisés par d’autres services dans l’entreprise. Les allers-retours avec le métier se font beaucoup plus vite et une fois que les specs et l’apparence du dashboard sont validées par les utilisateurs finaux, passer en production est aussi rapide puisque cela peut se faire en quelques clics – avec ce système on ne construit pas juste une preview ou un mock-up avec Python mais bien l’application analytique finale.

Pip, Pipenv, Poetry et PEP517/518 : le point sur le packaging, la gestion des dépendances et leur évolution

Par Thierry Chappuis − Salle Henri Poincaré − Dimanche à 11 h 00

L'écosystème de packaging et de gestion des dépendances de Python a un historique riche, mouvementé, qui évolue à son rythme et qui propose aujourd'hui deux nouveaux PEP, les PEP 518 et PEP 517, supportés respectivement par pip depuis ses versions 10.0 et 19.0. Quelles sont les implications de ces changements? Quels problèmes résolvent-ils ? Quelles opportunités offrent-ils pour le futur ? Cette présentation propose de faire un état de lieux sur le packaging fin 2019, sur ses pratiques et sur ses outils. Au délà des religions, préférences ou frustrations individuelles, je propose d'explorer les limitations actuelles de pypi, de pipenv ou de poetry et et de voir quelles évolutions on peut attendre pour le futur proche.

Le code ne suffit pas (2)

Par Constance de Quatrebarbes − Salle Henri Poincaré − Dimanche à 12 h 00

Dans la lignée de l'intervention de Joachim Jablon en 2018, cette intervention présentera quelques pistes pour un environnement de développement plus inclusif: retour d'expérience, partage de réflexion et de lecture, mais surtout propositions de bonnes pratiques notamment en terme de management/gestion de projet pour mieux intégrer la variété des profils et leur spécificité - notamment celle des femmes.

Elle recensera les initiatives qui donnent leur place aux profils encore minoritaires dans la communauté Open Source.

Les décorateurs : Kézako ?

Par Alexis Benoist − Salle Henri Poincaré − Dimanche à 14 h 30

Vous avez vu un décorateur avec leur traditionnel @ au dessus d'une fonction et vous vous demandez comment ça marche ? Cette session est faite pour vous ! Nous montrerons leur comportement et comment les implémenter pour maitriser leur magie.

Marshmallow, de la sérialisation à la construction d'une API REST

Par Jérôme Lafréchoux − Salle Henri Poincaré − Dimanche à 15 h 00

La question de la sérialisation des données se pose quand on doit échanger des objets métier via un service web, ou bien les enregistrer en base de données ou simplement dans des fichiers.

Pour cela, on a recours à une bibliothèque de sérialisation telle que marshmallow.

Dans un premier temps, on expliquera succinctement les enjeux de la sérialisation et l'intérêt d'une bibliothèque dédiée.

Puis on détaillera les fonctionnalités majeures de marshmallow : validation, customisation de champs, imbrication, pré/post-traitements,...

Ensuite, on abordera les fonctionnalités fournies par quelques bibliothèques de son écosystème : génération de schémas marshmallow depuis un ORM/ODM, désérialisation des requêtes d'un service web, génération automatique de documentation OpenAPI (Swagger).

Et enfin on présentera flask-smorest, un cadriciel de développement d'API REST basé sur Flask et marshmallow :

Le Witness Angel, la cryptographie au service de la justice et de la vie privée

Par Pascal Chambon − Salle Henri Poincaré − Dimanche à 16 h 00

Cette conférence présentera la façon dont Python, et ses bibliothèques cryptographiques/web de haut niveau, sont mis au service du premier prototype de "Witness Angel".

Le Witness Angel est un huissier personnel, un dispositif qui permet d'assurer le respect de la vie privée des citoyens, tout en offrant de puissants moyens de preuve aux victimes de violences/chantages/harcèlements et autres, grâce à un mécanisme innovant appelé "Écriture Seule" (plus d'infos sur https://medium.com/@pakaldebonchamp/le-concept-witness-angel-bdfb7025f4f8).

La conférence exposera les tenants et aboutissants de ce projet, rappellera les fondamentaux de la cryptographie, évoquera l'avancement à ce jour (en particulier suite au Hackathon), et les pistes pour contourner à terme les possibles limitations de CPython (performance, autonomie de batterie sur périphériques mobiles...).

Structurez vos applications Python avec un système de Plugins

Par Joachim Trouverie − Salle Henri Poincaré − Dimanche à 16 h 30

Découvrez les avantages de découper votre application Python en utilisant un système de plugin.

En utilisant un système de plugin votre code sera plus facilement maintenable et pourra être plus facilement couvert par vos tests unitaires. Il sera également plus aisé de participer au code du projet pour un nouveau venu.

Du SQL à Neo4j avec python

Par Estelle Scifo − Salle Rosalind Franklin − Dimanche à 10 h 00

Dans cette présentation, je vous parlerai de bases de données graphes, en particulier comment passer d'un modèle de données orienté tables en SQL à un modèle de type graphe en prenant l'exemple de la base de données en vogue, Neo4j. Après une petite introduction à Neo4j et à son langage de requête, Cypher, je vous montrerai des exemples d'intégration entre python et Neo4j.

Ajoutez de l'observabilité à votre application Django

Par Lionel Porcheron, Pierre Fersing − Salle Rosalind Franklin − Dimanche à 10 h 30

Avant, on monitorait les serveurs avec un ping et un check de connection tcp. En 2019, on observe les applications et l'infrastructure qui la supporte. Le but de cette présentation et de montrer comment avec quelques outils Open Source autour de Prometheus vous pouvez récolter des tonnes d'informations précieuses sur la santé de votre application et de votre infrastructure qui peuvent être utiles pour mieux comprendre ce qui se passe dans et autour de votre application.

AutoML : 40 heures que je fais du machine learning sans que j’en susse rien !

Par Laurent Picard − Salle Rosalind Franklin − Dimanche à 11 h 00

« Il y a plus de quarante ans que je dis de la prose sans que j'en susse rien, et je vous suis le plus obligé du monde de m'avoir appris cela. » — Monsieur Jourdain

40 ans, c'est le temps qui a été nécessaire aux experts pour parvenir à ce stade de l'apprentissage machine : surpassant les algorithmes traditionnels, des modèles de réseaux neuronaux peuvent maintenant comprendre texte, image, audio et vidéo. De 4 à 40 heures, c'est le temps désormais suffisant à tout développeur pour utiliser un tel modèle, voire en créer un nouveau et résoudre un problème métier unique.

« Serait-il alors possible de générer des modèles sur mesure, sans aucune expertise, et sans même le savoir ? » — Moi (développeur gentilhomme)

Dans cette session, nous verrons ce que permettent des modèles pré-entraînés (API de machine learning), comment aller au-delà en générant un modèle personnalisé (nouvelles techniques AutoML), et nous participerons à une démo live tous ensemble. Ne mettez pas vos smartphones en mode avion !

Déployer Flask sur AWS Lambda avec Zappa & GitLab

Par Fred Zind − Salle Rosalind Franklin − Dimanche à 12 h 00

Présentation d'un chatbot basique utilisant une application mono-page Flask (avec une larme de JS) qui répond avec des données provenant des API MapQuest et Wikipedia.

La particularité offerte par Zappa est d'avoir un Flask des plus classique en local (pour le dev) et de simplifier le déploiement vers AWS-Lambda pour la mise à dispo vers le monde. Gitlab permet d'automatiser l'usage de Zappa, mettre à jour le JS avec la réponse AWS, puis héberger les fichiers statiques .

Le niveau technique nécessaire est faible : les débutant(e)s sont bienvenue et les expérimentés prévenus !

Témoignage : comment j'ai survécu à ma thèse en machine learning avec Python ?

Par Ikram Chraibi Kaadoud − Salle Rosalind Franklin − Dimanche à 14 h 30

Je propose un témoignage sur mon utilisation de Python durant mes travaux de thèse pour développer un réseau de neurones récurrents doté d'unités LSTM, Long Short Term Memory. Face à des outils comme Keras, Tensorflow, pytorch etc., j'ai choisi d'implémenter ma propre solution avec Python, sans solliciter de solutions existantes car ces solutions ne me semblaient pas satisfaisante pour répondre à la question de l'interprétabilité dominante dans mes travaux de thèse. J'ai donc décidé de "mettre les mains dans le cambouis " pour mieux comprendre les boites noires que sont les réseaux de neurones et ainsi mener a bien ma thèse et acquérir la légitimité nécessaire pour parler de Machine Learning.

Ce beau challenge s'est alors accompagné de nombreuses péripéties : 1) Comprendre ce qu'est un LSTM. Pour cela, j'ai surtout implémenté ce que j'en comprenais : d'abord un bloc à une cellule, puis un réseau doté d'une couche d'entrée et de sortie, puis un réseau avec plusieurs blocs et cellules. 2) Ecrire des équations en python. J'ai ainsi découvert les mathématiques en python lors de mon implémentation de matrices de dérivées partielles nécessaire à l'apprentissage du réseau de neurones. 3) Développer en Python des concepts poussés, tels que : utiliser une structure de classe pour l'architecture, développer des distances mathématiques entre des vecteurs numériques, implémenter et générer des graphes, etc..

Une fois mon réseau neuronal fonctionnel (qui apprend et qui prédit avec de bonnes performances), je me suis ensuite intéressée à comment Python pouvait m'aider à expliciter ce qui se passe dans mon réseau avec par exemple Matplotlib, numpy, la librairie sickit learn... Et souvent j'ai passé des semaines à vérifier mes résultats ! En effet, un code qui compile n'est pas synonyme de réseau qui apprend, et cela est une réalité dont j'ai surtout pris la mesure lors de mes développements.

Dans cette démarche d'expérience et de challenge, j'ai dû par conséquent persévéré de nombreuses fois, ce qui est encore le cas aujourd'hui (dans la mesure du possible). En effet, partir de zéro permet d'aborder les questions autrement. Certes il m'a fallu plus de temps et d'énergie pour construire mon réseau mais une fois cela réalisé, j'en maîtrisais toutes les briques et je pouvais aller plus loin dans son exploitation, sa modification et fouiller son raisonnement (les valeurs d'activation) plus profondément. Tel est le sentiment que j'en avais.

TDID − « Test Driven Infrastructure Developpement » avec Salt, GitLab, Kitchen et Testinfra

Par Arthur Lutz − Salle Rosalind Franklin − Dimanche à 15 h 00

Déployer une infrastructure avec SaltStack avec l'assurance qualité assurée dans Gitlab avec des linters, et des tests en machine virtuelle avec Kitchen et testinfra.

Pour une infrastructure complexe géré en infrastructure-as-code avec SaltStack, comment nous avons mis en place de l'assurance qualité, des tests pour faciliter l'intégration de modifications, ainsi que l'assurance que la description de l'infrastructure peux s'appliquer. Retour d’expérience de travaux effectué avec un hébergeur utilisant Salt pour sa gestion d'infrastructure et ses déploiements.

Composants exposés :

Un CMS conçu pour la performance écologique

Par Hugo Delval, Lucien Deleu − Salle Rosalind Franklin − Dimanche à 16 h 00

Les CMS sont parmis les types de site les plus demandés, souvent déployés pour de simples sites vitrines. Le compromis entre légèreté et personnalisation n'est pas simple. En résulte des pages de sites vitrines contenant des centaines de requêtes, du javascript venant de tous les horizons, tout cela pour permettre d'observer une animation de chargement. Nous avons travaillé sur une solution pour mettre fin à tout ça, pour le découvrir, venez voir notre présentation.

Topics abordés : impact écologique, éco-conception, pages statiques, django, wagtail, nginx

Comment faire confiance aux métadonnées de musique

Par Paul Tremberth − Salle Rosalind Franklin − Dimanche à 16 h 30

Did you know American singer/songwriter Joan Baez has a near-homonym in Colombia, Joan Báez, who plays progressive rock? Did you know there are (at least) two bands called Aggression that play thrash metal? Jazzman Avishai Cohen, anyone? There are two contemporary jazz musicians who go by that name.

At Deezer, the data we receive from music labels is often ambiguous. And if we display an album in the wrong artist page, users get (rightfully!) mad and may turn to the competition the next time they want to listen to their favorite tracks.

In this talk, I'll present some of the techniques we use to verify our metadata and fix our music catalog. We leverage several metadata sources to consolidate a "source of truth" which then helps us spot & correct errors in our database. We'll explore topics like record linkage, bag-of-words, TF-IDF, graph algorithms and community detections. All of this in Python using scikit-learn, scipy and networkx.

Python + Neo4j: How a Graph DB Can Make a Transit App More Intelligent

Par Navid Nobani − Salle Thomas Edison − Dimanche à 10 h 00

Although there are tens of transit applications available in national and global levels, most of them (more or less) perform in the same way: mapping the desired path asked by the user (origin, destination) on the timetable provided by the transportation company and providing official schedules to the user. While this process was acceptable years ago, with the advances in the computer science and evolution of unstructured databases we can expect to receive something more robust than a digital version of the (train, bus, …) timetable, something that provide us with the expected delays based on the current situation (weather, temperature, events,…)

In this talk, I show you how I’ve used python to create a database for various parameters impacting transportation delays using web scrapping and how using Neo4j, I’ve created a transportations network which is used for finding the best path based on transportation times.

Topics: - Scrapping and data storage (structures and Unstructured): Getting weather, temperature, local events, planned maintenances and saving them in MongoDB and SQL databases - Creating a Neo4j database: Mapping the actual connections between transportation means - Finding the best path: using Dijkstra and A* algorithms to find the best paths, minimizing the travel time.

Level of expected Audience: Basic knowledge of Python and databases

Gotchas and Landmines in Python

Par Manoj Pandey − Salle Thomas Edison − Dimanche à 10 h 30

Python may be one of the simplest and most flexible programming languages out there, but it is still a programming language. It still has syntax, datatypes, and some occasional dark corners. Python “warts” are things for which people have criticised Python, typically aspects of the language or mechanisms of its implementation, because such aspects either expose certain surprising inconsistencies, are regarded as omissions, or cause irritation for parts of the community in some sense.

This talk will be about common pitfalls (termed warts/landmines) that people face using Python programming language.

All gotchas would be explained with proper examples and after it bites the audience, the reason would be revealed ;)

Some notes already at: gist.github.com/manojpandey/41b90cba1fd62095e247d1b2448ef85b

Make Your Python Code Fly at Transonic Speeds!

Par Pierre Augier − Salle Thomas Edison − Dimanche à 11 h 00

Transonic is a pure Python package (requiring Python >= 3.6) to easily accelerate modern Python-Numpy code with different accelerators (like Cython, Pythran, Numba, Cupy, etc...).

We will first present the context of the creation of this package, i.e. the Python's High Performance Computing (HPC) Landscape. We will show how Transonic can be used to write elegant and very efficient HPC codes with Python, with examples taken from real-life research simulation codes (fluidfft and fluidsim). We will discuss the advantages of using Transonic instead of writing big Cython extensions or using Numba or Pythran directly.

We won't forget to also discuss some limitations of Transonic, and more generally of Python and its numerical ecosystem for High Performance Computing.

ToFu − An Open-Source Python/Cython Library for Synthetic Tomography Diagnostics on Tokamaks

Par Laura Mendoza − Salle Thomas Edison − Dimanche à 12 h 00

Nuclear fusion comes along with great promises of almost limitless energy with little risks and waste. But it also comes with significant scientific and technological complexities. Decades of efforts may find an echo in ITER, an international tokamak being built to address this challenge. A tokamak is a particular kind of advanced experimental nuclear fusion reactor. It is a torus-shaped vacuum vessel in which a hydrogen plasma of very low density is heated up to temperatures (10-100 millions of degrees Celsius) allowing nuclear fusion reactions to occur. The torus-shaped plasma radiates light, which is measured in various wavelength domains by dedicated sets of detectors (called diagnostics), like 2D cameras observing visible light, 1D arrangements of diodes sensitive to X-rays, ultra-violet spectrometers... Due to the torus shape, the plasma is axisymmetric, and like in medical imaging, tomography methods can be used to diagnose the light radiated in a plasma cross-section. For all diagnostics, one can seek to solve the direct or the inverse problem. The direct problem consists in computing the measurements from a known plasma light emissivity, provided by a plasma simulation for example. The inverse problem consists in computing the plasma light emissivity from experimental measurements. The algorithms involved in solving both the direct and inverse problem are very similar, no matter the wavelength domain.

Like many, the fusion community tends to suffer from a lack of reproducibility of the results it publishes. This problem is particularly acute in the case of tomography diagnostics since the inverse problem is ill-posed and the solution unicity is not guaranteed. There are also many possible simplifying hypotheses that may, or may not, be relevant for each diagnostic. In this regard, the historical uses of the community display a large variety of single-user black-box codes, each typically designed by a student, and often forgotten or left as is until a new student is hired and starts all over again.

In this context, a machine-independent, open-source and documented python library, ToFu, was started to provide the fusion community with a common and free reference tool. We thus aim at improving reproducibility by providing a known and transparent tool, able to efficiently solve both the direct and inverse problem for tomography diagnostics. It can use very simple hypothesis or very complete diagnostics descriptions alike, one of the ideas being that it should allow users to perform accurate calculations easily, sparing them the need to simplify hypotheses that are not always valid.

A zero version of tofu, fully operational but not user-friendly enough, was first developed between 2014 and 2016 when it was used for published results. Strong with this first proof of principle, a significant effort was initiated in 2017 to completely re-write the code with a stronger emphasis on python community standards (PEP8), version control (Github), performance (cython), packaging (pip and conda), continuous integration (nosetests and travis), modularity (architecture refurbishing), user-friendliness (renamings, utility tools) and object-oriented coding (class inheritance). This effort is still ongoing to this day and is scheduled to go on for the next 2.5 years. However, the first milestones have been reached, and we would like to present the first re-written modules to the python community, for publicity, advice, feedback, mutually enriching exchanges and more generally because we feel tofu is part of the large open-source python scientific community.

The code is composed of several modules: a geometry module, a data visualization module, a meshing module, and an inversion module. We will present the geometry module (containing ray-tracing tools, spatial integration algorithms...) and the data module (making use of matplotlib for pre-defined interactive figures). Using profiling tools, the numerical core of the geometry module was optimized and parallelized recently in Cython making the code more than ten thousand times faster than the previous version on some test cases. Memory usage has also been reduced by half on the largest test cases.

Understand RegEx using deep learning

Par Shubhadeep Roychowdhury − Salle Thomas Edison − Dimanche à 14 h 30

“Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.” - Jamie Zawinski

I was staring to my screen and there was this — `^(http|https|ftp):[\/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})(:[0-9]+)?\/?([a-zA-Z0-9-._\?\,\'\/\+&%\$#\=~]*) I could understand that it is, may be, talking about some kind of URL pattern. But what the meaning of it? No answer. And Stackoverflow was no help.

This when I started my project to automatically generate the intent of any RegEx expression given the expression itself. Without any prior domain knowledge. I will walk you through the data I used, how I built my models, and the outcomes achieved. I will also provide a notebook so you’ll be able to play with it.

LSTM Variational AutoEncoders for Network Signal Anomaly Detection

Par Facundo Calcagno − Salle Thomas Edison − Dimanche à 15 h 00

A major French telecom provider has entrusted our team to develop a tool capable of accurately detecting anomalies in their network. This tool is to be deployed in a central surveillance cockpit that monitors the whole network in order to assist analysts in detecting and identifying risks, vulnerabilities and incidents in the network in real time.

The solution proposedis based on state-of-the-art Deep Learning technology, more specifically, we developed the "Croissant" model, a Bidirectional LSTM Variational Autoencoder (VAE) that monitors the traffic in the network and triggers an alarm when an anomaly is detected. To cope with the large amounts of data, e.g., the number of inbound and outbound bytes of more than 300K devices within the network every 5 minutes, our model was developed to function at scale and using an adapted software and hardware solutions such as DGX stations for training and server equipped with NVIDIA T4s for inference/operations.

The talk with go deeply into the architecture of the selected model and explaining step by step why it works and how it is going to be implemented.

Automating Vulnerability Detection at Scale with CHOPCHOP

Par Paul Amar, David Rigaudie − Salle Thomas Edison − Dimanche à 16 h 00

Hundreds of vulnerabilities are getting disclosed each week and the number of CVE has just been exploding during the last few years. When a new vulnerability comes out, the usual questions from the management are : "Are we impacted? If so, how many servers are vulnerable to X?". During this presentation, we will release "ChopChop", an internal tool we built aimed at solving problematics around vulnerability detection/regression.

Chopchop aims at providing a fully-featured scanner allowing you : - to easily scan your servers - integrate new plugins (aka new vulnerability checks) without pain. - get pragmatic results in term of security

We created this tool back in 2017 at Michelin integrating popular checks (eg. non-interpreted .htpasswd, .git folder accessible in the webroot, wildcard in crossdomain.xml, ...) and is now, one of our go-to tool, also integrated inside our CI/CD pipeline in order to tackle security in its whole.

Where in the World is "11 H 1-2"? − Aligning Public Datasets With Nazca

Par Carine Dengler, Simon Chabot − Salle Thomas Edison − Dimanche à 16 h 30

The access to data stocks made publicly available has never been easier than in present times. Among many others, FranceArchives and the Muséum National d’Histoire Naturelle are examples of public institutions providing access to their data. FranceArchives is a service by the Service interministériel des archives de France (SIAF) to help researchers and enthusiasts explore the French archives by grouping and enriching information about their contents. The Muséum National d’Histoire Naturelle (MNHN) is launching the « data.mnhn.fr » project which aims to unify their data stocks and integrate additional information in order to present their naturalists' academic career. In order to help navigate these enormous amounts of data, both institutions aim to enrich their data stocks by integrating additional information from third-party sources, such as e.g. Wikidata and Geonames.

To this end, tools such as Nazca are used to align the datasets in question. There are two main challenges: the datasets' sizes and the heterogenity between them. Nazca is an open-source highly adaptable Python tool addressing both challenges by providing blocking algorithms to reduce the number of comparisons and normalization functions to clean up the data. The tool provides a customizable pipeline containing the normalization, blocking and alignment steps and automatically collects and re-assembles the results at the end.

The talk is split into two major parts: we begin by shortly introducing Nazca and its pipeline. We then illustrate how its used in FranceArchives to align geographical data to Geonames and close by explaining how it is used to create controlled vocabularies for names in data.mnhn.fr.