Monthly Shaarli

All links of one month in a single page.

October, 2022

We Just Gave $260,028 to Open Source Maintainers
thumbnail

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.

Salaires et avantages chez Shine
thumbnail

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
What if the team assumes my functional JavaScript is slow?
thumbnail

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.

Scalable real-time messaging server
thumbnail

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
Comment trouver un job quand on est développeur junior sans expérience

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.

When life gives you lemons, write better error messages

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)
Les NFT et la cryptosphere ou la machine à Ponzi

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.

Navigating power dynamics as a manager
thumbnail

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)

Why We're Breaking Up with CSS-in-JS
thumbnail

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)

Zefir Salary Calculator

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é
List of different up-to-date (2022) resources about Javascript engines
thumbnail

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.

A simple high-performance Redis message queue for Node.js.
thumbnail

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
Superviser Kubernetes avec Prometheus
thumbnail

Un article explicatif et en mode tuto ultra complet sur le monitoring d'un cluster Kubernetes avec Prometheus.

Lorsqu’éclatera la bulle publicitaire

Un très bon article de Ploum sur la publicité

🧅 OnionShare

Un outil pour lancer un service caché sur TOR très facilement.

Ça permet ensuite de chatter et envoyer/recevoir des fichiers avec des personnes qui se connectent au service via TOR et une adresse .onion

Discovering novel algorithms with AlphaTensor
thumbnail

Une IA qui améliore les performances d'une autre IA.

Une IA de Google a trouvé comment multiplier plus efficacement des matrices de nombres.

C'est une opération très commune dans les réseaux de neurones mais aussi dans les programmes graphiques.

Pour multiplier une matrice de 4x5 par une matrice de 5x5, le meilleure algorithme humain utilisait 80 multiplication et AlphaTensor (le nom de cette IA) a trouvé une méthode avec 76 multiplications!

(Merci Guillaume pour le partage)

50 Years of Gaming History, by Revenue Stream (1970-2020)
thumbnail

Une super infographie qui montre l'évolution des revenus du gaming en fonction des plateformes.

  • Console "handheld" (Gameboy, PSP, etc)
  • Arcade
  • Console "classique" (Gamecube, Playstation, etc)
  • PC
  • Mobile

C'est incroyable à quel point le mobile génère de l'argent. C'est surement lié aux nombreuses micro-transactions présentent dans les jeux mobiles.

The Anti-Pattern that Sees the Disempowerment of Engineering Organisations Everywhere
thumbnail

Un article qui parle du cloisonnement malheureusement trop fréquent entre les idées de nouvelles fonctionnalités qui sont ingérée par un Product Manager qui décide seul de celles qui doivent être ajoutées au backlog.

Ça peut paraître évident pour certaines organisations mais l'équipe Tech doit être impliquée dans cette phase de triage afin d'avoir un avis technique mais aussi pour améliorer l'ownership de l'équipe

Why Amazon stopped including purchase info in order confirmations
thumbnail

Amazon ne donne plus d'informations sur ses commandes dans les emails de confirmation.

C'est pour ne pas donner des informations aux fournisseurs de boite mail (et du coup majoritairement Google)

Generate JSON schema from your Typescript sources
thumbnail

Une lib pour générer des JSON Schema depuis des types Typescript

Productivité au travail : misez sur la gentillesse !
thumbnail

C'est le résultat d'une étude lancé par Google en 2012.

Les deux comportements des équipes qui fonctionnent le mieux sont:

  • liberté d'expression: prise de parole et partage de point de vue
  • empathie

Ces deux facteurs amène une sécurité psychologique qui améliore la qualité de vie au travail et aussi la productivité.

The new wave of Javascript web frameworks

Un article de fond sur l'évolution du développement frontend.

L'article commence par un historique du frontend:

  • Pages dynamique CGI : PHP
  • AJAX : JQuery, Flash
  • Split frontend/backend : Backbone
  • Two way binding : Angular
  • JAMStack: Gatbsy, Next
  • Components: React, Vue

Le frontend s'est tellement complexifié qu'on atteint des limites en terme de coût de manipulation du DOM (résolu par le Virtual DOM) mais également en terme de traffic réseau et du rendering des éléments d'une mage qui peuvent se bloquer entre eux (charger du CSS par exemple)

