Une très bonne explication des nombreux avantages de la programmation avec le langage Rust créé par Mozilla.
Rust offre de très bonnes performances, proches du C et du C++ tout en proposant un modèle de gestion de la mémoire innovant.
Jusqu'ici, la gestion de la mémoire était soit un facteur de dégradation des performances du à l'introduction d'un garbage collector (Java, Go, C#), soit un facteur de risque de sécurité important (buffer overflow, use-after-free, segmentation fault, etc.)
Rust introduit un mécanisme ou une référence peut être soit constante et partagée, soit mutable mais unique (Borrow Checker).
La gestion des erreurs est aussi plutôt pas mal en prenant le meilleur du système d'exceptions (implicite) et du système de retour d'erreur (explicite)
// the "?" operator mean that potential errors will be propagated
let result = foo()?.bar()?;
Un autre avantage est le potentiel de portabilité dans le navigateur avec WASM. Il est possible d'utiliser Rust comme langage fullstack à l'instar de Javascript.
Il y a aussi bien sur des choses plus compliqués avec Rust:
- la syntax inhabituelle
- temps de compilation assez long
- ecosystème naissant
Daniel Glazman (Mozilla) fait un long thread pour parler des NFT et du mauvais côté de la cryptosphère.
Quelques citations:
Sur les NFT
Le NFT ne donne aucun droit, aucune garantie, aucune licence, rien. C'est un pipeau total et les plus grands soutiens des NFT sont aussi les détenteurs qui ont intérêts à ce que leurs "investissements" ne se cassent pas la figure.
Sur la maturité à venir
J'ai entendu souvent, vous entendez souvent, que les cryptos sont dans leur enfance et que le Web a mis longtemps aussi à blabla. Foutaises. En 11 ans, l'âge du BTC, le Web avait révolutionné l'accès de l'Humanité à l'information et au commerce en 300 millions de sites majeurs.
Sur l'écosystème toxique
Et puis le monde des cryptos est totalement pourri. Pour un Vitalik, il y a 10 Enron, 5 Madoff, 3 Rudy Kurniawan et, côté sécurité, 50 log4j.
La meilleure explication que j'ai eu des CORS (Cross Origin Resource Sharing).
Les CORS sont un ensemble de règles envoyées par un serveur dans les header HTTP qui sont ensuite respectées par le navigateur afin d'empêcher un site d'envoyer des requêtes vers un autre site.
Par exemple, un script Javascript qui s'exécute sur https://links.aschen.ovh ne peut pas envoyer une requête sur le domaine gmail.com car les CORS de gmail.com ne l'autorise pas.
(Merci Florian pour le partage)
Un article qui résume bien les différents problèmes de la voiture électrique en terme d'émissions de CO2, de consommation de métaux et de dépendance géopolitique.
Une citation fait particulièrement réfléchir:
Au rythme actuel d'extraction, dans vingt ans, nous aurons consommé presque tout le stock de cuivre disponible sur Terre
Il ne faut pas espérer remplacer les voitures thermiques par des électriques mais bien change les usages, ce qui équivaut à vendre moins de voiture et ça l'industrie ça lui fait peur.
L'histoire d'une grosse migration backend chez LinkedIn et un retour d'expérience très intéressant.
Les sujets de migration sont toujours très sensibles car ils ont un impact fort et sont sujets à de nombreux risques.
L'équipe de LinkedIn donne quelques conseils:
- s'assurer que tout le monde comprenne l'intérêt de la migration et du nouveau système
- écrire des instructions étape par étape clair et précises
- faire des outils automatiques dès que c'est possible
- faciliter un accès au support pour répondre aux questions
- monitorer les progrès
Quand on est manager et/ou expérimenté , il est important de faire attention à ne pas prendre trop de place afin de laisser les autres s'exprimer.
Cet article parle justement de la dynamique des pouvoirs et donne 5 conseils:
- soyez le dernier à contribuer
- invitez explicitement les autres à contribuer
- soyez plus sûr de vous dans vos paroles et dans vos actions
- créez de la confiance avec chacun
- déléguez explicitement le pouvoir de décision
(Merci Ludi pour le partage)
L'auteur d'une lib de CSS in JS pour React explique les désavantages de ce fonctionnement.
Les deux principaux désavantages sont le poids supplémentaire des libs nécessaires et l'impact non négligeable sur les performances de rendu.
Après la lib offre quand même une DX très confortable donc à chacun de faire ses compromis.
(Merci Ludo pour le partage)
Un BD super sympa qui vulgariser le développement de la photosynthèse chez les plantes qui a commencé par la plus grande extinction de masse de l'histoire de la terre.
Excellent article sur le fonctionnement de la vérification de d'authenticité des emails pour lutter contre le phishing.
Concrètement cela se base sur des enregistrement DNS pour un domaine. (e.g. gmail.com)
Il y a 3 mécanismes:
- Sender Policy Framework (SPF): adresses IP autorisées à envoyer des emails pour le domaine
- DomainKeys Identifier Mail (DKIM): clé publique et une signature cryptographique est ajoutée aux emails
- Domain-based Message Authentication Reporting and Conformance (DMARC): instructions pour traiter les emails non conforme
Un agent de détection de comportements suspects pour protéger ses serveurs (Intrusion Prevention System ou IPS).
Le point cool c'est que les logs sont analysés en local uniquement :-)
C'est full open source, ça détecte les comportements suspects et se synchronise avec une base d'IPs suspectes.
Ils proposent de bloquer les attaques de plusieurs manières:
- Firewall (iptable)
- Nginx 403
- Web captcha
Un calculateur de salaire rendu publique par Zefir qui prend en compte plusieurs paramètres:
- expérience
- type de poste
- lieu de travail
- niveau (compétence technique)
- années d'ancienneté
Les USA ont durci leurs règles d'exports concernant les semi-conducteurs. Ces nouvelles règles ont pour but d'affaiblir l'industrie de micro-processeurs chinoise, notamment ceux utilisés par l'armée.
Dans ce lot de règle, on retrouve notamment l'interdiction pour les ressortissants US de travailler pour des entreprises chinoises du secteur.
En gros pour la plupart c'était soit perdre son passport US, soit rester en Chine, autant dire qu'en une nuit l'industrie chinoise a été décapité d'une bonne partie de ses employés.
Un repo Github ou j'ai rassemblé pas mal de ressources à propos du fonctionnement des moteurs Javascript (principalement v8)
C'est toujours bien de comprendre comment est executé le code que l'on écrit, pour le debuguer plus efficacement mais aussi pour l'optimiser quand on en a besoin !
Au programme:
- Hidden Classes
- Inline Cache
- Closures
- Function Polymorphisme et Mégamorphisme
- Interpreteur et Compilateur spéculatif
- Micro Benchmark
Certains articles sont assez complexes mais en règle général ça reste abordable.
Un thread Twitter sur une gestion avec SCRUM qui a complètement débloqué
On parle souvent des comparaisons entre SQL et NoSQL mais cet article va plus loin en comparant les usages des 5 grandes familles de "Data Store"
- Base de données relationnelles (e.g. PostgreSQL)
- Base de données non-relationnelles (e.g. MongoDB)
- Base de données clé/valeur (e.g. Redis)
- Moteur de recherche (e.g. Elasticsearch)
- File de messages (e.g. Kafka)
Un framework pour créer des API REST en codant les contrôleurs et modèles en TypeScript avec des annotations.
Ça génère automatiquement la spec OpenApi et les JsonSchema en plus.
(Merci Bombi pour le partage)
Un système de queing entièrement basé sur Redis.
Ils proposent toutes les fonctionnalités dont on a besoin:
- multi-queue producers et consumers
- garantie du delivery unique
- expiration des messages
- rate limiting
Les Objectives and Key Results sont une méthode pour décider des objectifs d'une entreprise et comment les mesurer.
En gros plutôt que de se concentrer sur le résultat, on se concentre sur ce que l'on veut améliorer puis les équipes proposent des idées et testent des choses pour remplir ces objectifs. Les résultats sont analysés avec les Key Results.
Exemple:
Objectif: Améliorer l'efficience de la plate-forme IoT
Key Result #1: Réduire le temps de configuration de 50%
Key Result #2: Corriger 90% des bugs en moins une semaine
Raft est un algorithme de consensus distribué très populaire qui permet de garantir la consistence d'un état au sein d'un cluster.
Il est utilisé dans des bases de données (CockroachDB, Mongodb) et dans d'autres produits comme Etcd.
Il couvre l'élection d'un master et la réplication de l'état sur chaque noeud.
Un article explicatif et en mode tuto ultra complet sur le monitoring d'un cluster Kubernetes avec Prometheus.