XD blog

blog page


2018-01-21 Back in the past: fear of computers

I'm currently watching videos made by students about projects on machine learning. As their video is on youtube, the website decided to recommend the following video, news back from 1981 with an interview of Steve Jobs who was 26 at this time.

Jobs claimed he was able to reach one computer in every 1000 families and was confident enough he could reach 1 out of 10 in the next five years. The journalist introduced the short story which preceeds the interview by asking : "Should we fear computers?" Jobs replied by saying that a computer is just a tool, like a bicycle is, which emphasizes our inner talents.

We now wonder whether we should fear artificial intelligence. It seems we do not fear computers anymore. But the first five minutes are quite interesting in a way that it shows computers had invaded the society was already addicted to them. Planes, credit cards... so many things were already using them. The journalist questions Jobs about the danger of giving so much data about ourselves to these machine. Could it become a danger to our freedom? Computers could be replaced by artifical intelligence, the story could have been shown today on TV but the final question would not change: should we be giving away so much data? One answer from Jobs: there is no way back and the best way is not to reject computers but to learn how to use them to finally understand what danger we are talking about.

To conclude, I doubt any TV would display such a long sequence on any subject now. I fear that we have less and less wisdom and patience to answer the original question "Should we fear computers?".

2018-01-17 Montage vidéo avec Python

La programmation peut aussi servir à faire du montage vidéo. C'est du moins ce que j'ai essayé de construire en imaginant l'atelier pour Lille - Devoxx4Kid - 13 janvier 2018. Pour un néophite, le module moviepy n'est pas si évident que ça à manipuler. J'ai donc commencé à imaginer une interface avec uniquement des fonctions : Vidéos et Sons. J'y ai fait mon premier trucage vidéo :

Si on ajoute des modules tels que fcn qui permet de séparer les personnages du fond d'une image, on peut commencer à fabriquer des vidéos assez trafiquées.

2018-01-03 Small change and potentially big impact (pandas)

pandas updated its interface in its version 0.22. More particularly v0.22.0 (December 29, 2017),

print(pd.Series([]).sum())
0.0  # It was nan in 0.21.

This is typically the kind of change which could have a huge impact on many functions if you don't have unit tests to capture that. According to the documentation of sum, the previous behaviour can be retrieved by adding min_count=1.

print(pd.Series([]).sum(min_count=1))
nan

And in 10 days, computers might slow down: Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. See also KASLR is Dead: Long Live KASLR.

2017-12-24 La politique et le climat

A la lecture de cet article, Week-end de Noël : la SNCF accusée de surréservations, les voyageurs exaspérés, je comprends que la SNCF vient de s'octroyer le droit de faillir en des circonstances extraordinaires comme la conjonction le même jour de deux vagues de départ, les vacances d'hiver et Noël. Je vais finalement m'estimer heureux d'avoir pris un train qui est parti à l'heure et est arrivé en retard de seulement 10 minutes. Un article plus loin, "Le gouvernement est en train de saccager le bio", je comprends que le gouvernement veut défendre l'agriculture biologique en réduisant les subventions qu'il lui accorde. Un autre article qui me concerne plus puisque je vais à Saclay pour enseigner, A Saclay, la difficile construction du pôle d'excellence scientifique, il a fallu 10 ans pour mettre en oeuvre un projet qui s'est finalement scindé en deux. Et malgré cette apparence de succès, la vie sociale de ce grand ensemble est difficile à construire. Sorti de l'ENSAE, il n'existe rien autour pour prendre un dernier verre, on pense à son RER qui a déjà traversé deux grèves en quatre mois, on essaye de trouver une place dans le bus qui vous amène à l'école, il me faut entre une heure et demi et deux heures le soir pour rentrer chez moi. Ce grand campus est peut-être fonctionnel mais il manque de vie. Les écoles ont été regroupées pour créer des synergies, faciliter les échanges essentiels à la recherche. Dans les faits, elles sont aussi éloignées que lorsqu'elles étaient à Paris.


more...

2017-12-21 Les vélib changent, les données aussi

JCdecaux arrêtera de fournir les données velib au 31 décembre. Le nouveau format des données suivrait le format General Bikeshare Feed Specification (GBFS). Il y a fort à craindre que quelques applications de vélib cessent de fonctionner pendant quelques temps. Je ne parle pas des applications pour les téléphones Windows qui ne seront probablement pas mise à jour.

2017-12-18 Intelligence artificielle : hope and despair

Le machine learning dans sa conception qui s'appuie sur des bases d'apprentissage et de test est une façon de synthétiser un savoir puis de le restituer. Ce savoir est une liste d'évènements passés, ce que l'on sait d'une manière plus ou moins structurée, il est restitué le plus souvent sous la forme d'une aide à la décision pour les décisions futures. Le machine learning ne fait rien d'autre que de dire, sur la base des éléments passés, qu'il se passerait probablement ceci pour ces nouveaux éléments. A vous de vous en servir au mieux.

Cela dit, cela dit, ... Je viens de voir l'épisode 7 de la saison 7 de The Good Wife sur l'intelligence artificielle (S7E7).


