Je remets en route la publication de billets de veille, après quelques mois de silence… Acquisition Marimo is joining CoreWeave ou encore Replicate is joining Cloudflare : ces acquisitions sont intéressantes dans la mesure où elles montrent les convergences entre logiciels et infrastructures à l’heure de l’IA. Backend Pocketbase : un backend en Go s’appuyant sur SQlite pour la persistence des données, fournit une API Rest ainsi qu’un dashboard et fournit la partie authentification. En prime, vous pouvez empaqueter votre webapp dans le binaire. Pratique pour des environnements légers et en alternative à localStorage dans le navigateur. Reste que c’est un projet annexe d’une seule personne et qui ne semble pas vouloir le monétiser plus que ça. Containers Docker Engine v29 : cette release est une restructuration interne de Docker et redéfinit les fondations de Docker Engine. Si les changements sont internes, les impacts externes existent aussi : cela a cassé ma génération d’images Docker via Docker-In-Docker dans Gitlab-CI ou encore les devcontainers dans VSCode. Mise à jour à faire avec prudence donc… Data & IA Why I’m Making the Switch to marimo Notebooks : dans mon cas, je passe plutôt de “rien” à marimo car j’ai jamais accroché avec Jupyter et j’en avais pas tant besoin que ça. Marimo vient de lancer d’ailleurs une extension VSCode/Cursor pour marimo. Juniors & seniors à l’heure de l’IA : une réflexion intéressante sur la façon dont les juniors peuvent devenir seniors et où finalement le modèle actuel de passage de junior vers senior doit être revisité. Dans l’IA, OVH se contente du minimum : Pas tendre avec OVH mais peut-être le plus juste et factuel (vs les fanboys CSP US ou les fanboys Souveraineté FR/EU 😅) IoT Qualcomm rachète Arduino, qui montre son Uno Q, une carte « double cerveau », Qualcomm est-il en train de pervertir l’esprit Arduino ?, Arduino : ce que changent les nouvelles Conditions d’utilisation (analyse complète) : Qualcomm a racheté Arduino début octobre et change les CGU de certains services cloud. La communauté se sent menacée et le prend mal. Le billet de Framboise314 est très complet et mesuré. Mobile Apple JUST quietly announced something that’s a lot BIGGER than it looks: “the Mini Apps Partner Program” : Apple annonce un programme de partenariat pour les mini-apps, des applications web qui peuvent être intégrées dans une “Super App”. Apple envisagerait donc un produit similaire à WeChat ou au projet de Musk de faire de Twitter une SuperApp. C’est un changement majeur dans la façon dont les applications pourraient être développées et utilisées. Ops Cloudflare outage on November 18, 2025 : si la raison de cet incident majeur peut sembler un peu saugrenue (un fichier de configuration qui double de volume), il faut se rappeler que gérer un système distribué à l’échelle de Cloudflare est un vrai défi au quotidien. La transparence de Cloudflare est à saluer et c’est toujours une source d’enseignements. Traefik Proxy 3.6 “Ramequin”: Where Every Layer Counts et The Feature You Didn’t Know You Needed: Multi-Layer Routing in Traefik : dans le cadre de sa version 3.6 et de son lot de nouveautés, une fonctionnalité semble particulièrement intéressante : le routage multi-couches. Ainsi, en fonction de la chaine de routage définie, Traefik peut appliquer des règles différentes en fonction des éléments apportés par chaque “layer” - on pensera notamment à la partie authentification ou à la partie abonnement où on pourrait alors rediriger un utilisateur vers la version premium ou la version gratuite en fonction des réponses apportées par les différents layers. Sécurité Live Updates: Sha1-Hulud, The Second Coming - Hundreds of NPM Packages Compromised : le malware Rha1-Hulud refait parler de lui. We should all be using dependency cooldowns : le “cooldown” permet de ne récupérer les mises à jour disponibles depuis au moins une certaine durée. Cela peut éviter de récupérer des mises à jour qui peuvent causer des problèmes de sécurité comme dans le cas cité ci-dessus. Ce n’est pas infaillible mais cela peut aider, surtout dans le cadre de mises à jour automatiques. Souveraineté Le Comptoir OCTO - Repenser la souveraineté numérique - OCTO Talks ! : c’est une théorie complémentaire à celle d’Ophélie Coelho dans “Géopolitique du numérique” et la gestion des dépendances technologiques : plutot qu’une approche assez binaire, une gestion des risques passe par l’identification des fournisseurs, par l’utilisation des standards et par le développement des compétences pour accroitre son autonomie. Bonne lecture !
Général Stack Overflow Survey: 80% of developers are unhappy : Les raisons de la frustration seraient techniques (dette technique, complexité de la stack technique), organisationnels (réunions, planning, pression) ou plus globaux comme les licenciements massifs dans la tech. IoT Why has the Internet of Things failed? : Moins de 50% des objets IoT seraint effectivement connectés. 3 barrières principales : la configuration intiale, l’(in)utilité de l’objet en lui-même et l’énergie (alimentation et communication). Sans utilitée avérée de l’objet, il ne sert à rien d’optimiser les deux autres. Si on a l’utilité, alors il faut trouver les meilleurs compromis pour avoir une bonne UX de configuraiton initiale et une gestion énergétique du device. Peut être juste la fin de la cycle de hype pour l’IoT et en route vers la maturité ? Ops PyIfra 3.0 & 3.1 : pyinfra se veut une alternative à Ansible. Si pyinfra ne dispose pas (encore) d’un nombre équivalent de modules à celui d’Ansible, il se distingue d’Ansible par le fait que les tâches ne sont pas décrites au format YAML mais sont du code Python. La version 3.0 résoud principalement les limitations de PyInfra 2.x sur son mode d’exécution en deux étapes (préparation puis exécution). A tester et à surveiller à défaut de pouvoir complètement remplacer des playbooks Ansible pour le moment… Python pylyzer : vous aimiez Ruff sur la partie linter, alors vous pourriez aimer pylyser sur la partie typage. Le projet est encore jeune et incomplet mais semble prometteur. Une extension VSCode est d’ailleurs disponible. uv: Unified Python packaging : l’équipe Astral, celle derrière ruff semble bien avancer sur leur gestionnaire de packages pour python (mais codé en rust). Si la version précédente se concentrait sur le remplacement de pip, cette version va plus loin et vise poetry ou pdm voir pyenv en allant jusqu’à l’instalation de python en lui-même. En plus des apports fonctionnels, les performances semblent aussi être au rendez-vous. Peut-être encore un peu tôt pour migrer vos projets dessus mais définitivement à surveiller. Sécurité The End of Role-based Security and the Rise of Attribute-based Security : le modèle des rôles est vite imparfait - un modèle basé sur les attributs serait plus flexible et adapté ? Rendez-vous à la fin du mois prochain pour une nouvelle édiiton.
Je l’évoquais dans le billet “Bilan 2021 et perspectives 2022”, je peux en parler maintenant officiellement : j’ai été contacté par Flovea pour piloter le projet Flowbox Interactive et mettre en place l’équipe projet associée. Après trois mois environ de mission permettant de faire connaissance, d’auditer la solution existante, de définir une roadmap et de mettre en place l’équipe projet, mon recrutement en tant que DSI/CIO de Flovéa est acté depuis début avril. J’ai le plaisir de rejoindre une belle équipe pour réaliser un beau projet tant d’un point de vue technique que d’un point de vue du sens et de son utilité. La seule ombre au tableau étant le contexte de pénurie de composants qui illustre bien la dimension “hard” d’un projet “hardware”.
Code & Langages httpx : en gros, requests mais avec le support de l’asynchrone. L’API semble être la même. httpx peut aussi s’installer en tant que cli. The Algorithms - Go : collection d’implémentation d’algorithme en Go à fin d’apprentissage Fonts Luciole : La police Luciole a été créée à destination des personnes malvoyantes et apporte un certain confort de lecture et une meilleure lisibilité. Hardware The Semiconductor Ecosystem – Explained : Pour ceux qui veulent en connaitre un peu plus sur le monde des semi-conducteurs. IoT Anomaly Detection: Glimpse into the Future of IoT Data : intéressant le triplet Objet IoT, Edge / Data Routeur capable de réaliser des opérations et le noeud central. L’edge computing permet d’éviter de saturer le noeud central et de prendre des décisions au plus près de l’objet IoT. Ops Announcing Traefik Proxy 2.6 : amélioration sur le protocole HTTP/3, nouveaux middleware de “rate-limiting” au niveau TCP, amélioration au niveau de la Kubernetes API Gateway ou encore support de Consul Enterprise. Firecracker v1.0.0 : la MicroVM créée par AWS pour Fargate et Lambda passe en version 1.0 Podman v4.0 has been released! : nouvelle verison do podman avec pas mal de nouveautés. Introducing Nebula, the open source global overlay network from Slack : Présentation de nebula, la solution de connectivité de Slack qui a remplacé leur VPN basé sur IPSEC. Our User-Mode WireGuard Year : retour d’expérience de Fly.io sur leur usage de Wireguard pour permettre un accès SSH à leur VMs / Conteneur dockers. Le réseau de zéro - Partie 1 & Partie 2 : pour comprendre ce qu’il se trame sur votre réseau en partant de zéro. Outils jless — a command-line JSON viewer : un outil en ligne de commande pour parcourir/explorer vos fichiers JSON. RGPD & Vie Privée Utilisation de Google Analytics et transferts de données vers les États-Unis : la CNIL met en demeure un gestionnaire de site web : vers une interdiction partielle ou complète de Google Analytics ? Prochaine cible, les Google Fonts ? Google Analytics : retour sur la mise en demeure de la CNIL : une synthèse en l’état de la situation par NextInpact. Time Series Year of the Tiger: $110 million to build the future of data for developers worldwide : Timescale fait une 3ème levée de 110 M$ et atteint le statut de licorne avec une valorisation à 1 Mds $ Time Series Feature Extraction Library (TSFEL for short) : Bibliothèque Python à destination des Data Scientistes permettant d’extraire des features de séries temporelles avec 60 fonctions statistiques / temporelles / … Increase your storage savings with TimescaleDB 2.6: Introducing compression for continuous aggregates : Version 2.6 de TimescaleDB avec principalement de la compression autour des “continous aggregation”.
Routine habituelle de début d’année pour la clôture de ce 5ème exercice (déjà !). Bilan 2021 Au global, une année mitigée qui se termine un peu sur le fil du rasoir au niveau comptable. Pour la partie positive, j’ai l’impression que cette année a été “l’année des possibles” où les efforts commencés les années précédentes commencent à payer. Des premiers projets en Go, des missions Time Series intéressantes et ambitieuses par certains aspects et un projet annexe en Python/Django sur la fin d’année qui consolide différents éléments permettant de gagner en confiance et de réduire un peu ce cher syndrome de l’imposteur avec lequel j’apprends à composer et à dépasser parfois.
Contexte Flovéa travaille depuis plusieurs années sur une solution de plomberie connectée. Elle souhaite maintenant passer à une échelle industrielle en terme de fabrication et de déploiement, commercialiser son service Predictive FLOWBOX et l’enrichir de fonctionnalités liées à du marchine learning. Sa solution doit permettre de contrôler à distance un circuit d’eau, de suivre sa consommation et d’identifier des consommations anormales, ainsi que de détecter des fuites. Flovéa souhaite se doter des compétences techniques en interne pour concevoir, piloter et réaliser le projet. Elle cherche donc à recruter le responsable du projet. C’est dans ce contexte que CérénIT a été contacté. Après 3 mois de missions, l’embauche de Nicolas Steinmetz en tant que DSI/CIO de Flovea est actée.
Le projet Nous Aérons propose de réaliser ses propres détecteurs de CO2 avec un ESP32 avec un écran comme le Lilygo TTGo T-Display et un capteur Senseair S8-LP. L’idée est donc de déployer plusieurs capteurs, faire remonter les valeurs via ThingSpeak et ensuite les ingérer puis analyser avec Warp 10 et faire un dashboard avec Discovery. Montage Pour le montage, je vous invite à consuler principalement : Capteur de CO2 et le code Les instructions des projets “BEL AIR” et “GRAND AIR” à récupérer via le site de Nous Aérons Premiers pas ESP32 : Application de démo du TTGO T-Display : pour la configuration d’Arduino IDE - pour l’application de démo, les chemins ont changé par contre. Sous OSX, j’ai du récupérer la version 1.6+ du driver du chipset et être en mesure d’avoir le port /dev/cu.wchusbserial* afin de pouvoir uploader le code depuis Arduino IDE vers l’ESP32. ThingSpeak L’exemple de code fourni utilise le service ThingSpeak pour la remontée des valeurs. Comme il s’agit de mon premier projet Arduino et que cela fonctionne, j’ai cherché à rester dans les clous du code proposé et tester par la même occasion ce service. J’aurais pu directement poster les valeurs sur mon instance Warp 10 mais c’est aussi l’occasion de tester la récupération d’informations via le client MQTT de Warp 10.
La prochaine édition de Time Series France aura lieu le mardi 30 Mars à 18h avec la présentation de la base StuteoDB, basée sur Apache Cassandra. Par ici pour les détails et inscriptions. Container et orchestration Introducing GKE Autopilot | Google Cloud Blog : Google sort sa version de GKE où l’on ne gère plus les nodes. Intéressant sur le papier mais cela suppose aussi de bien définir ses limits/requests pour payer le bon prix. GKE Autopilot, with Yochay Kiriaty - #139 - Kubernetes Podcast: Episode du Kubernetes Podcast sur GKE Autopilot A Kubernetes User’s Guide to HashiCorp Nomad : Nomad peut être vu comme une solution d’orchestration de conteneurs plus légère et simple que Kubernetes. Néanmoins, elle n’est pas aussi complète - il faudra vite rajouter Consul et Vault dans l’équation. Hashicorp Nomad 1.0.4 : version de maintenance apportant ses améliorations et ses correctifs. Hashicorp Vault 1.6.3 : version de maintenance avec un correctif de sécurité Hashicorp Consul 1.9.4 : version de maintenance apportant ses améliorations et ses correctifs. Docker 20.10.4 et 20.10.5: version de maintenance Time Series TimescaleDB 2.1.0 : Support de Postgresql 13.2+ et support des ajouts et renommage de colonnes pour les hypertables TimescaleDB 2.0.2 : Version de maintenance Warp 10 2.7.4 : Version de maintenance, correction d’un bug sur datalog lors avec l’image docker Warp 10 2.7.5 : Version de maintenance, rajout du fichier VERSION perdu en 2.7.4, ajout des fonctions de crypto autour de “Shamir Secret Sharing Scheme” (->SSSS et ->SSSS)/ Edge computing: Build your own IoT Platform : Article très détaillé sur l’utliisation de Warp 10 dans un contexte IoT, depuis la partie edge jusqu’à la partie centrale de votre projet. Review of DELL compatible batteries using Warp 10 : Ex de l’usage de CALL pour appeler un script local et en récupérer les données puis les manipuler et les ingérer dans Warp 10 Paris Time Series Meetup devient Time Series France : Pour être plus représentatif de l’audience et des contributeurs, le PTSM se renomme Time Series France TL;DR InfluxDB Tech Tips — Time Series Forecasting with Telegraf : Telegraf dispose de processeurs que l’on peut exécuter sur les données collectées. Dans cet exemple, la donnée est enrichie par le résultat d’un traitement de prévision de valeurs. Si d’un coté, on peut s’étonner de faire des traitements à l’endroit de la collecte et se demander si c’est une bonne idée d’un point de vue ressources matérielles ou profondeur de données disponibles pour le traitement, d’un autre cela ouvre aussi des possibilités dans un déploiement de type “edge” pour permettre des traitements au plus proche et au plus rapide avec une boucle de feedbacks très courte. databrickslabs/tempo - replay du meetup de présentation de Tempo: Databricks propose la librairie Tempo à utiliser avec Spark pour préparer et manipuler plus facilement des données de type séries temporelles. Getting Started with Time Series Data Science : InfluxData publie une collection d’articles et de ressources sur la manipulation des données issues d’InfluxDB d’un stade débutant à un stade plus avancé. Release Announcement: Telegraf 1.18.0 & New in Telegraf 1.18.0: Beat, Directory, NFS, XML, Sensu, SignalFX and More! : nouvelle version de l’agent de collecte Telegraf avec un lot conséquent d’améliorations.
Cloud Traefik Proxy 2.4 Adds Advanced mTLS, Kubernetes Service APIs, and More : Support du Proxy Protocol pour les services TCP, support avancé pour mTLS (et possible intégration Consul Connect) et support initial de la nouvelle API Service de Kubernetes pour les principales avancées. Le programme pour la 2.5 semble aussi alléchant : support HTTP/3, migration vers networking/v1 de Kubernetes et une nouvelle documentation (encore ?!). OVHcloud obtient le Visa de sécurité ANSSI pour sa qualification SecNumCloud : OVHCloud obtient la certification SecNumCloud de l’ANSSI pour sa solution “Hosted Private Cloud”. Code GitLab release feature report : le code qui permet de générer le rapport ce qui a changé entre les versions de Gitlab. SSH is the new GPG : les dernières versions d’OpenSSH permettent de signer un fichier. Une solution intermédiaire entre de la signature de fichiers à base de MD5 & co qui donnent des informations de conformité mais sans indiquer qui a signé le fichier et une solution GPG plus complexe à mettre en oeuvre ? Container et orchestration Using Podman and Docker Compose : podman, le “daemonless container engine” va permettre d’être utilisé avec docker-compose dans le cadre de la version 3.0. De quoi favoriser l’adoption de podman ? Infra as code New LibSSH Connection Plugin for Ansible Network Replaces Paramiko, Adds FIPS Mode Enablement : Ansible change de librairie pour les connexions ssh en remplaçant paramiko par libssh. Elle se veut plus performante et peut être requis dans un contexte demandant du FIPS. Pensez à installer le paquet libssh-dev(el) suivant votre distribution pour pouvoir installer ansible-pylibssh. Mes premiers essais ne notent pas une amélioration sensible des performances… à voir sur d’autres machines et dans la durée… IoT openHAB 3.0 Release et Release Notes : OpenHAB est une plateforme open source de gestion de périphétiques IoT et d’automatisation autour de ces périphériques. Elle est développée en Java, support 2000 “Things” (objets, équipements, protocoles). La version 3.0 apporte une refonte et l’unification de l’UI et des composants, le passage à Java 11 et plein d’autres choses. La migration depuis une version 2.x se fait assez simplement. Avec le nouveau moteur de règle, j’ai pu supprimer mon code spécifique. Reste encore la partie “Pages” à appréhender… J’avais préféré OpenHAB à Jeedom et Home Assistant Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 : la fondation Raspberry Pi se lance dans les micro-controlleurs avec le Pico au prix de 4$. Raspberry Pi PICO la carte Microcontrôleur de la Fondation : un article très détaillé sur la prise en main du pico. Observabilité Métriques, monitoring, push vs pull, Riemann, Vector : Panorama sur le push/pull dans le monde du monitoring et tour d’horizon des solutions existantes pour arriver à Vector dont je vous parlais le mois dernier. Une introduction à Vector : Tout est dans le titre, mise en place de quelques outils remontant des métriques et des logs et ingestion des métriques dans InfluxDB via Vector. OVHCloud > Logs Data Platform > Using Elasticsearch API to send your logs - Use Case: Vector : Si vous utilisez l’offre Logs Data Platform d’OVHCloud pour vos logs, vous pouvez utiliser le sink elasticsearch de Vector pour envoyer vos logs vers Logs Data Platform. First-class Kubernetes Integration for Vector : Dans le cadre de la release 0.11, Vector a annoncé un support de Kubernetes avec une phase de collecte et d’enrichissement des logs. Cela mériterait d’être creusé… Système CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) & Buffer overflow in command line unescaping: il est temps de patcher vos systèmes linux utilisant sudo - l’attaque permet de faire une élévation de privilèges si le fichier sudoers est présent sur le système (en général: /etc/sudoers). Les versions 1.8.2 à 1.8.31 et 1.9.0 à 1.9.5-p1 sont impactées, il faut passer en version 1.9.5-p2. Time Series Erlenmeyer and PromQL compatibility : OVHCloud, dans le cadre de leur offre OVH Metrics, a développé Erlenmeyer, un proxy qui permet de convertir différents format de séries temporelles (Promql, Influxql, OpenTSDB, etc) au format Warp 10 qui est utilisé pour stocker ces métriques. Le billet porte sur leur retour d’expérience sur l’utilisation du “PromQL compliance tester” pour valider qu’Erlenmyer supportait bien les requêtes PromQL. TimescaleDB 2.0 GA : User Defined Functions, Multi-Nodes, les fonctionnalités de la version Entreprise dans la version Communautaire et plein d’autres améliorations/corrections/optimisations. Cf TimescaleDB 2.0: A multi-node, petabyte-scale, completely free relational database for time-series Paris Time Series #9 : Comment gérer la labellisation des séries-temporelles et la détection d’anomalies grâce à InfluxDB ? : Présentation de Julien Muller d’ezako sur la labellisation de séries temporelles et de la détection d’aonomalies en s’appuyant sur InfluxDB pour le stockage de ces données temporelles. InfluxData closes 2020 with exponential cloud growth, expanding user base, and big new customers : bilan 2020 pour InfluxData avec quelques chiffres sur la croissance de leur offre cloud (x13), utilisateurs du free tier InfluxCloud (x5), Répartition des (nouveaux ?) cllients (OInfluxCloud) 55% USA et 45% Europe, 450K instances OSS actives, quelques grosses références et un développement à venir en Asie/Pacifique. Telegraf 1.17 : version pour laquelle je découvre le processeur Starlark. Ce processeur permet de définir une fonction sur les métriques permettant par exemple de ne remonter une valeur que si elle est différente de la précédente. Cela peut économiser des données dans des systèmes contraints. Infographic: What happened in 2020 for SenX? : retour de SenX sur l’actualité autour de Warp 10 (mais pas que) Parution des premiers tutoriels FLoWS : FLoWS Basic et FLoWS vs WarpScript Warp 10 2.7.2 : version de maintenance. Alerts are real time series : et si les alertes étaient elles-mêmes des séries temporelles ? S’il était assez évident de dissocier la partie génération de l’alerte (traitement) de la partie notification, on peut aller encore plus loin en matérialisant ces données d’alertes sous la forme d’une série temporelle. Une approche intéressante qui ouvre des possiblités de traitement et d’analyses complémentaires alors que les logiciels actuels ne persistent pas souvent/longtemps cette information. Utilisation des séries temporelles dans le cadre du Vendéee Globe : Vitesse et amures pour le bateau de Boris Herrmann - Seaexplorer Yacht Club de Monaco avec Warp 10 et l’ensemble des données du même bateau mise à disposition : Live data from Seaexplorer - Yacht Club de Monaco. Il y a des séries temporelles plus intéressantes que d’autres ! 😉 High Performance Sailing Monitoring for the Vendée Globe : le making-off du tweet ci-dessus et bien plus encore !
Routine habituelle de début d’année pour la clôture de ce 4ème exercice (déjà !). Bilan 2020 Au global, une bonne année au regard des conditions - les objectifs sont remplis. D’un point de vue comptable, cela donne : 2020 2019 2018 2017 Variation n/n-1 Chiffre d’affaires ~138 K€ ~150 K€ ~132 K€ ~100 K€ -8% Résultat après impôts ~8 K€ ~13.5 K€ ~10 K€ ~20 K€ -41% Jours facturés 175 197 178 160 -11% TJM 789€ 761€ 742€ 625€ +3.6% Contrairement aux autres années, les jours facturés ne prennent plus en compte des prestatations forfaitaires (comme l’infogérance, etc) pour lesquelles je faisais un équivalent jour. J’ai ajusté les valeurs de ce tableau mais je n’ai pas mis à jour les synthèses 2019, 2018 et 2017. Cela a pour conséquence d’améliorer sensiblement le TJM.
On orchestre, on conçoit — et on code aussi. Parlons de votre plateforme, vos données ou votre projet IoT.
Contactez-nous →