Monthly Shaarli
May, 2022
Une extension pour avoir une sidebar d'onglets.
Ils sont classés hiérarchiquement en fonction des onglets que vous avez ouverts depuis un autre onglet.
Un site qui regroupe des demo visuel en Javascript en utilisant le moins de caractères possible 😄
https://www.dwitter.net/d/25451
https://www.dwitter.net/d/25556
Une ville entière https://www.dwitter.net/d/25311
Comment évaluer la complexité d'un logiciel ?
- nombre de lignes de code
- structure du code (boucles, conditions, indentation)
- couplage entre les modules
Les suites du hack de Github via le OAuth de Heroku: NPM a aussi été touché.
Une raison de plus pour éviter d'utiliser OAuth entre tous vos sites, plus vous l'utilisez et plus vous êtes vulnérable.
Perso j'utilise très rarement celle de Github et fait régulièrement le ménage mais je n'utilise jamais celle de Google par exemple.
Une utilisation de la metaprogrammation en Javascript pour ajouter des simili propriétés sur n'importe quoi, même les nombres par exemple.
1[to(8)] // [1, 2, 3, 4, 5, 6, 7, 8]
const hex = Metho.add(
Number.prototype,
function() { return this.toString(16) }
)
console.log(65535[hex]) // 'ffff'Comment désactiver l'identifiant unique utilisé sur Android et iOS par les data brokers pour nous tracker entre toutes les applications
Court documentaire (~15min) sur les conséquences environnementales et sociétales d'un monde à +3° en moyenne
Les employés d'Apple avaient menacé de partir après que l'entreprise force le retour au bureau 3 jours par semaine.
Ils ont commencé à mettre ces menaces à exécution et on observe une fuite de leurs meilleurs ingénieurs.
Une très bonne vidéo sur le fonctionnement de la suite d'outils LLVM qui permet de créer plus facilement des langages compilés ahead of time comme C++ ou Rust.
LLVM gère une représentation intermédiaire du langage, un peu comme le bytecode Java ou Javascript, qui est ensuite traduit vers les différentes architectures de CPU.
Cette représentation intermédiaire est optimisé par LLVM et peu être inspecté par tous les outils LLVM compatibles
L'utilisation de la GPL empêche les utilisateurs d'utiliser votre code sans publier le leur en licence GPL également.
La solution est de vendre une licence commerciale pour ceux qui en ont besoin, tout en conservant les avantages de l'open source
Un framework fullstack avec une structure et une syntax inspirée de Ruby On Rails (particulièrement pour l'ORM).
C'est un des créateurs de Github derrière ce projet, pas étonnant que ça ressemble autant à Rails!
Ils exposent une API GraphQL, une auth générique, un ORM basé sur Prisma et utilisent React pour le frontend
Un retour d'expérience sur Deno plutôt que Node.js en production
Article sur le scaling de connexion WebSocket avec RabbitMQ et Nginx.
La seule question c'est: pourquoi Socket.IO 😬
Le package ws ou encore uwebsockets sont beaucoup plus performants
Claap est un service qui permet d'enregistrer des vidéos puis chacun peut la visionner plus tard et commenter des endroits précis de la vidéo.
C'est parfait pour les retours d'UI par exemple
Une alternative à Kafka, RabbitMQ et autre système de message queue.
Celui la est très moderne, portée par la Cloud Native Computing Foundation (CNCF), avec de super fonctionnalités supplémentaires:
- rejouer les messages avec le timing originel: parfait pour rejouter les messages de la prod et staging
- acquittement unitaire des messages
- démarrer un consumer à une date précise
Plus d'info 👉 https://docs.nats.io/nats-concepts/jetstream/consumers
Des astuces pour mieux utiliser console.log. (Certaines ne fonctionnent pas en Node.js)
Perso j'aime beaucoup afficher les variables dans un objet, c'est plus lisible je trouve:
const name = 'aschen';
const age = 28;
console.log({ name, age }); // { name: 'aschen', age: 28 }
Des applications mobile minimalistes sans pub! Calculette, explorateur de fichiers, lampe torche, etc.
Une lib pour créer des workflows visuels à la NodeRed
Une alternative Open Source à Google Analytics plus légère et facile à mettre en place que Matomo
Une base de donnée qui propose les feature de Git !
On peut cloner sa base de donnée, faire des changements, les commits et merge dans master.
Je sais pas ce que ça vaut mais le concept est génial
L'Europe veut imposer un mécanisme de vérification d'identité sur Internet sous prétexte de protection des enfants
Les microservices apportent avec eux une complexité beaucoup plus grande notamment dans la traçabilité des erreurs et le debug dans un écosystème distribué sur le réseau.
Leur utilisation ne doit être envisagé que lorsqu'il y a de gros besoins de scalabilité
Un type de supply chain attack peu répandu mais particulièrement difficile à détecter si correctement réalisé.
Créer un compilateur avec une backdoor capable de répliquer cette backdoor dans les programmes compilés
Excellente vidéo sur la revue de code.
- Vous n'êtes pas votre code: laissez votre égo de côté
- Vous embarquez votre status social en revue de code
- Soyez empathique
Désavantages imprévus de la revue de code:
- perte d'ownership des développeurs sur leur code
- moins d'opportunité d'apprendre de ses erreurs
Le monde inquiétant des data brokers et la quantité phénoménale d'informations qu'ils possèdent sur nous.
Entre la corrélation qui contourne l'anonymat et les fuites de données, il faut s'attendre à de moins en moins de sécurité des données personnelles
Une vente de NFT d'un acteur très connu génère plus de 55000 transactions en 1 week-end ce qui a sérieusement congestionné Ethereum.
Le frais de transaction ont énormément augmenté et certaines transactions n'ont pas pu être complétées, mais les frais sont quand même dus ! On parle d'un total de 157 millions de dollars perdu en frais de transaction
Les supply chains attack visant NPM sont de plus en plus courantes.
Cette fois c'est les paquets du namespace Azure qui étaient visés
Très bon résumé de la manière dont sont écrites et lues les données sur un SSD.
L'article donne des conseils pour optimiser les lectures et écritures. C'est assez bas niveau mais ça peut être intéressant si on développe une base de données par exemple
Critique constructive de GraphQL, notamment sur la complexité de maintenance et les performances
Dagger est un framework pour unifier les CI/CD.
La promesse est d'écrire des actions en suivant leur syntax et de supporter les CI/CD les plus populaires: Github, Gitlab, Jenkins, CircleCI
gRPC est un framework pour faire du Remote Procedure Call développé par Google.
Ça utilise des Protobuf donc des messages binaires pour un maximum de performances.
Nombreuses utilisations comme communication entre micro-services mais aussi client / serveur.
Un projet porté par Spotify pour centralisé les services, librairies, modèles ML, etc.
On dirait un genre de Github auto-hébergé mais avec une portée beaucoup plus grande que simplement des dépôts Git.
Un bon article pour démarrer dans l'observabilité des applications et en comprendre les enjeux.
L'auteur parle notamment de OpenTelemetry qui sort de plus en plus son épingle du jeu dans le domaine en proposant un standard et plusieurs librairies prêtes à l'emploi pour observer les frameworks / applications les plus connues
Un algorithme de compression spécialisé dans les séquences numériques (e.g. Time Series)
Article du CTO de Alan et de son évolution dans une startup passée de 2 à 500 personnes en 6 ans.
Il parle notamment de "se virer" tous les 6 mois d'une partie du produit pour passer la main et faire avancer une autre partie de l'entreprise
Du tooling pour lancer et debugger ses Github Actions en local, plus besoin d'attendre la CI <3
Liste de formulations politiquement correctes
Par exemple au lieu de dire "cette réunion est une perte de temps", dites plutôt "Je ne suis pas en mesure d'ajouter de la valeur à cette réunion mais je serais heureux d'examiner le compte rendu"
Utilisation des Server Side Events à la place de WebSocket pour des notifications temps réel (GraphQL Subscriptions).
- stack technologique HTTP
- meilleurs perfs avec support HTTP/2
- moins de connexions TCP ouvertes
Les perfs de Rust + WASM comparé à JS ne sont pas suffisantes (~x2) pour justifier la complexification de la stack technique
Total prévoit un projet qualifié de bombe climatique avec le soutien des banques françaises BNP Paribas, Société générale et Crédit Agricole.
34 millions de tonnes de CO2 supplémentaires par an, soit 10% des émissions de la France
Un bon article pour comprendre la souplesse de Jupyter Notebook pour construire tout type d'applications.
Un gel composé de cellulose et d'un additif alimentaire courant permet d'extraire jusqu'à 6l d'eau par jour et par Kg de gel depuis un air plus sec que celui du désert, et tout ça pour un coût de matières premières de ~2€. Impressionnant !
Retour d'expérience sur Github Copilot.
Malgré les polémiques, on est forcé de constater que l'outil est surpuissant.
Je l'utilise aussi tous les jours et je dois dire que je suis bluffé, par exemple Copilot est très bon avec la doc ou les tests unitaires !
Une carte qui recense l'émission de gaz à effet de serre (équivalent CO²) en fonction du kWh d'électricité consommé.
Ils calculent ce taux d'émission de CO2 pour chaque pays en fonction de la production d'énergie et ils prennent en compte les import/export d'énergie.
On note que le nucléaire est à 12g de CO2 par kWh contre 45 pour le solaire et 11 pour l'éolien (sinon le gaz et le charbon allemand sont à 490 et 820)
Une IA de Google qui génère des images à partir de textes.
"A transparent sculpture of a duck made out of glass."
"A robot couple fine dining with Eiffel Tower in the background."
Très bon récapitulatif sur btrfs, le système de fichier "moderne" avec des fonctionnalités comme les snapshots et la compression automatique.
Chez Gitlab ils analysent les questions posées sur Stackoverflow pour comprendre quelle partie du produit manque de documentation où quel article technique serait intéressant à écrire.
Dans cet article, l'auteur met en avant un des gros problème du web3, étant donné qu'il est sensé être dans la blockchain alors il faudra payer les mineurs pour tout. Ce qui ne contribuera pas à plus de décentralisation, au contraire.
Cela fait 13 ans que la blockchain existe et à part la spéculation et l'extorsion il n'y a pas beaucoup de véritables usecases. (De vrais projets existent quand même, jetez un œil à https://sia.tech/)
On essaye de nous vendre la même chose avec des noms différents et les religieux de la blockchain s'empressent de partir en croisade. En même temps je les comprends car ils ont besoin de nouvelles brebis pour que leurs NFTs continuent de valoir quelque chose.
Un autre outil à ajouter à sa CI pour vérifier des règles en dehors du code comme la taille d'une PR, la mise à jour d'un fichier de changelog, la présence de tags Github, etc
Un excellent article faisant à la fois l'éloge et la critique de Rust.
Le langage a été choisi par une équipe réalisant un système d'exploitation, ce qui est exactement un des usecase prévus pour Rust.
PROS
- librairie standard très fournie
- modèle de gestion de la mémoire
- le compilateur et les outils qui facilitent les dev et refacto
CONS
- syntaxe un peu "lourde" parfois
- effet "peinture fraiche"
- difficulté de faire des builds reproductibles
La vulnérabilité consiste à créer un lien symbolique à l'emplacement du virus juste après avoir été scanné par l'antivirus mais avant la suppression.
Ce lien symbolique peut cible des fichiers de l'antivirus lui même et donc amener l'antivirus à s'auto supprimer
Le bluetooth low energy (BLE) est vulnérable à des attaques consistants à rejouer des paquets interceptés.
Cela peut être par exemple des paquets d'authentification à un site internet, sa voiture, un dispositif domotique, etc.
Un backend temps réel exposant une API GraphQL pour une utilisation avec les React Hooks (mais pas que)
Stackoverflow a subit différentes attaques DDOS et ils expliquent leurs techniques pour mitiger ces attaques
Impact de la crise économique qui a vu baissé les capitalisations des big tech.
Les salaires mais aussi les levées de fonds pourraient être impactées
Comment lutter contre la frustration et le syndrôme de l'imposteur que peuvent avoir les nouveaux tech leads recrutés.
Très bon épisode du Dessous des Cartes sur la place de la France dans la géopolitique mondiale.
Whoa les chercheurs de chez DeepMind ont fait un pas de plus vers une IA "généraliste" capable de résoudre plusieurs types de tâches.
Comprendre du texte, jouer à des jeux vidéos, reconnaitre des images, Gato est capable de recevoir plusieurs types d'input différents pour restituer des outputs dans le format correspondant (texte => texte, image => texte, etc)
Un bon exemple d'effet imprévu qui part d'une bonne intention: l'implantation de ruches d'abeilles domestiques en ville fait baisser la biodiversité de l'espère entière
Il est maintenant possible d'ajouter une description markdown pour chaque action.
Cette description est ensuite visible dans le résumé d'une action dans l'interface Web.
C'est parfait pour indiquer le status de ses actions par exemple !
Un snake écrit avec seulement 4 integer et des manipulations de bits, dément !
Les Architecture decision record (ADR) servent d'historique des décisions d'architecture technique d'un produit en fournissant des éléments de contexte en plus de la décision et de ses implications.
Le template markdown est mon préféré https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-madr/index.md
Un cours sur la sécurité en Javascript par un des core contributeurs de Node.js.
La première partie est axée Javascript frontend
Un board Jira contient des tickets représentant des hypothèses de création de valeur pour un client.
Comme pour tous, il n'y a pas de dogme. Il ne faut pas hésiter à challenger un board Jira en gardant en vue l'objectif principal: créer de la valeur pour le client
Les consortium FIDO et W3C avec les GAFAM poussent pour remplacer les mots de passes par une authentification via le smartphone pour lutter contre le phishing.
Ce genre d'article donne du crédit au langages "memory safe" comme Rust, je pense que Firefox a fait un bon choix.
Autre chose intéressante, la règle de 2 de Google sur la sécurité, choisir maximum 2 des conditions suivantes:
- le code manipule des données qui ne sont pas de confiance
- le code ne fonctionne pas dans une sandbox
- le code est écrit dans un langage unsafe (C / C++)
Pino est un logger très performant pour l'écosystème Node.js.
Il est 2 à 3 fois plus rapide que Winston et ce n'est pas rien car les logger sont des composants critiques des applications !
Pino s'occupe exclusivement de rediriger les logs sur la sortie standard et ensuite celle-ci peut être rediriger vers des transports Pino pour les services d'agrégation les plus communs
Un proxy distribué conçu pour rassemblé tous le traffic d'un ensemble de micro-services et profiter d'une gestion centralisée.
C'est un logiciel plus avancé que Nginx, Traefik ou HAProxy pour servir de load balancer: automatic retries, rate limiting, circuit breaker.
Une solution complète d'observabilité est aussi intégré directement à Envoy.
Déconstruction d'idées reçues sur le niveau des salaires, segmentation des entreprises, beaucoup d'info très pertinentes sur le marché du recrutement tech
Le retour des applets Java
Un projet pour lancer des applications dans le browser en utilisant une JVM qui tourne en WebAssembly.
L'auteur parle de l'utilisation des WebComponents et autres API standard du web plutôt que des framework complexes de type React
Un GUI Open Source pour Redis assez pratique je trouve car il est assez difficile de visualiser clairement le contenu d'un cluster Redis
Sur quoi faut-il porter son attention lors d'une revue de code
Un assistant pour écrire du contenu, c'est assez bluffant je dois dire
Je suppose qu'ils se basent sur GP3T ou un autre modèle similaire pour générer du contenu en fonction du contexte fourni.
On en arrive à un point ou des robots (Mark Copy) écrivent des textes pour d'autres robots (Google Search) afin d'optimiser le référencement
Article très intéressant qui compare l'emploi du temps d'un manager et celui d'un "maker" (par exemple un développeur).
TLDR;
Les "makers" ont besoin de se concentrer dans des périodes de temps plus longues et parfois une simple réunion au millieu de l'après-midi est suffisante pour perturber la productivité de l'après-midi entière.
Une alternative à OpenFaaS pour du Function as a Service
Comparaison de la taille des vaisseaux spaciaux issus de la science fiction.
Les plus gros viennent de Star Wars, Dune, Warhammer 40000, Independance Day et Halo.
L'ISS est tout en haut encadré en jaune
Le fisc néerlandais utilisait des algorithmes pour repérer de potentiels fraudeurs aux aides sociales.
Une fois identifié comme potentiel fraudeur, c'est parfois des centaines de milliers d'euros à remboursé et au final des milliers de famille brisées, des suicides, ..
Le simple fait d'avoir la nationalité turque ou d'avoir un nom à consonance slave pouvait vous categoriser comme fraudeur potentiel
Utilisation d'un rate limiter pour éviter de se prendre des 429 quand on fait appel à une API externe
Un framework backend pour Dart.
Le principe du 1 fichier = 1 route est franchement limitant et un peu désuet je trouve
Une analyse de la sécurité de Fuschia, le nouvel OS développé par Google pour utiliser sur les smartphones, tablettes et autres objets connectés.
Très bon résumé de la DeFi :-)
"That's what is DeFi now, a lot of worthless boxes in the shape of a pyramid"
Stripe ont migré une de leur application React de Flow vers TypeScript en utilisant un "codemod" pour faire la conversion.
Un outil pour gérer plusieurs versions de Node.js qui pourrait remplacer NVM.
Un retour d'expérience de Gitlab qui a progressivement introduit de plus en plus de feature sur un programme en Go plutôt que dans le backend Rails ou Nginx
Une plate-forme complète pour écrire des applications frontend no-code avec des glissés déposés et des connecteurs à des sources de données (bases de données, API rest etc)
Un bon résumé de ce qu'il est possible de faire avec le JSON en Javascript
Quelques astuces pour réduire la taille de son bundle frontend
Un framework conçu pour optimiser l'utilisation de WebRTC pour de la visio conférence avec réduction automatique des flux vidéos et audio reçus en fonction du nombre de participants et de la visibilité des flux.
C'est du super boulot et c'est open source ❤️
Une extension qui permet de visualiser et d'intéragir avec son cluster Elasticsearch depuis son navigateur.
Comparatif des prix pour 50TB de données sortant pour les principaux cloud du marché.
On a des prix exorbitant à 4500$ pour AWS par exemple. Un bon moyen de s'assurer un vendor lock-in.
Encore une bonne raison de choisir OVH ou Scaleway avec 0$ de coût pour le traffic sortant !
Le marché du recrutement perd la boule avec des processus de recrutement complètement loufoque!
30 candidats réunis pendant 7 jours pour faire des exercices, à la fin ils n'en prennent qu'un.
Excellent article faisant un parallèle entre le prétendu Web3 et le P2P.
Je note cette citation
The Web3 community approaches this from the opposite side: Instead of a lightweight communistic take, they follow a heavyweight libertarian path: Everything should be monetized.
Un bon article sur la collaboration entre le métier et la technique
Un couac dans la levée de fonds participative de Bricks (20 millions) qui va devoir changer les termes de son contrat.
Si la levée avait été inférieur à 8 millions ou réalisé depuis une plateforme agréée, ils n'auraient pas eu ce problème
Très bonne explication du fonctionnement d'un CPU avec un exemple d'émulation d'un CPU simpliste en Javascript
Si vous souhaitez vous lancer avec Flutter je vous conseille de regarder ce kit de démarrage qui contient des exemples d'applications complètes.
C'est un template Github que vous pouvez directement clôner depuis ce lien https://github.com/GeekyAnts/flutter-starter/generate
Excellent 😁
Un framework fullstack qui gère la partie backend et la partie frontend (en React).
Des idées intéressantes par rapport aux traditionnels framework MVP comme une construction autour des routes uniquement et une abstraction du serveur HTTP avec un support de Node, Express, Deno et autres en utilisant le standard de l'API fetch à la place
Whoa le discours pendant la remise des diplômes qui fusille l'école AgroParisTech qu'ils ne considèrent pas en phase avec le défi écologique
Bonnes pratiques pour optimiser les réunions dans son entreprise.
Pleins d'excellent conseils de Gitlab pour éviter le burnout
Si jamais vous en avez marre du yaml, vous pouvez maintenant utiliser Google Sheet pour administrer votre cluster Kubernetes
En règle général il vaut mieux éviter les commentaires dans le code, à la place écrivez du code auto-explicatif (nom des variables, des fonctions)
À l'intérieur des fonctions, les (rares) commentaires doivent donner des informations de contexte impossible à deviner.
Les commentaires restant doivent de préférence être en en-tête des fonctions et très bien rédigés pour être vraiment utiles.
Une utilisation intelligente des instructions SIMD pour faire de la recherche de sous chaines de caractères
Les instructions SIMD ont été créées pour manipuler directement des nombres de 128, 256 et 512 bits (pour faire du SHA en gros)
Une bande dessinée en plusieurs épisodes sur la gestion des émotions, la méditation, la tolérance
Une caricature du management à la française avec les armées de consultants.
J'ai du mal à voir à quel point ça peut être vrai. Plus la structure est grande et plus on doit voir ce genre de choses j'imagine
Un client Kafka qui est un wrapper complet du client officiel en C++.
Ce client supporte les Kafka Stream contrairement à kafkajs qui fait du polling de messages.
En règle général, node-librdkafka est plus complet et plus manipulable, ce qui en fait un bon candidat si vous avez besoin d'intéragir avec Kafka pour re-exposer une partie des API.
Shodan est un service qui scan l'ensemble des IP publiques sur les ports les plus communs pour découvrir les services disponibles sur internet.
Cela permet aux chercheurs en sécurité (et aussi aux pirates !) de découvrir des logiciels vulnérables
Une éloge du framework Fastify pour remplacer Express.
Fastify est très bien conçu et Express beaucoup trop vieillissant, je ne comprend pas qu'on puisse encore choisir Express en 2022
Liste de tous les projets incubés par la Cloud Native Computing Foundation (CNCF).
C'est rempli de super projets comme Kubernetes, Prometheus, Jaeger, Envoy, OpenTelemetry.
Ce sont majoritairement des projets orienté Devops / Cloud.
La bulle spéculative des NFT s'effondre.
Contrairement aux crypto monnaies, elle a très peu de chance de se relever car leur utilisation est purement spéculative
"These inexperienced but overconfident developers tend to discover that it is harder to make a meaningful contribution to an existing package than it is to create a simpler version from scratch."
Article intéressant pour évaluer des KPI pour une équipe projet
- Earned Business Value: nombre fixe de points à répartir entre vos features et leurs sous tâches
- Cycle Time: temps nécessaire pour réaliser une feature
- Cumulative Flow: répartition des tâches en fonction des états (todo, in progress, done, etc)
Netflix utilise un programme spécial qui va éteindre au hasard n'importe quel service directement en production
Cela oblige les développeurs et devops à développer des programmes extrêmement résilients
La Quick Response Team (QRF) est en charge de la gestion des priorités qui arrivent au fil de l'eau et permet ainsi au reste de l'équipe de se concentrer sans interruption sur des tâches plus conséquentes
Un analyseur de traces agnostique de la techno utilisée avec un léger overhead (~2-10% annoncé) donc utilisable dans des environnements de production
Excellent article qui résume la complexité sous jacente du développement frontend face à une demande "simple"