Monthly Shaarli

All links of one month in a single page.

August, 2022

Under the hood: How we built API versioning for LinkedIn Marketing APIs
thumbnail

Un article explicatif sur le versionning d'API chez LinkedIn.

Conceptuellement, ils vont dupliquer les ressources en interne en incluant la version de l'API Foo => FooResource_v20220201

Ils ont ensuite un service de conversion qui va convertir les ressources dans le dernier format possible pour éviter d'avoir à dupliquer le code.

Experience on building PWA using Flutter
thumbnail

Un super retour d'expérience sur l'utilisation de Flutter Web pour créer une PWA !

Les équipes ont décidé de faire une PWA pour éviter le problème de gestion d'anciennes versions d'une app mobile dans leur parc.

A part quelques difficultés autour de l'utilisation de l'appareil photo, ils n'ont pas rencontré de problème.

C'est vraiment encourageant pour Flutter Web car la techno est en production depuis seulement 1 an et semble déjà à la hauteur des promesses.

Ce genre de choix permet de tester rapidement un concept avec une PWA et de publier plus tard des applications natives sur les stores.

Free and Open Source AI Image Upscaler for Linux, MacOS and Windows
thumbnail

Un outil qui permet d'améliorer la résolution des images grâce à un réseau de neurone

Using Protocol Buffers with Node.js application

Un exemple d'utilisation des Protocol Buffers en Node.js.

L'exemple utilise l'excellente lib Protobuf.js qu'on utilise aussi dans le coeur de Kuzzle pour la communication entre les noeuds du cluster ;-)

J'en parlait ici aussi https://links.aschen.tech/shaare/R6dzhw

Big Changes Ahead for Deno
thumbnail

Deno annoncent quelques changements avec notamment le support des packages JS en provenance de NPM!

Ils annoncent aussi qu'ils souhaitent être le moteur JS le plus rapide.

Je ne serais pas surpris que cela soit poussé par la sortie de Bun.js qui a de très bonnes performances, supporte le typescript et les packages NPM

VS Code - What's the deal with the telemetry?

VScode est un produit "gratuit" de Microsoft, donc nous sommes les produits.

Plus de 1600 données différentes sont collectées par VSCode avec notamment:

  • toutes les informations de sessions (temps passé, dernière session, etc)
  • toutes les informations sur votre ordinateur
  • tout ce que vous faite dans l'IDE (ouverture de fichier, search & replace, etc)

Il est impossible de désactiver totalement la télémétrie.

Si possible, il faut se tourner vers l'alternative libre VSCodium

Creating micro-frontends with Piral
thumbnail

Un article présentant un framework pour micro-frontend avec tout le tooling pour se simplifier la vie.

Attention car même avec Piral, gérer un ensemble de micro-frontend est beaucoup plus compliqué.

Une telle décision d'architecture doit se reposer uniquement sur un besoin d'organisation d'une grande équipe en plus petites équipes focalisée sur un domaine de l'application.

Plus d'info sur les micro-frontend https://links.aschen.tech/shaare/AuKMeA

Equity 101 for Software Engineers at Big Tech and Startups
thumbnail

Un autre article qui parle d'Equity, orienté sur les mécanismes qui existent au US (le dernier parlait des mécanismes Français, les BSPCE)

Ils donnent une liste de "red flags" de certaines entreprises qui font miroiter monts et merveilles:

  • termes abusifs si on quitte l'entreprise, comme rendre les actions si on part avant 4 ans
  • période d'activation (exercer ses BSPCE pour acheter des actions) supérieur à 4 ans
  • courte période pour exercer ses BSPCE si on quitte l'entreprise
  • BSPCE donnés en euro plutôt qu'en nombre
CS:GO trading site hacked to steal $6 million worth of skins
thumbnail

Un revendeur de skin CS:GO s'est fait hacké ses comptes contenant les skins et les voleurs ont donc mis la main sur plus de 6 millions de dollars de skins.

Cette industrie du skin est vraiment dingue, ça rappelle beaucoup celle des NFT sauf qu'il n'y a pas besoin de blockchain pour ça au final 🙄

Internet par satellite : ce chercheur a hacké un terminal de Starlink
thumbnail

Un chercheur en sécurité a réussi à obtenir un accès route sur le matériel de son récepteur Starlink.

Il a réalisé l'exploit en rajoutant un module physique branché directement dans les circuits imprimés!

