Depuis deux mois, je travaille à distance. Original, me direz-vous. Les activités culturelles et sociales étant très réduites, et puisque j’ai plusieurs projets en cours nécessitant de coder (pictoparle, svg-to-stl, flatten.js, unkm.fr, Timeline), j’ai repris un mode de vie proche de celui de mes années lycée et premières années universitaires : un marathon hebdomadaire de geekeries en tout genre. L’occasion de sortir des sentiers que j’avais trop battus, et de découvrir de nouveaux outils, librairies, technologies… Voici un petit tour d’horizon non exhaustif, qui semblera banal à certain·e·s geeks, mais que j’ai pris plaisir à découvrir.
Avertissement : certain·e·s logiciels ou bibliothèques listées ci-dessous ne sont pas libres au sens de la GPL, car distribué·e·s sous licences équivalent BSD. Je m’excuse d’avance pour toutes les personnes qui pourraient être choquées par ces pratiques légères… (fin du message destiné à Fred)
Rédaction
J’ai déjà écrit il y a peu pour parler de MDwiki, mais j’avais envie de parler aussi un peu de mkdocs, que j’utilise maintenant massivement pour fabriquer les sites internet de mes différents projets, professionnels ou personnels (merci Vincent Mazenod). Facile à prendre en main, il s’appuie sur une hiérarchie de documents au format markdown, dispose d’un maximum d’extension et de thème, dont le très chouette Material, notamment en action sur le site de pictoparle. Pour regarder sous le capot, vous pouvez aller faire un tour sur le dépôt qui contient le code source de ce site internet.
Android
Avec Pictoparle justement, j’ai exploré à fond les bonnes pratiques d’Android, ainsi que quelques bibliothèques bien pratiques. Je pense notamment à zxing, conseillé par Laurent Provot, pour lire les QRcodes. Super simple à intégrer et à utiliser, c’est le pied.
J’ai aussi pu découvrir le mécanisme de la communication entre processus conseillée par les concepteurs d’Android, et très bien documentée dans cet article de Janishar Ali. Le principe général est d’avoir une boucle, qui permet aux processus d’échanger des instructions exécutables, ou Runnable. Les ThreadHandler s’occupent de récupérer les instructions destinées à leur processus, en écoutant ce qui circule sur la boucle.
J’ai aussi découvert le mécanisme des fragments, permettant de générer automatiquement un graphe de navigation dans les différentes vues de l’application. J’ai aussi mieux compris comment fonctionne le multitouch sous Android, très orienté détection de gestes, et que j’ai un peu contourné pour permettre à mon outil d’ignorer les doigts supplémentaires à la surface des pictogrammes.
Géométrie et géomatique
Les opérations booléennes entre formes géométriques (union, intersection, différence) sont souvent peu stables, notamment quand elles travaillent avec des nombres à virgules flottantes. C’est encore plus vrai quand il s’agit de gérer des superpositions de bords d’objets… En javascript, j’ai découvert la librairie martinez, implémentation d’un article de 2018, qui marche relativement bien, en prenant en compte plein de cas limites, et qui est très rapide. D’abord utilisée dans svg-to-stl, je l’ai aussi réutilisée dans unkm.fr pour rechercher efficacement les intersections entre routes.
J’ai aussi découvert RBush et fastbush, deux outils de détection rapide d’intersection entre rectangles, que j’ai utilisé dans svg-to-stl et dans unkm.fr.
J’ai aussi redécouvert la simplicité d’utilisation de leaflet, qui permet très rapidement de dessiner des choses sur une carte. C’est d’ailleurs un outil que j’utilise avec les copains du projet Compas. On aura bientôt des choses à montrer, j’espère !
Enfin, mapshaper qui permet de manipuler en ligne de commande des données géographiques au format shapefile ou geojson, par exemple pour simplifier les contours des départements dans unkm.fr :
mapshaper -i input.shp snap -proj wgs84 -simplify 25% weighted keep-shapes -o format=geojson precision=0.00001 output.json
Scripter, programmer
Mapshaper permettant de fabriquer des geojson, on peut vouloir les modifier, comme ce que j’ai fait avec les départements, grâce au super outil jq. On écrit des règles de filtrage, de parcours, de sélection, comme à l’époque des vénérables XPath et XSLT, le tout en ligne de commande. En une ligne, on extrait d’un gros fichier la géométrie de chaque département :
jq -c ".features[] | .properties.code_insee" output.json | while read line; do fname=${line//\"}.json; jq -c ".features[] | select(.properties.code_insee==$line)" output.json > $fname; done
Il faut aussi que je confesse ici avoir mis un doigt dans VSCodium (encore une fois grâce à Vincent Mazenod). Cet éditeur de code développé par Microsoft est super bien pensé, il se fait transparent, s’adaptant fluidement aux usages, avec pas mal de fonctionnalités discrètes mais efficaces. Distribué sous licence libre (enfin MIT), il est disponible sur la plupart des systèmes d’exploitation, notamment dans une version allégée des parties de tracking et de télémétrie maintenues par Microsoft.
Multimédia
Dans la famille des outils multimédias, j’ai d’abord découvert avec grand plaisir que kdenlive était devenu un éditeur de vidéo très stable. Mon souvenir datait de 10 ans en arrière, et c’était plutôt un souvenir sombre. Je l’ai cependant utilisé pour une toute petite transition, mais il a fait le job très bien. J’ai aussi fait un peu de modélisation 3D avec blender, en profitant des bonnes pratiques que Blender Guru présente sur sa chaîne youtube, que je suis avec grand plaisir. Même si j’ai utilisé une version 2.7x, les vidéos de ces derniers mois autour de blender 2.8x donnent très très envie de s’y frotter.
En parlant de nouvelles versions de logiciels, je ne peux pas m’empêcher de signaler qu’inkscape vient d’être publiée en version 1.0. La vidéo de démonstration montre une évolution dans la continuité des versions précédentes, avec des concepts simples, mais efficaces :
Et pour finir, je profite de ce billet pour partager la découverte il y a quelques mois de spleeter, l’outil conçu par Deezer pour séparer la voix des musiques depuis un fichier son. Idéal pour se préparer un karaoke ! Le résultat est souvent bluffant, et il semble utiliser massivement l’apprentissage profond. À essayer !