Weekly Shaarli

All links of one week in a single page.

Week 16 (April 17, 2023)

eonarheim/TypeState: A strongly typed finite state machine for TypeScript

The project does not seem to be maintained anymore though :/

Why Developers Never Use State Machines - Skorks

Why?

  • We don't need one until we do

    • you almost never create an object fully formed with all the behavior it is ever going to need
    • when it is complex enough, it costs too much time to replace it with something that has equivalent functionality
  • the state machine is a fluffy bunny

    • there is the belief that state machines are more complex than they actually are
    • it is therefore nothing but pragmatism that makes us consider a “full-blown” state machine overkill.

BUT most state machines you’re likely to need in your day-to-day development have nothing in common with their computing theory counterparts

  • Adding a state machine library has a learning curve. It is rather small.

So moving to a state machine:

  • Integration is painless but moving all the code around to be inline with state machine is a big pain
  • Using it from the start is a breeze, as such as future changes.
  • We’re now able to easily introduce more states to give our users extra information as well as allow us to track things to a finer grain.
  • Return values from state transitions are 100% consistent. There are no strange objects, arrays, nil, boolean depending of the developers.
  • It is easy to log
  • Refactoring lead to greater code quality with state machines

We seem to shy away from state machines due to misunderstanding of their complexity and/or an inability to quantify the benefits

Perseus on Twitter: "5 tics de langage qu'on entend trop souvent. (et par quels mots les remplacer) - THREAD - https://t.co/j6mygp1hqt" / Twitter

À la place de "genre", dîtes

  • environ
  • au bas mot
  • en d'autres termes
  • par exemple
  • approximativement

À la place de "du coup", dîtes

  • de ce fait
  • en conséquence
  • subséquemment
  • dès lors
  • donc

À la place de "en mode", dîtes

  • comme
  • à la manière de
  • de façon

À la place de "en vrai", dîtes

  • en réalité
  • réellement
  • véritablement
  • à vrai dire
  • franchement
  • concrètement

À la place de "en fait", dîtes

  • réellement
  • contrairement aux apparences
  • en effet
  • en toute honnêteté
  • finalement
Ce n'est pas juste une question de technique | EventuallyCoding

Pour ça, il faut être impliqué dans les phases d'exploration produit. Il faut prendre du temps pour parler aux utilisateurs. Si votre produit est utilisé sur des chantiers, allez sur les chantiers, s'il est utilisé par le support client, regardez les l'utiliser. Ne reposez jamais sur un proxy de vos utilisateurs, commerciaux et autres parties prenantes internes à votre entreprise, sinon vous allez créer un outil pour ces personnes, pas un produit pour vos clients !

Fait important à retenir, vous n'êtes pas payé pour dire que quelque chose n'est pas faisable, mais pour faire en sorte que ça le soit.
Vous êtes là pour apporter des alternatives sur la table. Et pour cela il faut être actif, comprendre précisément le problème à résoudre, d'où la participation aux interviews utilisateurs, l'analyse quantitative, etc.

Ils recyclent les déchets de chantier : « On nous prenait pour des fous »

Cela fonctionne bien!

Layout Breakouts with CSS Grid | Ryan Mulligan

An example of layout top to bottom with different width 👍

Life Universe

Recursive game of life :D

OKLCH Color Picker & Converter

A color picker with the oklch format

It's time to learn oklch color

oklch is based on human perception instead of the RGB for LCH.

chezmoi - chezmoi

Manage your dotfiles across multiple diverse machines, securely.

I will test it sometime

Uptime Guarantees — A Pragmatic Perspective

How much uptime guarantees should be needed?

Economist fears ‘end of capitalism’ amid ‘Greedflation’ | Fortune

It can be useful. The author of this idea is the CEO of Société Générale.

JavaScript Key Code Event Tool | Toptal®

Get the event information of a keydown event :)

Memoirs from the old web: server-side image maps

An image map is a normal image on a website which has different clickable regions which take you to different pages. Image map functionality allowed polygons of an image to be defined as independent hyperlinks.