L'auteur revient sur les différentes innovations mises en place chez Facebook avec React:

  • Optimizing runtime costs: Virtual DOM, CSS avec Stylex
  • Optimizing the network: Relay, GraphQL
  • Optimizing Javascript bundles: Tree shaking (Facebook utilisent carrément une IA !)

Les différents framework du marché sont passé en revue: React, Svelte, Vue, Solid, Astro, Marko, Fresh, Next, Remix et Qwik

Pour moi le plus important est cette phrase de l'auteur

It’s a good reminder that if you’re on the bleeding edge, you are usually the one bleeding. Defaulting to “boring” technologies, ones you are familiar with, and being a late adopter is often a great choice.

La morale c'est qu'il faut choisir son framework en fonction de ses besoins actuels et faire très attention aux choix techniques pour des projets long termes.

Le coup d'état légal qui propulsa Lula en prison

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.

Demystifying Database Performance for Developers
thumbnail

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.

Sysdig TRT uncovers massive cryptomining operation leveraging GitHub Actions
thumbnail

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.

I made 10x faster JSON.stringify() functions, even type safe
thumbnail

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);
What is CORS?
thumbnail

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)

Pourquoi la voiture électrique n'est pas la solution miracle pour se déplacer sans polluer
thumbnail

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.

Et la photosynthèse réinvente la vie !
thumbnail

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.

CrowdSec - the open-source and participative IPS
thumbnail

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
Scrum peut-être un framework toxique

Un thread Twitter sur une gestion avec SCRUM qui a complètement débloqué

Five Common Data Stores and When to Use Them — Development

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)
How to drive your team to success with OKRs🎯
thumbnail

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

Choosing the best Node.js Docker image
thumbnail

Les bons conseils pour créer une image de prod avec Node.js.

En bref:

  • Utilisez une version LTS avec Debian slim pour réduire la surface d'attaque
  • Ne faites pas de npm install mais npm ci pour utiliser un ensemble de dépendances stable
  • Évitez les images alpines car des problèmes peuvent apparaître à ce musl (substitut de la libc)
Cube — Headless BI for Building Data Applications
thumbnail

Un backend pour fédérer les données en provenances de plusieurs sources (SQL, NoSQL, Datawarehouses)

Ils permettent ensuite d'accèder aux données via une API unifiée en ajoutant une couche de droits et du cache.

Le positionnement est clairement orienté Business Intelligence même si ils ne proposent pas de solution concrète pour ça mais plutôt la promesse de facilement connecter des outils existants.

Cryptomonnaies: 100 millions de dollars volés sur Binance après un piratage
thumbnail

Un pont opéré par Binance s'est fait pirater et les responsables aurait réussi à dérober 100millions en BNB (le token de la Binance smart chain)

Fait intéressant, les pirates avaient la main sur l'équivalent de 580 millions mais Binance ont pu geler la plus grosse des fonds car la blockchain de Binance est centralisée et opérée par Binance

A tour of Metabase
thumbnail

Un outil graphique assez cool pour faire de la business intelligence sur des base de données SQL.

Quelques fonctionnalités:

  • Query Builder visuel
  • Zoom in/out
  • Visualisation des résultats en graphs
  • Dashboards
  • Analytics sur les requêtes

Le but est de mettre cet outils dans les mains de ses clients pour les laisser extraire eux-même l'information dont ils ont besoin.

Et bonus: c'est Open Source !

Manjarno

Un article critique de Manjaro

Logto helps you build the sign-in, auth, and user identity within minutes
thumbnail

Une alternative Open Source à Auth0 pour l'authentification et la gestion d'identité.

Il y a aussi Keycloak dans le même genre.

Moon - Feature comparison
thumbnail

Un système de management de repo Javascript.

Dans le même genre que Lerna ou Turborepo, c'est écrit en Rush et ça permet d'automatiser les builds (entre autre)

The Architecture of Uber's API gateway
thumbnail

Un article très complet sur l'API Gateway utilisé par Uber.

Ils ont développé leur propre API Gateway qui est en frontal de leurs micro-services écrits dans différents langages.
user access, etc

Les API Gateway peuvent être de simples routeurs mais peuvent aussi aller plus loin en incorporant de la logique métier, comme celle de Uber justement ("low level" vs "feature rich")