Métavers : les prix de l’immobilier s’effondrent
thumbnail

Les prix du métavers s'effondrent, pas étonnant :-)

Depuis février:

  • prix moyen par parcelle de 15K à 4K
  • volume des échanges de 225 millions à 20 millions
There aren't that many uses for blockchains

Comme le dit l'article, il n'y a que très peu de cas d'usages intéressants pour une blockchain.

Il note 3 critères à respecter pour qu'un cas d'usage soit intéressant:

  • besoin d'une base de données partagée
  • impossible de faire confiance aux pairs
  • besoin de rien d'autre

Une monnaie virtuelle respecte est un bon exemple.

Tous les autres ne le sont pas car ne respectent pas un des critères:

  • transferts d'argent internationaux
  • levée de fonds dans la blockchains
  • smart contrats

Un autre exemple de projet réussi à base de blockchain est le stockage décentralisé comme ce que fait Sia.

SecurityZines
thumbnail

Une collection d'affiches qui traitent de différents sujets sous forme graphique :-)

(Merci à Gaël pour le partage)

Introduction à Rust + WebAssembly avec le framework Yew
thumbnail

Une super présentation sur le fonctionnement et l'utilisation de Rust + WebAssembly pour faire une application frontend avec le framework Yew.

L'auteur utilise le framework frontend Yew en Rust.

Comme il le dit à la fin, pour l'instant c'est encore très expérimental et les performances ne sont pas au rendez-vous.

D'ailleurs c'est assez peu probable de pouvoir battre les performances du JS natif en terme de manipulation de DOM.

Aussi, ce genre d'application hybride (2 langages) aura quasiment toujours des performances inférieurs à cause de l'overhead du boxing / unboxing

Mirrord: mirror traffic from production to local environment
thumbnail

Un outil pour renvoyer le traffic puis votre cluster Kubernetes vers votre environnement local, parfait pour Debug ou tester son code avec de vraies données 👌

Concrètement il faut choisir le pod depuis lequel on veut rédiriger le traffic et s'assurer qu'on a le service local tournant sur le même port sur sa machine.

Flutter : a journey to higher-quality apps
thumbnail

Un article très complet sur les bonnes pratiques lors du développement d'une app Flutter.

Points abordés:

  • linters
  • utilisation de l'IDE pour refacto
  • différents types de tests (et les Golden Tests propres à Flutter)
  • code coverage
  • CI/CD
  • mesurer la qualité du code
BD - Feature Complete
thumbnail

😁

Padloc - Open Source, End-to-end Encrypted Password Manager

Un gestionnaire de mot de passes Open Source avec support multi-plateforme (et extensions navigateur)

La version gratuite est suffisante pour un usage quotidien et la version enterprise avec partage commence à 3.5 $ / mois

En Open Source pour enterprise en 100% gratuit il y a aussi Passbolt qui propose une application en SaaS.

Why-Most-Unit-Testing-is-Waste.pdf

Un excellent document qui parle de tests unitaires et tests fonctionnels.

En règle général, il vaut mieux se concentrer sur les tests fonctionnels plutôt que les tests unitaires car ces derniers sont très couteux à maintenir, notamment leur de remaniement de l'architecture du code.

Quelques extraits:

Few developers admit that they do only random or partial testing and many will tell you that they do
complete testing for some assumed vision of complete. Such visions include notions such as: “Every line of code has been reached,” which, from the perspective of theory of computation, is pure nonsense in terms of knowing whether the code does what it should.

Tests should be designed with great care. Business
people, rather than programmers, should design most functional tests. Unit tests should be limited to those that can be held up against some “third-party” success criteria

The purpose of testing is to create information about your program. (Testing does not increase
quality; programming and design do. Testing just provides the insights that the team lacked to do a correct design and implementation.)

Don’t underestimate the intelligence of your people, but don’t underestimate the collective stupidity of many people working together in a complex domain.

You’re Not a Senior Software Engineer
thumbnail

Article très intéressant sur une sorte de classification des développeurs.

Cela se base sur le ratio entre savoir et expériences.

Junior: Un peu de savoir et aucune expérience.

Middle: Moyennement de savoir et un peu d'expérience

Senior: Beaucoup de savoir et d'expérience, légèrement plus d'expérience

How SQLite Scales Read Concurrency
thumbnail

Article explicatif de l'implémentation du Write-Ahead Logging (WAL) dans SQLite.

