Whoa après Bubble c'est au tour de Sentry de communiquer sur son financement des projets Open Source.
260 000$ reversés à plus de 193 projets et fondations.
L'histoire incroyable d'un président accusé injustement de corruption et envoyé en prison.
Lula aurait bien pu finir ses jours en prison après ce coup d'état judiciaire mais c'est sans compter sur l'aide d'un hacker qui a prouvé la partialité de la justice dans cette affaire.
Une librairie pour dessiner des graphiques qui reste assez méconnue malgré ses features et ses performances.
Contrairement à beaucoup de lib (ApexChart, Chart.js), Vizzu utilise des canvas pour dessiner les graphs.
Il y a aussi de très belles animations natives :-)
Utiliser correctement une base de donnée relationnelle reste un exercice compliqué car il y a beaucoup de subtilité à comprendre.
Le plus important reste le concept d'index de lecture qui sont des structures permettant de retrouver plus rapidement de la donnée en échange d'un temps d'écriture plus long.
Le plan d'exécution des requêtes est aussi très important, l'auteur présente un exemple simple:
-- compute "now() - interval 3 days" then execute a table scan
publish_date < now() - interval '3 days'
-- for each line, compute "publish_date + interval 3 days and compare to now()"
publish_date + interval '3 days' < now()
Dans le deuxième cas, on va devoir récupérer chaque ligne et faire un calcul pour executer la requête. Il ne faut pas oublier que les bases de données relationnelles sont ensemblistes et donc faites pour fonctionner sur des ensembles de lignes plutôt que sur des lignes individuelles.
Un autre exemple de grille de calcul des salaires.
Plusieurs points qui se démarquent du reste:
- ancienneté totale et pas ancienneté dans l'entreprise
- bonus personne à charge
- prime parisienne
Une bande dessinée qui explique les raisons d'utiliser un message broker comme Kafka et le fonctionnement de ce dernier.
(Merci Gaël pour le partage)
Un broker de messages temps réel qui utilise des Server Side Events (SSE)
L'histoire incroyable de deux fondateurs qui se font évincer de leur société à la suite d'une fraude minutieusement organisée.
C'est dingue ce qu'il leur est arrivé, malgré un pacte d'actionnaires sensé les protéger, deux fonds d'investissements ont fait pression sur eux via des intimidations pour les virer.
Les fonds savaient que ça prendrait du temps de faire valoir leurs droits devant les tribunaux, ils ont du se battre pendant 2 ans.
Ce qui est dingue c'est que même après la décision de la cour d'appel, ils ont du batailler pour retrouver leur poste, notamment avec la surprise de découvrir 240000€ de chèques émis sans factures. Sans compter le "nouveau" PDG qui double son salaire et se facturait en plus comme freelance.
Breega a publié un droit de réponse et ce n'est pas tout blanc du côté des fondateurs non plus: https://breegavc.medium.com/solendro-ou-quand-linvestisseur-a-tout-les-torts-r%C3%A9tablissons-les-faits-832a5550adfa
Il ne faut pas forcément se focaliser sur la performance à tout prix ou sur la maintenabilité à tout prix.
C'est toujours une histoire de compromis entre les deux.
J'aime beaucoup cette citation qui me fait pensé au mécanisme de gestion mémoire de Rust:
Sharing state is fine, so long as we don’t mutate it.
Mutating state is fine, so long as we don’t share it.
Analyse d'une attaque qui vise les ressources gratuites de différents provider pour miner des Monero.
A ce jour les chercheurs ont détecté 30 comptes Github, 2000 comptes Heroku et 900 comptes Buddy impliqués.
Un serveur de distribution de messages en temps réel.
Il supporte de nombreux protocols pour la distribution:
- Server Side Event (HTTP)
- Polling (HTTP)
- WebSocket
- gRPC
Le processus de stringification de typescript-json est beaucoup plus rapide car la librairie se base sur une liste de types pour les serialiser.
En gros à l'étape de compilation, la librairie va générer le code Javascript pour sérialiser exactement toutes les propriétés d'un objet typé donc on s'épargne les étapes de parcourir de l'objet et de découverte des types des propriétés.
Par contre on ne peut traiter que des payloads ayant un type défini à l'avance.
Exemple de code généré pour un type ({ name: string, age: number):
const $string = typescript_json_1.default.stringify.string;
const $number = typescript_json_1.default.stringify.number;
const $so = [
input => `{"name":${$string(input.name)},"age":${$number(input.age)}}`
];
return $so[0](http://input);A force de voir les développeurs Junior galérer à trouver un premier job, je me suis dit que je pourrais donner quelques conseils:
- Apprenez des technos en faisant des projets perso
- Prenez soin de votre image sur LinkedIn
Mais surtout: Contribuez à des projets Open Source.
Ça fait monter en compétence avec les revues de code et les contributions sont publiques donc accessibles aux recruteurs.
Un bundler/builder Javascript pour remplacer Webpack, c'est écrit en Rust et ils affichent des performances de 5 à 10 fois supérieurs.
Pour l'instant c'est que pour les projets Next.js ou Vite.
De super conseils pour écrire de bons messages d'erreurs à destination des utilisateurs finaux.
Un bon message d'erreur doit:
- expliquer ce qu'il s'est passé (
Unable to connect your account) - rassurer l'utilisateur (
Your changes were saved) - aider à réparer le problème (
Please try connecting again) - fournir une aide externe (
If the issue keep happening, contact support)
10 challenges pour comprendre les promises en Javascript
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.