more...

2017-11-11 Hackaton ENSAE : 3ème édition

J'en dirais plus bientôt mais ces deux articles devraient vous mettre sur la voie : Emmaüs se lance dans le e-commerce solidaire, Label-emmaus.co veut être un « Leboncoin solidaire ». Le troisième hackathon de l'ENSAE aura lieu les 24 et 25 novembre. Il proposera trois sujets, un sujet deep learning, un machine learning, un dernier créatif, plus économique que les années précédentes. Trois sujets inspirés des problématiques rencontrées par Label Emmaüs qui a accepté de contribuer à l'événement. Ernst & Young sponsorise à nouveau l'événement, côté étudiants, Genius contribue de nouveau à l'organisation. En attendant les prochaines informations, il faudra vous contenter du résumé des deux précédentes éditions : Hackathon Microsoft / ENSAE / Croix-Rouge / DataForGood - 2015, Hackathon Ernst & Young / ENSAE / Croix-Rouge / Crésus - 2016.

2017-11-09 2 points de QI en moins par rapport à 1990

Ce documentaire Demain tous crétins expose des résultats assez inquiétants. Un enfant sur 68 présente des symptômes autistiques en Californie, d'autres montrent des retard de croissance. La cause est le manque d'iode des femmes enceinte au début de la grossesse, ou plutôt l'augmentation de mollécules que la thyroïde confond avec l'iode comme les PCB, le chlore, les retardeurs de flammes, les pesticides. Une étude menée en Californie menée sur 17 ans, une autre sur les soldats finlandais ont réussi à montrer une baisse inquiétante du QI depuis les années 1990. Bref, il est conseillé de saturer sa thyroïde d'iode. Le sel de guérande est une option à condition qu'il soit chauffé au soleil et de n'ajouter le sel qu'en fin de cuisson. Pour vous protéger : Demain, tous crétins ?, le livre Cocktail toxique, une émission sur France Inter : Demain tous crétins : le danger des perturbateurs endocriniens.

2017-11-05 streaming pandas dataframe

pandas is widely used by data scientists. It is one of the modules which contributed a lot to the Python ecosystem to manipulate data. It is not perfect, a dataset takes in memory three times the space it takes on disk in average and reading a couple of gigabytes is necessarily fast. However, a couple of gigabytes is not enough to think about stronger approaches such parallelization (dask, ...) but with a little bit of overhead for such size. All I wanted was the same functionalities as pandas but implemented in a streaming way. No need to load the whole datasets in memory, no need to wait for the data to be fully loaded in memory. That's why I started pandas_streaming.

import pandas
df = pandas.DataFrame([dict(cf=0, cint=0, cstr="0"),
                       dict(cf=1, cint=1, cstr="1"),
                       dict(cf=3, cint=3, cstr="3")])

from pandas_streaming.df import StreamingDataFrame
sdf = StreamingDataFrame.read_df(df)

for df in sdf:
    # process this chunk of data
    # df is a dataframe
    print(df)

The module will continue to grow probably not as fast as I would like it to.

2017-11-02 Le monde numérique quand on a perdu son mot de passe

Ma mémoire m'a joué des tours à l'étranger. J'ai une mémoire plutôt visuelle, je ne connais pas mon code de carte bleue mais l'enchaînement des touches mémorisés sur la plupart des claviers de distributeurs de cartes bleues ou de machine. A 14h, je règle un dernier achat avec ma carte bleue avant de prendre le train pour la Hollande où je me retrouve dans un taxi à 8h du soir à payer en carte bleue sur un clavier qui me perturbe. Impossible de me souvenir du code. J'essaye deux fois et j'échoue. Plus qu'un essai. Je passe la nuit en essayant de me visualiser en train de taper mon code à Paris. Rien n'y fait. J'ai deux codes en tête et plus qu'un essai. Malheureusement, l'endroit où je dois me rendre est à 8km à pieds de mon hôtel. Je me réveille avec 8 euros en poche et une chance sur deux d'aller en taxi. Ca n'a pas loupé. Je me suis tapé 8 km à pied en 1h30, avec quelques détours, sur les pistes cyclables néerlandaises. A l'accueil de l'hôtel, je demande comment on peut se rendre à pied dans la ville d'à côté. Petit rire de l'hôtesse, ma question est absurde. Je lui demande jusqu'où je peux aller avec 8 euros, elle n'en a aucune idée, elle vient en voiture. Me voilà parti avec mon sac à dos et une heure et demi avant d'arriver faire un speech de 20 minutes devant 400 personnes. Un brin stressant. Le soir, j'appelle le numéro de secours de ma banque pour tenter de débloquer ma carte bleue. Je tombe sur une femme adorable qui m'explique que je peux débloquer ma carte dans un distributeur de la banque, à Paris donc, c'est-à-dire à plus de 400 kilomètres de là où je suis ou je peux demander à ce qu'on me renvoit le code de ma carte chez moi sous cinq jours. Je n'aurais pas eu mon billet de retour, je me serais retrouvé coincé avec le souvenir d'une voix très polie mais absolument d'aucun secours. J'ai même un doute, si ça trouve, ma carte était bloquée à l'étranger quoiqu'il arrive. Ca me rappelle une autre histoire qui m'est arrivé lorsque j''étais à Seattle. A minuit, je reçois un appel de la banque pour me dire qu'elle pense que ma carte a été volée car elle a servi à Seattle. Je dormais, je n'ai pas entendu. Lorsque j'écoute le message, je comprends que j'ai quelques minutes pour confirmer qu'on ne me l'a pas volée sous peine de la voir désactivée. Bref, j'ai fait quinze bornes à pied, j'ai un peu mangé au salon où se tenait ma conférence et je ne sais pas si je vais retrouver ma carte demain. C'est un peu le problème du numérique, un mot de passe perdu et c'est potentiellement tout ce à quoi il donnait accès qui est perdu.