Le WAL est le mécanisme permettant de garantir que l'on ne perd pas de données lors de la persistence de la base de données sur le disque.

The impact of removing jQuery on our web performance
thumbnail

Un REX du gouvernement Britannique qui a enlevé JQuery de ses pages (32Kb compressé).

Ils ont observé une amélioration de 17% des performances en moyenne!

Par contre, ils n'ont pas utilisé d'autre lib JS à la place non plus :-)

Typescript is terrible for library developers
thumbnail

Je partage totalement cet opinion sur Typescript du point de vue du développeur de framework.

Quand on est simplement utilisateur, on est content d'utiliser les types et on veut en voir partout.

Quand on doit écrire ces types, c'est rapidement un casse-tête assez important si on veut le faire correctement!

Regardez cette définition dans redux-toolkit par exemple 🙄

Les créateurs de Deno ont même décidé de ne PLUS utiliser Typescript dans leur codebase interne car cela devenait trop complexe de maintenir les types.

Audible feedback on just how much your browsing feeds into google
thumbnail

Un moyen d'eméttre un bip sur linux à chaque fois qu'une info est envoyée à Google.

Ça fonctionne avec tcpdump et une liste d'IP appartenant à Google.

Chez moi j'ai du spécifier toutes les interfaces avec -i any

Voir le résultat en vidéo

Janet Jackson had the power to crash laptop computers
thumbnail

Des ordinateurs qui crashent lorsqu'on joue une musique dessus, et qui font même crash les ordinateurs voisins!

Une musique contenait des fréquences qui correspondaient à la fréquence de résonnance des disques dur de certains modèles de laptop.

A solar tower fuel plant for the thermochemical production of kerosene from H2O and CO2
thumbnail

Une centrale qui crée du Kérosène à partir de l'énergie solaire, de l'eau et du dioxyde de carbone.

Le rendement énergétique est de 4%, ce qui est énorme comparé à la photosynthèse des plantes (0.1 à 2.5%)