<!-- References an image map -->
<img src="image.png" usemap="#map1" />

<map id="map1" name="Map 1">
  <!-- An example of a rectangular area over an image -->
  <area shape="rect" coords="10,10,100,100"
        href="/foo"
        alt="Go to the Foo page"/>

  <!-- An example of a circular area over an image -->
  <area shape="circle" coords="50,50,200"
        href="/bar"
        alt="Go to the Bar page"/>

  <!-- An example of an arbitrary polygon over an image -->
  <area shape="poly" coords="10,10,100,10,100,100,10,100"
        href="/baz"
        alt="Go to the Baz page"/>

  <!-- Fallback if no other area matches -->
  <area shape="default"
        href="/default"
        alt="Go to the Default page"/>
</map>
La bibliothèque d'Imgur brûle : tout n'est pas permanent sur Internet - Numerama

Cette nouvelle décision à rebours de la précédente rappelle que la permanence des contenus tant décriée sur le web repose sur la volonté des grandes plateformes. Or, aucune loi ne leur impose de conserver les données stockées sur le web, qui constituent aussi une partie de notre culture collective.

Les grandes plateformes ne durent qu'un temps. Les données qu'elles possèdent disparaissent toujours car ce sont des systèmes fermées. Voilà un autre example.

☠ Bluetouff on Twitter: "👇 Un petit point sur la certification Twitter... on va aborder plusieurs sujets dans ce thread. Après la disparition des certifs pour les media, les OG et les marques, il peut y avoir beaucoup de questions sur ce que cherche à faire Elon, le taulier de ces lieux." / Twitter

Un idée de Bluetouff sur les prochaines actions de Twitter après l'ouverture du code

Terminé le modèle publicitaire dont tous les bagdes bleus qui chouinent nous alimentaient depuis des années. Vous ne voulez pas de pub, vous payez.

Cette Tesla Model S a parcouru 1,7 million de kilomètres, mais le moteur a été changé 8 fois !

Cela semble beaucoup, mais en empruntant les mots du Hollandais Volant:

Avant d'hurler sur la fiabilité : notons que ça fait (en moyenne) environ 425 000 km par batterie et ~200 000 pour le moteur.
Autrement dit, la batterie tient vraiment bien, et le moteur n'est pas forcément mauvais non plus.

En comparaison, les voitures thermiques ont-elles à 200 ou 400 000kms moins de panne mécanique, transmission ou turbo?
Au final, la batterie est bien fiable comparé aux autres éléments de la voiture.

Aussi, un remplacement de batterie coûte 10 000$. Cependant, il y a 40 000$ d'économie de carburant par rapport au coût en électricité, donc cela reste bien rentable.

Can I email… Support tables for HTML and CSS in emails
AJ Sadauskas: "The thing about Twitter is tha…" - Aus.Social

The thing about Twitter is that it really lacks a lot of the features you'd expect from a true Mastodon replacement.

... excellent :D

Favicon Generator: Online, Free & Fast

Based on a logo or an image

Swing Into April (2023 Wallpapers Edition) — Smashing Magazine

April collection :)

Open Assistant

A "real" open assistant instead of "Open AI"

vultix/ts-results: A typescript implementation of Rust's Result object.

A smaller implementation could be used :) This project is awesome though.

Also, it does not support ES modules.

#idea #project rewrites it using new tools: Bun and Vitest for learning purposes.

The Mutable Gallery

Some generative art in black and white. It generates fancy images :D

In defense of simple architectures
Why developers should be force-fed state machines

How to recognize a state machine pattern?

  • a state or status boolean flag
  • boolean fields such as published or paid. Also timestamps that can have a NULL value like published_at
  • a record that is valid for a given period in time

Then the transition history has to be kept. At some point the transition history will be an invaluable source of information. The simplest way to keep track of the transitions is to add a timestamp field for every possible state. However, it is often possible to revisit the same state multiple times. In that case, simply adding fields to your model won’t do the trick because you will be overwriting them. Instead, add a log table in which all the state transitions will be logged. Fields that you probably want to include are the timestamp, the old state, the new state, and the event that caused the transition.