more...

2017-10-27 Entrepreneurs d'intérêt général : l'Etat comme source d'inspiration

J'ai assisté hier soir à la restitution des travaux menés par la première promotion des entrepreneurs d'intérêt général (EIG). La seconde promotion sera plus nombreuse et les candidatures sont encore ouvertes aujourd'hui jusque 17h. Il y a pas mal de sujets sur lesquels j'aimerais bien me pencher.

J'étais déjà enthousiaste sur le projet qui a découché sur la première promotion des EIG et ce qui m'avait incité à accepter la proposition de faire partie du jury qui a sélectionné les candidats. Je le suis tout autant en assistant la présentation des résultats. Cette promotion a tant que possible mis à disposition son travail sur github/eig-2017 et ce travail sera compléter durant les quelques semaines qui suivent. J'y ai découvert quelques outils développés par ces entrepreneurs addok-fr ou encore leaflet-geocoder-ban/demo (source) ou encore matchID, tous orientés vers le partage comme The Magical CSV Merge Machine, l'inventaire des orgues ou encore cette réflexion sur le parcours des données santés. Le rapport Des besoins d’information à la visualisation transcrit l'approche suivie sur un des challenges. Il illustre bien ce que peut être un projet datascience dans une institution qui n'a pas toujours l'habitude de ce type d'approche et porte sur un problème de données que tout le monde peut se représenter : les données de santé.


more...

2017-10-14 Python and javascript

I was doing some research on some other topic but I found this javascript library filbert which parses and converts a Python script into a javascript script. The output is quite verbose but follows the syntactic tree produced by the parser. Transcrypt is less verbose. I then became curious about pyjs which I saw in a conference. It did not get any update in two years so it seems to be discontinued but Brython is still alive and seems a better tool to run python from a javascript page. I also discovered pyduketape which wraps in Python a javascript engine. It is a different approach from the one followed by ghost.py which is relying on PySide.

2017-09-08 Quelques parallèles entre domaines mathématiques

Maudites Abeilles, Matching, Optimal Transport And Statistical Tests, Gaspard Monge, Le mémoire sur les déblais et les remblais

2017-09-05 Retour sur la première séance

Les liens sont probablement une des informations les plus compliquées à prendre en note alors qu'ils sont si faciles à copier/coller. Tout d'abord les liens vers les contenus utilisés pour le cours :

Quelques sites qui proposent des exercices algorithmiques : Les objectifs du cours :

Devinette extraite de la séance... Deux joueurs jouent aux dés. Un joueur a six dés à six faces, l'autre à neuf dés de quatre faces. Le gagnant est celui dont la somme des points sur chaque face est la plus grande. Comment calculer la probabilité de gagner ?

N'hésitez pas à commencer à installer Python sur vos ordinateurs et à les amener en cours si jamais un problème survient : Installer Python.

2017-08-28 Continuous integration

Maintaining notebooks is a lot of work. I consider a notebook is ok if it runs with the latest versions of the packages it uses and if it can be converted into HTML to be included on a website. Easy when you have one notebook but what if you have more than 200 hundred of them to verify for your teachings? I had to automate. I started by running a virtual machine on Azure wich Jenkins and everything I needed. This machine is still up and running and tests everything once in a week for all my python package. But my teachings are also open source so I decided to use continuous integration to test my package on other distributions. I first used travis and appveyor but I could not include the compilation of the notebooks into documentation. It requires a couple of huge dependencies as latex. appveyor is quite slow and stops any job after one hour. travis was using Ubuntu 12.04 when I started and 14.04 now. I recently tried CircleCI 2.0. The design is really nice, it offers Ubuntu 16.04, the configuration file config.yml is much easier to read and to write. One interesting feature is artifacts. The user can easily copy in a specific folder whatever he wants to keep from the build and make it available to download. The other interesting feature is caching. CircleCI automatically caches a docker which contains the dependencies of the package to test. The first run is slow and the following are faster due to this option plus renewing the cache can be easily done by changing a file. So I decided it was worth spending some time enabling CircleCI anywhere. I described here all the steps to create a Python package, with unit tests and documentation and to build it on CircleCI : Tests unitaires, setup et ingéniérie logiciel (French).


<-- -->

Xavier Dupré