Dans le cycle de vie d'une requête, ils ont extraits 4 familles de composants:

  • Protocol Manager: responsable de décoder et d'encoder (JSON, Thrift, Protobuf)
  • Middleware: briques métier réutilisables (authentification, rate limiting, etc)
  • Endpoint Handler: convertit la requête entrante dans le format attendu par le service backend
  • Client: envoi la requête au service backend (validation, timeout, retries, etc)
Vizzu, library for animated data visualizations and data stories.
thumbnail

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 :-)

Gently Down the Stream (Kafka)

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)

Mercure.rocks: Real-time APIs Made Easy

Un broker de messages temps réel qui utilise des Server Side Events (SSE)

Comment deux fonds nous ont dépouillés et ont détruit notre boite
thumbnail

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

Turbopack - The successor to Webpack
thumbnail

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.

Understand JavaScript Promise with 10 Examples

10 challenges pour comprendre les promises en Javascript

Why Rust?

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
Migration madness: How to navigate the chaos of large cross-team initiatives towards a common goal
thumbnail

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
Tackling Email Spoofing and Phishing

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
U.S. export controls on China semiconductors force suppliers to cut ties - The Washington Post

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.

Build OpenAPI-compliant REST APIs using TypeScript
thumbnail

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)

Raft, consensus algorithm for cluster

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.

How Wine works 101 · Reboot and Shine

Une explication très accessible du fonctionnement de Wine, le programme Linux qui permet de lancer des applications Windows.

Pour rappel, Wine n'est pas un emulateur mais "simplement" une traduction des appels systèmes Windows en appels système Linux.

Awesome multilingual OCR toolkits based on PaddlePaddle
thumbnail

Un OCR open source qui supporte plus de 80 langues.

K6, load testing for engineering teams
thumbnail

Un outil de load testing open source en alternative à Gatling.

Ils supportent le scripting en Javascript et de nombreux protocols: HTTP, WebSocket, GraphQL et même gRPC!

Il est aussi possible d'enregistrer un scénario dans son navigateur et de le rejouer.

What is the Confidential Containers project?
thumbnail

Redhat lance un projet pour exécuter du code de manière sécurisé et garantir que le fournisseur de cloud ne puissent accéder aux données.

Le projet est incubé par la Cloud Native Computing Foundation, ce qui est généralement un gage de qualité !

Concrètement ça fonctionne avec un type de hardware spécial qui garantit que le code chiffre chargé dans le processeur n'est pas accessible depuis l'extérieur une fois déchiffré. (Trusted Execution Environment) Les clés de chiffrement sont également stocké dans du hardware spécialisé (un peu comme un wallet Ledger)

Une autre piste pour le trustless computing c'est le Chiffrement homomorphe qui utilise une famille d'algorithme capable d'opérer sur des données chiffrées.

FreshRSS, a free, self-hostable feeds aggregator
thumbnail

Un lecteur de flux RSS à auto-héberger

The next step for LGTM.com: GitHub code scanning!
thumbnail

Le service de scan de vulnérabilité et de qualité de code LGTM s'arrête le 16 décembre 2022.

Ils se sont fait intégré aux équipes de Github depuis 3 ans et leur moteur d'analyse de code est maintenant intégré complètement à Github: CodeQL

Pour l'utiliser, il faut mettre en place cette Github Action

You don't need Scrum. You just need to do Kanban right.

Très bonne analyse de ce qui me dérange dans SCRUM et le fonctionnement par sprints.

  • Manque de souplesse car travail découpé en sprint inamovibles
  • Perte de temps à estimer les tâches précisément
Goodbye, Clean Code

Il ne faut pas toujours chercher à rendre le code clean avec des abstractions et en évitant les répétitions.

Souvent cela rend le code plus complexe et donc plus difficile à maintenir.

La est toutes la subtilité du métier de développeur, trouver le bon compromis entre clean code et KISS code (Keep It Simple and Stupid).

L'auteur pointe aussi une autre erreur, de gestion d'équipe, il a refactoré le code d'un collègue sans lui en parler avant.

Bubble donates $20k to open-source projects
thumbnail

Bubble décide de redistribuer une partie de ses bénéfices à des projets open source qu'ils utilisent en interne.

En tout ils vont donner 20K$ répartis entre 3 projets.

C'est très bien ce genre d'action, plus d'entreprises qui font des millions avec de l'open source devraient prendre exemple.

La meilleure solution serait néanmoins un financement mensuel pour aider les développeurs des projets à se projeter sur le long terme.