Instead of removing an object, add an error state for any reason you would have wanted to delete a record. A spam account? Don’t delete it, set it to the spam state. A fraudulent order? Don’t delete it, set it to the fraud state.

Stablelm Tuned Alpha Chat - a Hugging Face Space by stabilityai

Another conversational assistant

L’ascenseur social en panne ? Ce que montre une étude sur les revenus des Français - Le Parisien

Selon une étude inédite de l’Insee, réalisée sur 16 années, l’échelle des revenus des Français évolue très peu. Ce qui signifie que les plus riches le restent très souvent, et que les moins aisés ont peu de chances de changer de catégorie.

Voilà

Peut-on restreindre ses désirs pour la planète ? - YouTube

Afin de favoriser la sobriété:

  1. Répondre à nos besoins fondamentaux
    • l'autonomie
    • la compétence
    • l'appartenance sociale
  2. Développer les nudges (coups de pouce)
fathyb/carbonyl: Chromium running inside your terminal

Carbonyl is a Chromium-based browser built to run in a terminal.

“the secret list of websites” - Jan-Lukas Else

It’s a strange feeling to know that Google, OpenAI and Microsoft will make a lot of money with these new chat bots. But they won’t link to your sites anymore.

But it is what it is. If you don’t want that, you probably shouldn’t put a website in public. 🤔

Mullvad VPN was subject to a search warrant. Customer data not compromised - Blog | Mullvad VPN

Mullvad is unable to provide customer data. It seems to be de facto a good VPN.

After demonstrating that this is indeed how our service works and them consulting the prosecutor they left without taking anything and without any customer information.

Politique vol.3 // /home/lord

Prélude vol.1 (https://lord.re/fast-posts/67-politique-1/)

Le système n'est pas nouveau, son itération actuelle a plus de soixante ans, le monde a grandement changé, les technologies, les connaissances, la culture … et pourtant cette cinquième république n'est pas remise en question.

Et surtout gare à toi si tu ne veux pas mettre le doigt dedans. Tu seras jugé si tu t'abstiens, tu seras le fautif. Et cela proviendra à la fois de la classe politique que des électeurs de tous bords. “ The only winning move is not to play. ”

Prélude vol. 2 (https://lord.re/fast-posts/68-politique-2/)
Il ne se passe pas une semaine sans reprocher quelque chose au gouvernement et cela semble être de pire en pire.
Je suis dans mon monde de bisounours sur le Fédiverse, en pensant que la science était respecté et que le mouvement LGBTQI+, le vélotaf, les idées de revenus universel allait de soi.

Je n'ai pas le sentiment d'être radical. Pourtant me considérant désormais comme de gauche, à en écouter le discours ambiant diffusé par certains médias et membres du gouvernement, bha je suis ptet un terroriste.

Arrive le vol.3:

Comment peut-on s'auto radicaliser?

Non, ma radicalisation est juste une réaction naturelle d'une élite qui déchaîne sa violence physique par l'intermédiaire de sa milice armée sur son peuple.

La suite avec les évènements de débuts 2023 qui confirme le vol. 3: https://lord.re/fast-posts/70-politique-4/

Enfin, le vol. 5: https://lord.re/fast-posts/71-politique-5/, qui démontre que le sytème va bien mal et qu'il est temps de se révolter. Des solutions?

  • Passer des lois en phases d'essais pour qu'elles soient annulées par la suite si le résultat n'est pas là.
  • 20% des députés qui votent une loi, c'est pas possible (cf: l'IA utilisé pour les JO)
  • Avoir un panel représentatif de la population au gouvernement
  • La constitution ne protège pas des dérives actuelles.
  • En ce moment, c'est 0 conséquence, donc elles peuvent faire ce qu'elles veulent. Les décisions prises en politique engage les personnes prenant ces décisions.