XD blog

blog page


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).

2017-08-25 Read paper, read git issues too!

Sometimes I go for a walk at scikit-learn/issues on radio github and I listened to this short news Random Forest Imputation and I discovered this package fancyimpute which is about filling missing values with many fancy ways and then knnimpute and downhill which implements a couple of gradient descent algorithms with theano. A little bit later: Thompson sampling with the online bootstrap.

2017-08-24 Remove big files from git history

Git repositories always get bigger. I noticed than one of GitHub repository was above 500Mb. I was wondering how I could make that size smaller. First, let see the size.

git count-objects -v 
count: 0
size: 0
in-pack: 19644
packs: 1
size-pack: 222397
prune-packable: 0
garbage: 0
size-garbage: 0

The size is size-pack. To clean, the first option is to rebase the repository so basically to clean everything and to commit the current state of the content. One solution is to keep only the latest commits (see Reduce repository size).

git log -n N
git reset --hard HEAD~N
git push --force 

more...

2017-08-17 L'inflation numérique

Chaque année, je reçois beaucoup de projets informatiques réalisés par des étudiants, plus d'une centaine l'année qui vient de se terminer. Je garde les projets principalement parce que des étudiants me demandent des lettres de recommandation. Chaque année cela grossit.

2017-08-03 PyData Seattle

Les vidéos des talks à PyData Seatle sont disponibles : PyData Seattle 2017. Quelques-unes à regarder pour les novices en Python :

La datatascience, finalement, on passe son temps à chercher le bon graphe, celui qui nous montrera ce qu'il fallait voir dans ces données ou alors on cherche l'outils qui nous permettra de trouver le bon angle : Jeffrey Heer - Interactive Data Analysis: Visualization and Beyond. Pour les experts : Chris Fregly - High Performance Distributed Tensorflow, Jeff Fischer - Python and IoT: From Chips and Bits to Data Science, Stephen Hoover - Scaling Scikit Learn.

Pour les utilisateurs de Spark, cette vidéo pourrait vous intéresser : Raj Singh - PixieDust make Jupyter Notebooks with Apache Spark Faster, Flexible, and Easier to use (voir aussi PixieDust).

Si vous avez un vieux système à mettre à jour, Matt Braymer-Hayes, Erin Haswell - Upgrading Legacy Projects: Lessons Learned.

2017-08-01 La panne du 1er août

Je fais partie comme de nombreux voyageurs des personnes impactées par la panne qui empêche la SNCF de faire circuler ses trains au départ ou à destinations de la gare Montparnasse. Le message que j'ai reçu est assez simple et sans appel : Nous vous informons qu'en raison d'une panne de signalisation, votre train ne circulera pas. Nous vous invitons, dans la mesure du possible, à reporter votre voyage. J'ai donc pris un autre billet pour le même jour en espérant que le site web ne m'ait pas laissé acheter un billet non valide. La panne arrive à tout le monde et je ne voudrais pas blâmer une entreprise publique qui pour ma part satisfait mes besoins. Néanmoins, j'aurais apprécié que le mail me proposât quelques options de remplacement. Je suis très heureux d'apprendre que cinquante techniciens inspectent le poste de commandemant de Vanves-Malakoff (d'après LeMonde) mais je ne sais combien travaillent sur les itinéraires de remplacement.


more...

2017-07-24 Pollution et emplois

La papèterie de Mimizan rejette quelques résidus de bois sans vraiment dire exactement combien. Voici le petit billet que j'avais écrit l'année dernière : Ouvrir les données. Cette année, il m'est arrivé de retourner sur la plage plutôt que d'aller me baigner car ce que je prenais pour les résidus d'un petit dégazage étaient probablement ceux de la papèterie locale.

Même si ce n'était qu'une sorte de farine d'écorce de bois, le premier réflexe de tout baigneur est de s'en écarter. C'est la petite pustule à supporter pour garder la papèterie dans la région. L'argument est toujours d'ordre économique et se présente presque toujours sous la forme d'un chantage : pollution mais emplois, pollution mais vacances pas trop chères. Le choix est le même depuis des années sans que nous puissions décider en tant que citoyens s'il n'existe pas d'alternatives à ce choix imposé.

2017-07-22 Geek non désiré à la terrasse

Je m'assois a la terrasse d'un café à Bordeaux, valises en bandoulière. Je commande un demi. Je jette un coup à la Garonne. Elle est très sombre. La pluie a probablement nettoyé le sol aux alentours. Je sors mon ordinateur portable pour évacuer un bug qui me trottait dans la tête depuis le départ du train. Dix minutes passent. Je termine ma bière. La serveuse revient et me dit que les ordinateurs portables sont interdits en terrasse. J'ai le choix de migrer à l'intérieur ou de le fermer. Je passe en revue les raisons qui pourraient me pousser à rester et comme je n'en vois aucune, je plie bagages aussi sec. La terrasse n'était pourtant pas comble, l'intérieur encore moins et pourtant, le clavier aux bouts des doigts, je suis passé dans la catégorie des squatteurs de chaises à faible consommation. Je ne sais pas ce que j'étais avant peut être un bouffeur d'ennui à fort potentiel alcoolique. Moi geek avoué me suis senti l'espace d'un instant mis au ban de la société. Je rumine. Mon voisin de terrasse fumeur a bon dos de m'empoisonner. Lui a le droit de rester. Je ne sais pas de quelle religion mon ordinateur portable est le signe ostentatoire mais ce jour-là, face à la Garonne, à la terrasse d'un bout de bateau, j'ostentais magnifiquement. Mon église ne devait pas être loin. J'ai bien évidemment écrit ce billet à la terrasse d'un autre café.

