XD blog

blog page


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.

2017-05-11 PyParis

PyParis est la déclinaison parisienne du cycle de conférence pydata. Le programme de cette année est plutôt alléchant. Outre les sujets scientidiques, j'y ai découvert une palanquée de modules que je ne connaissais pas.

camisole est un module (documentatino) qui implémente un service de compilation et exécution de code. Ceci peut se réveler assez pratique pour l'enseignement. La liste des langages supportés est plutôt longue. Une machine virtuelle est mise à disposition. Le module implémente uniquement une API REST. Au détour de la documentation, on voit le package isolate (C). Je vous laisse découvrir ce qu'il fait.

Un talk parlera de PDF. Je n'avais pas imaginer qu'on puisse parler de PDF pendant tout un talk. Mais a priori, c'est possible. Quelques moduless : weasyprint, pdftk, reportlab.

Je ne vais pas assez souvent les extensions Unofficial Jupyter Notebook Extensions. Sans doute parce que qu'elles ne marchent pas toujours. Néanmoins, parmi celles que j'ai déjà utilisées, il y a execute_time, hide_input, ScratchPad (pratique celle-ci). Parmi celles que j'ai envie d'essayer, il y a nbTranslate, Table of Contents (2) (même si je rêverais de l'inclure en javascript plutôt que sous forme d'extension), tree filter, Collapsible Headings qui s'exporte aussi en HTML jupyter nbconvert --to html_ch FILE.ipynb.

Côté machine learning, nous avons Surprise pour construire des systèmes de recommandation (documentation). FreeDiscovery automatise quelques opérations standard d'analyse des données. Il y a pas mal de choses au niveau texte : Python API Reference. Un article Extremal Bootstrapping à propos de Conformal Field Theory. pomegranate qui implémente des modèles bayésiens tels que les Hidden Markov Models (à comparer avec hmmlearn.

Enième workflow engine MRQ mais il a l'air assez simple. FluidDyn est une autre option qui incluent également des fonctionalités de calculs numériques. L'objectif est de réaliser des simulations numériques.

Parmi ceux que je n'utiliserai pas tout de suite PySpice qui encapsule SPICE, un langage pour des circuits électroniques. Un bloq boontadata pour lire à propos de différentes architectures de workflow de données en temps réel.

Enfin Ch'ti code ou comment parler de programmation dans les écoles primaires.

Maintenant, il va falloir que j'aille regarder si tout cela s'installe facilement.

2017-05-10 Un vieux livre remis à jour

En 2009, le support de mon cours sortait sous forme de livre Programmation avec le langage PYTHON. Quand j'y pense ça fait huit ans et j'utilisais Python 2.5. En informatique, huit ans ressemblent à une éternité. Aujourd'hui, j'ai repris le contenu, je l'ai converti au format HTML et j'utilise Python 3.6 : Apprendre la programmation avec Python. J'ai commencé à faire pareil avec ma thèse mais ça risque de prendre un peu plus de temps : Les maths d’abord, la programmation ensuite. Et tout est sur GitHub.


<-- -->

Xavier Dupré