(Via https://lehollandaisvolant.net/?mode=links&id=20220816141619)

Quand tu fais NPM install
You Might Not Need Redux. People often choose Redux before they…

C'est vrai que Redux n'est pas forcément nécessaire pour démarrer une app React, tout comme Vuex ne l'est pas pour une app Vue.

Comme pour chaque outil, il faut se demander si l'on en a vraiment besoin et surtout si ça répond à un problème.

Chaque outil rajoute une couche de complexité cognitive supplémentaire qui ralentit et complique le développement.

Streaming HLS

Article explicatif sur le fonctionnement du streaming vidéo HLS.

Enfaite c'est simplement des petits bouts de vidéo (quelques secondes) qui sont envoyés via HTTP tout simplement.

Ensuite le lecteur s'occupe de les jouer dans le bon ordre.

On peut donc:

  • change de résolution en cours de route
  • aller à n'importe quel endroit
  • encoder en avance et juste "poser" les fichiers sur un serveur HTTP
  • profiter des capacités de cache standard de HTTP
Redis Explained
thumbnail

Super infographie qui explique le fonctionnement et les différents usages de Redis.

Chaque partie de l'infographie est ensuite détaillée et expliquée avec du texte.

Redis est vraiment un outil incroyable, que ce soit pour ses performances ou pour la richesses de ses fonctionnalités.

(Kuzzle expose Redis aux clients à travers le contrôleur MemoryStorage)

Les voyages en train sont-ils trop chers ?
thumbnail

Très bonne vidéo qui résume le coût monétaire et écologique des différents modes de transports.

BSPCE en start-ups : l’envers du décor

Super résumé du fonctionnement des BSPCE, de comment les évaluer, les mettre en place, les pièges à éviter, etc

En gros, les BSPCE sont des bons qui donnent le droits d'acheter des actions à un prix définit.

Si on vous donne un BSPCE en 2022 avec un prix d'achat à 10€, alors vous aurez le droit d'acheter une action à 10€ à partir d'une date fixée par le contrat.

L'article termine avec d'autres modes de fidélisation des employés, par exemple des augmentations décidées à l'avance chaque année.

Naissance du noyau Linux

Un article historique sur la naissance de Linux.

Do more with Protocol Buffers by leveraging encoding
thumbnail

Très bonne explication du fonctionnement et des usages de Protocol Buffer, le standard pour encoder et partager des données binaires.

C'est un pseudo langage pour représenter de la données, des nombres, des strings, etc

message Event {
  fixed32 count = 42;
  string user = 'aschen' ;
} 

Des librairies sont disponibles dans tous les langages pour encoder / décoder des messages protobuf.

On peut s'en servir pour envoyer des messages sur le réseau de manière performante (par rapport au traditionnel JSON) mais aussi pour stocker des objets dans des fichiers.

Dans Kuzzle on s'en sert pour une communication efficace entre les nœuds du cluster par exemple

Les brouillages ont plus d’un tour dans leur sac !

Une histoire intéressante de fréquence 3G mis à mal dans un quartier par un simple tag RFID !

La recherche sur l'espace de travail d'Elastic
thumbnail

Elastic propose des outils qui indexent les contenus des outils comme Slack, Gmail, Drive et autres pour pouvoir faire de la recherche dedans ensuite.

Ça me fait penser à SteamPipe mais plutôt pour des humains que des API (Steampipe permet des requêtes SQL quand Elastic supporte le langage naturel)

A Collection of O'rly book Covers

Une compilation de fausse couvertures O'Reilly pour les dev 😁

Fishing courrier La Poste

Une tentative de fishing avec un faux courrier qui ressemble à un avis de recommandé La Poste!

Money pot: Helping Raju and his family to rebuild
thumbnail

Le népal a été touché par un séisme cet été et un de mes ami qui vit la bas a été durement touché.

Même si ce n'est pas beaucoup, chaque don fait une énorme différence pour lui et sa famille.

J'ai déjà effectué le premier versement des 300 premiers euros que j'ai doublé de ma poche pour palier au plus urgent.

What is a GPU?
thumbnail

Excellente explication du fonctionnement des GPUs et particulièrement des 4 niveaux de mémoire de travail disponibles.

Une analogie est faite entre un GPU et une entreprise de bureau avec des équipes de personnes qui doivent s'échanger de l'information.

Un exemple de code CUDA, le framework pour bosser sur les GPU Nvidia, est expliqué pas à pas

Lodash is dead. Long live Radash
thumbnail

Je ne connaissais pas Radash mais ça tombe bien parce que je trouvais également que Lodash était vieillissant (et tellement lent..)

La librairie standard de Javascript est tellement inexistante que ce genre de lib est quasiment obligatoire malheureusement.

Mes fonctions préférées:

Remplacement de Bluebird.map:

import { parallel } from 'radash'

const userIds = [1, 2, 3, 4, 5, 6, 7, 8, 9]

// Will run the find user async function 3 at a time
// starting another request when one of the 3 is freed
const users = await parallel(3, userIds, async (userId) => {
  return await api.users.find(userId)
})

Terminé les for (let i = 0; i < 5; i++):

import { range } from 'radash'

for (const i of range(0, 5)) {
  console.log(i) // => 0, 1, 2, 3, 4, 5
}

Nombre aléatoire dans un interval:

import { random } from 'radash'

random(0, 100) // => a random number between 0 and 100

Et toutes les fonctions de manipulation de string comme en Ruby: capitalize, snake, camal, etc

How to Refactor to Configurable Dependency in 5 Steps
thumbnail

Un excellent exercice de refactor pour appliquer l'injection de dépendance !

L'injection de dépendance est un des principaux design pattern pour réduire le couplage entre les classes et pour créer du code plus facilement testable.

Oven: the company behind Bun
thumbnail

Bun, le runtime Javascript qui se présente comme une alternative à Node.js, a levé 7 millions de dollars.

Ils recrutent maintenant pour sortir une version stable de leur produit.

A suivre de très près !

Software Visualization — Challenge, Accepted
thumbnail

Un article intéressant de Spotify qui avait besoin d'une manière de visualiser correctement les interactions entre leurs centaines de services.

Ils n'ont pas utilisé UML (thanks god!) mais plutôt le C4 Model qui est un diagramme à 4 niveaux:

  • Contexte: comment s'intègre notre système avec d'autres systèmes (service mail externe, autre système métier, etc)
  • Containers: quels sont les principaux composants de notre système (app mobile, base de données, frontend admin, etc)
  • Components: principales briques métiers de chaque container (CartController, EmailService, etc)
  • Code: classes composants les briques métiers

Je connaissais pas mais ça à l'air d'être un outil approprié pour définir visuellement des systèmes très complexes tout en offrant la possibilité de "zoomer" dans des niveaux plus détaillés

See what JavaScript commands get injected through an in-app browser

Un site qu'il faut ouvrir depuis une application pour savoir si le navigateur intégré à l'application injecte du javascript pour espionner le comportement de l'utilisateur pendant qu'il navigue.

TikTok sont vraiment les pires car ils enregistrent toutes les touches clavier et empêchent d'utiliser le navigateur natif du téléphone.

Les applications de Meta (Facebook, Instagram, Messenger) analysent votre comportement sur le site web via les cliques.

Le docker français
thumbnail

😄

So, What’s the Deal With Micro-Frontends?

Une bonne introduction aux micro-frontends.

Finalement ça répond au même besoin que les micro-services, pouvoir scale son produit en plusieurs équipes qui peuvent travailler de manière indépendante sur des parties du produit.

Les micro-frontends sont au frontend ce que les micro-services sont au backend.

A utiliser avec parcimonie donc

Myopia that Kills Your Company
thumbnail

Un excellent article à propos de la recherche de vos "vrai" concurrents.

Plutôt que de chercher les produits qui ressemblent au votre, il faut chercher les produits qui répondent aux même besoin que le votre.

Par exemple, pour Netflix, son plus gros concurrent ce n'est pas Amazon ou Hulu mais bien Fortnite!

Linguistic Antipatterns for Variables
thumbnail

Un site qui regroupe les anti-patterns de nommage des variables.

Par exemple, une fonction qui s'appelle getXXX mais qui ne retourne rien dans certains cas et mute directement un argument.

C'est plein de bon sens et à lire en complément de la recherche sur le naming des variables

Million, a virtual DOM compatible with React
thumbnail

Une autre lib qui propose de faire du frontend avec un virtual DOM.

Ils annoncent des performances bien plus élevées que React tout en supportant une partie de l'API comme useState, useEffect etc

Je suis toujours sceptique lorsque je vois les couches d'abstractions s'empilées côté frontend.

The mechanics of a sophisticated phishing scam and how we stopped it

Retour d'expérience de Cloudflare qui a été ciblé par un fishing très sophistiqué.

La page de fishing demandait également les codes TOTP reçu par SMS et les transmettaient en temps réel à l'attaquant pour lui permettre de se loguer.

L'attaque n'a pas fonctionné car les employés de Cloudflare ont une clé d'authentification Yubikey physique.

C'est aussi ce qu'utilise Google pour ses employés, ils n'ont plus de fishing réussi depuis.

J'en ait personnellement une pour accéder à mes comptes Kraken.

Feature-rich interactive Jira command line.
thumbnail

Une CLI pour manipuler Jira.

Son auteur l'a créé pour éviter d'utiliser l'UI (tellement elle est mauvaise..)

JiraCLI is an interactive command line tool for Atlassian Jira that will help you avoid Jira UI to some extent.

How To Use Multithreading in Node.js
thumbnail

Un excellent tutoriel sur les Workers Thread en Node.js pour faire du multi-threading.

Digital Ocean font toujours du très bon contenu je trouve 👍

Extended Jupyter Notebook Docker images
thumbnail

Des images Docker preconfigurés pour utiliser Jupyter Notebook.

Flameshot, screen capture

Un super outil de capture d'écran sur Linux, il permet notamment d'annoter les screenshots à la volée

Spotify allowed its 6,500 employees to work from anywhere in the world. Its turnover rate dropped

Après avoir autorisé à ses employés de travailler depuis ou ils voulaient, Spotify observe une baisse du turnover.

Moralité, donner le choix et faire confiance à ses employés ça paye !

Windows Needs a Change in Priorities
thumbnail

Une critique de Windows par un mec pro-Windows.

C'est vrai que ces dernières années, Microsoft ont quand même fait des choses assez chouettes:

  • Visual Studio Code
  • Windows Subsystem for Linux
  • Terminal

L'auteur passe ensuite en revue les chose qui ne vont pas (et il y en a pleins):

  • Problèmes de consistence d'UX (bon on n'en parle même pas sur Linux..)
  • Les widgets et "l'utilisation forcée" de MSN.com
  • Les pubs un peu partout, notamment dans l'explorateur alors que Windows est un produit PAYANT
  • La télémétrie et le compte Microsoft

Windows has a lot of well-earned potential that, right now, is being exchanged for short-term revenue.