2017-07-17 Atoll de données

Je me souviens pas d'avoir lu une phrase aussi proche techniquement de mon quotidien de travail et pourtant celui-ci ne m'a pas aidé à la comprendre. "Camden avait mené un coup exceptionnel d'investissement en limites croisées d'un atoll de données.", extraite de L'une rêve, l'autre pas, de Nancy Kress. La science fiction est toujours à la frontière entre le possible et l'impossible. Comme cette phrase est un des éléments qui justifie l'intrigue, j'ai naturellement voulu la ranger dans la première catégorie sans pour autant pouvoir lui donner un sens précis. J'ai pourtant mené ma petite enquête auprès de mes amis sans pouvoir dégager un début de piste sensé. Je pensais trouver une idée en allant chercher le texte original. Le titre complètement différent Beggars in Spain promettait quelque succès. La traductrive ne devait pas être très inspirée non par cette phrase qu'elle a simplement transcrite mot à mot :Cross-border data-atoll investment.

Quelques recherches sur internet ont suffi pour déformer l'expression en Cross-border data flow puis finalement Transborder dataflow qui traduit le fait que les données traversent différentes législations qui les protègent différemment. Cela rappelle étonnamment une technique d'optimisation fiscale Double irlandais qui exploite plusieurs législations. L'interprétation continue avec un article Transborder Data Flows at Risk puis Declaration on Transborder Data Flows. Je dirais alors que l'expression initiale évoque une transformation et un déplacement astucieux d'un ensemble de données intéressant depuis une législation stricte quant à leur usage vers une autre plus permissive par rapport à l'usage qu'on souhaite en faire. Cela évoque d'ailleurs des problèmatiques assez récentes liées au Machine Learning éthique, à l'anonymisation des données Anonymisation des données, à la notion de vie privée au regard de tout ce qu'on sait de votre double numérique.

2017-07-02 Include output of a script in the Python documentation

The directive runpython runs a python script and insert the output in the documentation.

.. runpython::
    
    import sys
    print(sys.version_info)

Every printed information is added to the documntation :

sys.version_info(major=3, minor=6, micro=1, releaselevel='final', serial=0)

Two intersections options :

One extension must be added to configuration conf.py:

    extensions = ['sphinx.ext.intersphinx',
        ...
        'pyquickhelper.sphinxext.sphinx_runpython_extension']

One example (in French) : demo runpython. The second one shows how I use to build content (still French): rendering and source.

2017-07-01 Python module with C functions

This a small module I created with C functions called from Python. The documentation is here cpyquickhelper and the code github/cpyquickhelper. Enabling travis took me some time but I got it finally working.

2017-06-18 Administrateur général des données sur GitHub

Etalab maintient un compte GitHub : github/Administrateur général des données dans lequel on peut trouver des bouts de codes, des jeux de données, comme ces références sur l'anonymisation des données : anonymisation.

2017-05-31 Qu'est-ce qu'un data scientist ?

La réponse en vidéo et l'interview d'un ancien de l'ENSAE, Pierre Cordier, MÉTIER - Antho à la découverte du métier de Data Scientist.

2017-05-17 Les petits détails des ordinateurs portables

Je passe énormément de temps avec les ordinateurs et je réalise qu'un certain confort est indispensable si on ne veut pas devenir fou. Voici quelques détails auxquels je pense quand j'achète un portable.

Je n'aime pas trop les écrans brillants. C'est épuisant et la luminosité doit pouvoir être ajustée depuis le clavier tout comme le son. (OLED vs LED LCD – Which display tech is the best?) Les écrans LCD sont plus mats ce que je préfère. Je ne sais pas vraiment ce qui est meilleur pour les yeux. Ensuite, je n'ai pas besoin d'écran très puissant car je ne joue pas trop avec mes ordinateurs.

Je n'aime pas que la touche CTRL ne soit pas dans le coin inférieur gauche. Sur certains clavier, elle est inversée avec la touche fonction (c'est le cas des Lenovo). Enfin, les anglais n'aiment pas trop les clavier Azerty. Ils font parfois des trucs bizarre quand ils adaptent un Qwerty en Azerty. Mon dernier portable a une touche >< près des touches de déplacement, soit de l'autre côté. Pas possible ! De même pour les touches de défilement de pages et même début et fin de ligne, elles doivent être accessibles directement, sans pression d'une autre touche. Une petite précision pour ceux qui choisissent des Mac ou Apple, le clavier français rend difficile d'accès tous les symbols [] {} qui sont très fréquents quand on programme. C'est joli mais agaçant.

Sur un portable récent, j'ai eu un problème de touche lente à la répétition : j'écrivais normalement comme sur n'importe quel ordinateur mais lorsque je tapais deux fois sur la même touche, seule une lettre apparaissait. On m'a dit : il suffit de ralentir. Celui qui m'a dit ça ne doit pas utiliser un ordinateur tous les jours. HP Spectre X360 Missing Double Keystrokes).

Sur un autre portable, il était impossible de booter depuis réseau (touche F12 au redémarrage), Boot issue after installation on Acer Swift 3 laptop (only with 64 bits version)).

Le disque SSD 256 Go. Je préfère SSD à autre chose même si le disque SSD est plus cher et plus petit.

Le ventilateur ne doit pas faire trop de bruit. Difficile à tester sans faire des calculs. De même, il faut pouvoir le poser sur les genoux sans que ça brûle. Si c'est juste pour écrire, cela ne devrait pas chauffer.


-->

Xavier Dupré