TODO: flux RSS
TODO: tags
TODO: permalinks
Les eaux du web sont si étendues qu'on ne peut les explorer complètement, mais elles regorgent de merveilles. En voici quelques-unes que j'ai pu rencontrer.
Presque rien ne prend le temps estimé, autant se baser sur des indicateurs fiables.
Une parodie "corporate" du Manifeste Agile.
Les replays des confs des PyCon US.
Tiré d'une conf Lisp provocante, cet extrait tente d'expliquer pourquoi le style "crado" C/Unix a gagné face à la pureté Lisp : (reformulé de façon plus moderne/Agile) il vaut mieux livrer rapidement quelque chose qui marche déjà à moitié, et finalement un truc 90% satisfaisant, plutôt que de chercher la perfection et de ne jamais rien réussir à livrer. L'auteur a continué d'être tiraillé et l'explique dans Worse is better (et d'autres suites), tandis que de nombreuses autres personnes ont donné leur vision de ce schisme.
Critique de l'évolution du métier de développeur.
Satire de la progression en complexité du code fonctionnel/Haskell produit avec l'expérience.
Recueil d'histoires de dèv/de bugs surprenantes.
La grammaire complète du langage Python.
Les commentaires Hacker News qui discutent d'un rant sur les impacts de perf de LD_PRELOAD sur libpython, et le ticket de bug Python associé (qui a été mergé depuis).
Astuce Git : git push --force-with-lease permet de ne pas écraser la branche distante si elle a bougé depuis le dernier push (typiquement si quelqu'un d'autre a pushé dessus depuis).
Astuce Git : [pull] ff = only permet de s'assurer qu'un git pull ne causera jamais de merge indésiré en local (qu'il faut défaire ensuite).
Depuis Python 3.7, les annotations de type sont persistées au runtime. C'est la base de nombreux outils dynamiques.
Un résumé des différences fondamentales du fonctionnement d'un SSD par rapport à un HDD, et les implications que ça a sur les performances.
Le récit de la correction d'un bug qui touche à des subtilités de TCP.
L'ensemble de catalogue Qt.
Satire de page Git générée aléatoirement. (nécessite d'activer le javascript)
Une défense du git rebase que Fossil ne permet pas une fois que la branche a été pushée.
2022-09-13
Encore un compilateur AOT pour Python.
2022-09-14
Optimisations typiques pour un interpréteur de langage dynamique (Python, Javascript).
2022-09-17
Très bon outil pour débugger des regexes : d'une part il offre une visualisation sous forme de "railroad diagram", d'autre part il permet de voir caractère par caractère comment on évolue dedans.
2022-09-20
Comment Nix layerise les images qu'il produit afin qu'entre elles un maximum de layers soient partagés.
2022-09-21
Des phrases qui comparent avec humour (amer) la simplicité d'être éleveur de chèvres par rapport à DevOps. Exemples :
2022-09-21
Comment compiler son code Python typé pour faire x2 sur les perfs (seulement).
2022-09-28
Exercice d'optimisation sur le simpliste programme "FizzBuzz". Python arrive à ~0.1GiB/s, Java, Go et Rust montent à ~3, en C ça taquine le 8, et avec de l'ASM optimisé et les bons appels systèmes Linux ça peut même monter à 57 (2+ ordres de magnitudes par rapport à Python) !
2022-09-28
Joel Spolsky, en outre fondateur de Stack Overflow et auteur de l'influentiel blog "Joel on Software", a également été développeur à Microsoft sur Excel, il présente (dans un ton un peu dédaigneux) les fonctionnalités essentielles que pas assez de mondes connaît, en particulier la supériorité des "Tables".
2022-09-28
Uber a historiquement une grosse quantité de logs non-structurés (juste une string interpolée), qui prenaient trop de place (trop cher de les stocker longtemps). Ils ont mis au point un algo de compression spécialisé dans les logs, qui tire partie de leur format semi-répétitif (texte à trou, rempli par des valeurs répétées ou similaires), avec une compression classique par-dessus (mais custom pour les floats, qui réduit l'entropie de leur représentation binaire quand ils varient seulement d'un exposant base 10, ou qu'ils sont proches). C'est une optimisation largement dépendante de leur dataset, mais facile à indexer pour des recherches, et qui ne demande pas de changer le code de log.
2022-10-03
http://britneyspears.ac/lasers.htm
2022-10-04
Un fichier qui contient énormément de strings susceptibles de causer des problèmes, que ce soit d'encoding Unicode, de quoting, de parsing, d'interpolation, de rendu, ...
2022-10-05
J'espère que c'est de l'humour, même si je comprends pourquoi ça peut passer pour du premier degré. C'était le premier résultat Google pour ce qu'est l'Iterative Test Last (ITL) alors que l'article présente le Test Last Development (TLD).
2022-10-06
Beaucoup d'exemples de la syntaxe de différents langages pour la même opération, par exemple l'appel de fonction.
2022-10-21
TL;DR: Le problème est : trouver 5 mots (anglais) de 5 lettres qui utilisent 25 lettres différentes (donc aucune en commun). Sa solution en Python faisait une recherche exhaustive et a pris 32 jours pour terminer. Des personnes ont proposé des programmes plus performants, ne prenant que quelques minutes, puis quelques secondes, enfin quelques millisecondes (d'où le titre), et en fin de vidéo 500 micro-secondes. Techniques employés :
2022-10-22
Alternative à devoir se coltiner OpenSSL.
2022-11-01
Et ça marche.
2022-11-10
Les conseils et bonnes pratiques d'une caricature de développeur "moyen", formulé comme par un homme des cavernes. Beaucoup de pragmatisme.
2022-11-10
A quel niveau êtes-vous actuellement ? Et à quel niveau vous sentez-vous bien ?
2022-11-17
En se basant sur GitHashCrash qui permet de modifier un commit pour que son SHA-1 colisionne avec une valeur donnée, avec un peu de bash et de git-rebase il arrive (contre un peu de CPU) à avoir des commits dont les SHA commencent à 0 et s'incrémentent.
2022-11-22
Après un rappel sur les avantages de l'archi Hexagonale, comment aller plus loin (en Haskell) avec une Free Monad pour construire un *embedded DSL* avec les propriétés voulues. Il s'agit d'un prélude (2017) aux *effect systems*.
2022-11-26
Une (trop) courte analyse des performances d'un fogk CPython sans GIL.
2022-12-15
Une vision très pragmatique de ce qu'est le test, et de pourquoi le TDD n'en est pas un très bon exemple.
2022-12-19
Une ontologie des exceptions :
2022-12-21
Un développeur de PyPy explique comment utiliser Z3 (un SMT-solver facile d'accès grâce à ses bindings en Python) pour prouver que des optimizations faites par PyPy sont correctes. Les traces générées par PyPy (puisque c'est une tracing-JIT) peuvent donc être converties en code Z3 et automatiquement prouvées. Il l'a fait pour tous leurs tests unitaires d'abord, puis en branchant en entrée un fuzzer (Hypothesis) qui génère de bonnes traces, certains recoins de l'optimiseur ont pu être explorés et d'autres byg trouvés, principalement concernant les over/underflows et l'asymétrie INT_MAX != abs(INT_MIN). Cela lui a permis de confirmer que deux bugs subtils en étaient bien, maid cela reste pour l'instant limité aux optimisations des opérations numériques.
2022-12-21
Le récit d'un build cassé et des difficultés à réparer avec l'outillage Pipenv.
2022-12-22
Techniques d'obfuscation et d'anti-analyse en Python relevées par JFrog.
2022-12-25
Comment un serveur peut détecter que ce qu'il envoie est pipé dans bash, qui lit et exécute les lignes une par une.
2022-12-31
Comment packager PyTorch pour Guix (Nix) ? En inspectant le contenu des packages Python et les méthodes pour les construire, on constate que ce n'est ni reproductible, ni même fiable en terme de supply chain. La récente supply chain attack (https://pytorch.org/blog/compromised-nightly-dependency/) dessus le montre bien.
2023-01-05
Le récit de la (re)définition de la grammaire TLA+ et de son l'implémentation pour tree-sitter afin d'être ensuite intégré dans NeoVim. Avec une bonne explication de la différence entre tree-sitter et un Langage Server. Et des étapes dans le ressenti personnel envers le code OpenSource. J'en suis à 3,5 actuellement.
2023-01-17
Une bonne présentation des différences, et donc des avantages et inconvénients, entre les grammaires/parsers LR et descent-recursive. Nécessite de bonnes bases.
2023-01-18
Effectivement, nos outils actuels d'exécution de suites de test sonr encore rudimentaires.
2023-01-20
Calculer la moyenne d'une séquence de nombres est bien plus compliqué que ça n'en a l'air (en partie à cause des nombres flottants) et le test d'hypothèse peut se révéler utile.
2023-01-23
En effet, des commandes avancées qui aident à comprendre Git, et peuvent à l'occasion se révéler utiles.
2023-01-24
Une démonstration par l'exemple que la frontière est floue entre un interpréteur et un compilateur. L'article en lui-même ne m'a pas vraiment convaincu, mais je suis d'accord. Et le langage "BF" en question c'est "Brainfuck". cf les Projections du Docteur Futamura : http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html
2023-01-25
En partant du constat que personne n'est d'accord sur la définition exacte de la Pyramide des Tests, il en propose une que je trouve pertinente : l'axe vertical c'est simplement la portion de l'appli (ou du système) qui est testée. Ça a l'avantage de ne pas trop s'ancrer dans les détails (s'il y a une UI, une API, des classes, ...), et il n'y a pas de labels sur les différents tiers. La présentation de la Pyramide chez Martin Fowler (https://martinfowler.com/articles/practical-test-pyramid.html) est je trouve bonne et adéquatement nuancée.
2023-01-26
Le "new style" c'est str.format car l'article date de 2016. Mais en effet puisqu'on peut exécuter du code arbitraire c'est un risque, que n'ont pas les f-strings je pense.
2023-01-28
2023-02-03
Créer une image Docker sans utiliser un Dockerfile, mais directement en éditant un fichier OCI (en Rust).
2023-02-06
Laisser les choses en meilleur état.
2023-02-06
Quels facteurs ont justifié de prendre le risque d'une récriture (malgré l'avertissement de Joel Spolsky) et les différentes stratégies pour réussir.
2023-02-07
La mise en évidence du flou dans la clause NC ("non-commercial") des licences Creative Commons. TL;DR : il n'y a pas de jurisprudence, donc se méfier.
2023-02-08
Très bonne explication des problèmes de précision/représentation causés par les floats.
2023-02-09
TL;DR: oui, cf ma revue le 2023-01-17, les réponses en commentaires à son article lui disaient que les sanitisers auraient trouvé les 2 bugs qu'il a rencontré.
2023-02-09
En réponse aux critiques comme quoi les programmes Rust utilisent trop de dépendences transitives, il montre que c'est aussi le cas pour les programmes "clean" en C/C++ mais qu'ils le font de manière (beaucoup) moins évidente. Ses conclusions à la fin sont bonnes.
2023-02-11
Une petite démo de la transpilation d'un programme simpliste en C++ (syntaxe réduite) vers du code qui réalise les opérations sous chiffrage homomorphique, c'est-à-dire sans avoir à déchiffrer les données. Par contre les perfs sont abyssales (pénalité de 20000).
2023-02-14
TL;DR: l'expertise c'est savoir reconnaître des patterns, il faut réunir 4 critères :
2023-02-15
TL;DR : dans les noms de variables : pas d'abbréviation, pas d'info de type (hungarian notation), pas d'unité, pas de type (I pour Interface, pas de *abstract* ou *base*.
2023-02-15
Dans la lignée du "Stop drawing dead fishes" de Bret Victor, ce talk présente les limitations de la manière classique de travailler avec les langages mainstream, et des alternatives (ou pistes de réflexion) pour augmenter l'interactivité.
2023-02-15
L'échec de tenter de contribuer à un projet open-source ... en langage C sale.
2023-02-20
La décision des dévellopeurs de l'éminent package Python `cryptography` de passer de C à Rust en 2021, pour des raisons de fiabilité, a cassé beaucoup de pipelines (car Rust n'était pas présent pour compiler le package depuis ses sources si pip ne trouvait pas de wheel pré-compilée adéquate) et ne peut donc qu'être installé sur des plateformes supportées par le backend de LLVM. Ça a été l'occasion de relancer le débat sur la responsabilité (ou pas) des mainteneurs OpenSource.
2023-02-21
"I ended up going down the rabbit hole re-implementing array sorting with AVX2 intrinsics. There’s no reason I should go down alone." est le premier opus d'une série d'articles qui suivent de façon très introductive l'implémentation d'un QuickSort à base d'instructions vectorielles (AVX), pour DotNet. Il y a des infographies complètes, des data sourcées, des animations, ... un vrai soin apporté !
2023-02-21
Un petit rappel que les classes de complexité se basent sur le *worst case*, qui peut ne pas être représentatif (contraposée : des problèmes communs sont facilement SAT-solvés bien que NP-Complete/Hard). Et les *package managers* n'utilisent pas de SAT-solvers (en général) car c'est peu approprié/pratique.
2023-02-21
Débunkage d'un article critique de l'Agile. Il y a de très nombreuses sources, la perspective historique que cela donne est très appréciable. Et cela ré-affigme ce qu'est l'Agile et ses méthodologies. Je vois souvent les gens confondre Agile et Scrum, voire faux-Scrum.
2023-02-23
Pour tenter de casser les clés de chiffrement d'un ransomware, les chercheurs ont réduit l'espace de recherche (entropie) puis optimisé le code, pour atteindre une durée de crack raisonnable. Mais tout cela requière des infos très précises sur le contexte d'exécution du ransomware.
2023-02-24
L'autfur explique qu'avoir raison est plus important qu'être poli, de ça je ne suis pas convaincu. Par contre refuser une contribution et s'enfermer dans un marasme de hotfixes me semble clairement inefficace. Un bug est un bug.
2023-02-26
La version semi-parodique "foireuse" du [Manifeste Agile](https://agilemanifesto.org/iso/fr/manifesto.html)
2023-03-01
Un exemple de site web pas trop moche avec quasi aucun CSS. A inspiré http://bettermotherfuckingwebsite.com/ et https://thebestmotherfucking.website/
2023-03-02
Une présentation de la Weekly Business Review d'Amazon, qui passe en revue des centaines de métriques actionnables pour améliorer les résultats de l'entreprise.
2023-03-04
La recherche de la cause d'une erreur de checksum.
2023-03-06
Présentation du concept de "registre de language" par analogie à nos langues où l'on peut user de différents registres (formel, familier, ...) qui permettent différemment de communiquer. Dans le cas de Rust ici il est discuté des manques de certains, surtout en regard des *effects* et de la programmation fonctionnelle versus impérative.
2023-03-09
La fin des débats de ce qui est ou pas un sandwich ? (non)
2023-03-09
Allen Holub dans cette vidéo défend une vision très pure de l'Agile : autonomie complètes des équipes, livraison permanente qui donne lieu à du feedback immédiatement, ... Et en effet c'est assez différent de Scrum.
Il dézingue Scrum en expliquant que ça ne peut pas marcher (son analogie sur l'usine de Detroit), mais je crois plutôt que, contrairement à ce qui est écrit dans le Scrum Guide, il ne faut pas le prendre comme une bible mais comme une base pas trop mauvaise. Je défends ensuite de l'adapter aux envies/besoins/particularités de l'équipe.
[Insérer référence à "les règles au début on les suit sans les comprendre, puis on les comprend, puis on crée ses propres règles]
Se contenter de Scrum c'est effectivement se mettre une poutre dans l'oeil. Mais ça fait fonctionner le biz du "Agile industrial complex" (disclaimer : ma certif dèv Scrum a expiré il y a 3 ans).
Mais pour aller au-delà il faut déplacer des montagnes : sortir du taylorisme, obtenir la confiance et l'autonomie, être auto-critique et savoir s'auto-organiser, ... Je ne crois pas que tout ça soit acquis, donc on se retrouve souvent avec Scrum comme compromis.
Et je voudrais insister sur le fait que Scrum évolue beaucoup. Je ne connais pas la version d'il y a 20 ans, mais la version 2022 est significativement différente de celle de ma certif de 2018. La certif c'était de savoir répondre par coeur à des questions, donc effectivement le niveau zéro de l'esprit critique. Et c'est dans ce terreau que naissent les guéguerres de chapelles. Le cargo culting ne sert personne, à part les vendeurs de hype.
Pour moi, Scrum c'est pas un si mauvais premier choix comparé à bien d'autres situations car tu as l'obligation de livrer (et donc d'intégrer), de se centrer sur la valeur, de s'améliorer continuellement, ... Toutes des valeurs du Manifeste, peut-être pas dans la pureté que défend Allen, mais je pense qu'il vaut mieux "half of scrum badly + jira" (citation d'Andy Hunt) que rien du tout. Et ensuite évoluer vers mieux.
Pour conclure, et par rapport au titre de la vidéo, ne pas perdre de vue le contenu du Manifeste, et ne pas se contenter de Scrum (et surtout pas de Jira !).
PS : se baser sur les slogans Orwelliens c'était un peu pété à mon avis
2023-03-13
Cet article a l'air intéressant, mais qu'est-ce qu'il part dans tous les sens, je ne vois pas le fil conducteur ! Dès le début ça embraye sur DRY, puis ça tourne sur Sandi Metz à propos de "the wrong abstraction", que ça compare au SRP de Solid, que ça enchaîne sur les difficultés de couplage puis sur la modularisation. Et ça semble ne pas prendre le temps de rappeler que l'origine de DRY c'est The Pragmatic Programmer et que ses auteurs dans 20e édition précisent que DRY ce n'est pas tant à propos du copier-coller que surtout "the duplication of knowledge, of intent". Mais ce n'est pas comme ça que ça a été compris. WET tente de contrecarrer les effets néfastes de DRY sur l'abstraction, mais il n'est pas mentionné dans l'article.
2023-03-16
Un framework pour implémenter en Java des tests sur des règles d'architecture (import de package interdit, respect des couches, pas de cycles, ...).
2023-03-20
L'exemple porte sur l'optimisation d'une fonction de calcul sur une matrice, dont le temps d'exécution est benchmarké. Une solution naïve est codée en Python, et lorsqu'elle est exécutée la première fois elle note astucieusement le code LLVM correspondant à ce qu'elle fait. Le code ainsi produit est très verbeux et très peu optimisé, mais une phase de compilation avec optimisation plus tard on obtient un super binaire, qui obtient de bons résultats au benchmark. C'est une technique utilisée par des compilateurs Python pour la perf, comme Numba.
2023-03-21
Un bon râlage sur le bazar qu'est la programmation. Dispo en français
2021-03-21
Un CPU est un compilateur qui prend en entrée de l'ASM et en sortie produit des phénomènes physico-électriques. Vu sous cette angle, on retrouve beaucoup de techniques en commun.
2023-03-24
Une courte introduction à l'utilité et quelques exemples de systems design. J'aime beaucoup l'approche de tenter de comprendre la réalité et d'aller à la source des problèmes.
2023-03-25
Comment une organisation qui travaillait rapidement devient lente en grandissant ? En devant aligner les intérêts de nombreuses personnes, au même moment, avec un plan clair pour un objectif identifié, de façon satisfante pour chacune, en évitant les tensions inter-personnelles, et les escalades par managers intermédiaires.
2023-03-27
Du haut de mes 300+ onglets sur téléphone (Firefox m'indique "∞"), mon dossier "later" de 200+ bookmarks, mon "later2" de 1000+, mes archives des différents ordinateurs/navigateurs que j'ai eu ... oui j'ai le même problème. Pour s'en sortir il faut choisir quoi sacrifier ; c'est dur. Et ne pas ré-ouvrir Hacker News juste après ...
2023-03-30
Un algorithme intensif en calcul récrit efficacement en Rust. L'outillage de base (pyo3/maturin) permet de facilement étendre du code Python par du Rust, avec un peu de connaissances en Rust (et un scope réduit) on peut tout-à-fait en intégrer au besoin. Néanmoins, utiliser la vectorisation intrinsèque à Numpy aurait pu améliorer significativement les perfs sans se compliquer la vie à devoir ajouter du Rust.
2023-04-03
Des techniques d'opti que je ne connaissais pas (contrairement à la partie 1).
2023-04-04
Le nemesis. Effrayant de retrouver certaines pratiques courantes dans cette liste.
2023-04-04
Mes remarques dessus, à part que c'est globalement intéressant :
2023-04-05
En lisant l'article, j'ai été surpris de trouver les exemples aussi mauvais. En premier par le cas de notifieurs, ce n'est pas cette solution que je recommanderait, et ce pour 2 raisons :
Ensuite leur analogie des vêtements en couche est claquée. Sans moi-même fallacieusement faire remarquer que le même problème peut être vu comme une question d'archi en couche (je l'ai fais dans la phrase précédente), c'est surtout que s'il pleut et qu'ensuite j'ai froid alors je mets mon blouson par-dessus mon anorak ? Le métier (propriétés techniques des habits, et les coutumes vestimentaires) ne prescrit rien, mais on fait quand même un choix technique pété.
Ensuite l'article part sur les décorateurs abstraits. Je soutiens qu'ils ne servent à rien pour le pattern. Surtout qu'ils rigidifient de devoir appeller un unique `extra` sans paramètre, et après l'emballé. Ce qu'il faudra de toute façon override, donc autant s'en passer.
J'ai l'impression que l'article ne démontre pas du tout correctement l'utilité des décorateurs. Pourtant ils sont très utiles, en Python il y a de la syntaxe exprès pour. Mais là ils ne donnent pas d'arguments décisifs et s'encombrent trop je trouve.
2023-04-06
Un bon *primer* je trouve, on a de bonnes bases pour commencer. Mais ça reste très "catalogue de comment faire certaines actions", je trouve qu'il y a assez peu de "understanding" au final. Pour reprendre la classification Divio https://documentation.divio.com/ on a bien les 3 autres quadrants mais il manque je trouve de la substance entre toutes les commandes qu'elle énumère. La forme a peut-être un peu trop guidé le fond.
Et je trouvais parfois l'écriture manuscrite presque illisible, je préfère le compromis d'Excalidraw plus efficace.
Elle mentionne qu'il ne faut pas passer des secrets avec --build-arg mais ne pointe pas vers la façon correcte de faire.
Ça n'empêche pas que j'ai appris des trucs, soit que je n'avais pas creusé (les limites RAM/swap, CPU, capabilities, ...) soit qui m'était mystérieux (la convention chroot pour les exit code).
2023-01-12
Aucune explication de ce qu'est un Service Mesh, dès le début. L'avant-propos indique de ne pas troller en comparant les alternatives, mais ni leurs différences ni même leurs noms ne sont évoqués. Et la description de ce que fait Istio se résume à "cette liste de checkpoints [non définis]" (page 9). Le texte manuscrit est devenu majoritaire, au détriment de la lisibilité. Et il y a encore de nombreuses fautes de grammaire. Et j'ai du mal à lire les niveaux d'indentation des Yaml.
Page 27 surgissent les VirtualService sans aucun contexte, ils sont juste cité dans un schéma plusieurs pages avant sur les Gateway, accompagné du mot "bind".
Pour moi, le "in a visual way" prend encore une fois le pas sur le "understanding", mais plus encore que pour son oeuvre similaire sur Docker, tant est que j'ai du mal à suivre le contenu.
Nitpick : elle donne l'exemple de router le trafic HTTP selon l'user-agent "firefox" mais il faut plutôt chercher "gecko", le nom du moteur de rendu qui est présent dans d'autres applicatifs, cf https://webaim.org/blog/user-agent-string-history/
2023-01-12
Explication très intuitive grâce aux visuels.
2023-04-29
Qu'est qui est plus efficace qu'un linter ou que Rust pour la qualité de code ? Que les devs soient reposés, ne travaillent pas trop et ne soient pas (trop) stressés.
2023-04-29
5 justifications fréquentes que la perf ne compte *jamais*, réfut3es par Casey Muratori. Ca fait un peu argument de l'homme de paille, mais les très nombreux exemples qu'il donne sont bien une preuve que c'est un sujet fréquemment pertinent (même si pas toujours).
2023-04-29
Décompiler le jeu (en C# car Unity), trouver comment provoquer un int overflow, et profit.
2023-05-05
Suborbital sert d'exemple. C'est un moteur/framework pour permettre les plugins dans des webapps. Il y a notament une interface WASM qu'il est possible de target. En réutilisant les travaux antérieurs sur embarquer un interpréteur Python (compilé en WASM) dans le navigateur, il devient facile de créer un plugin web en pur Python. L'article est clair, le code est dispo et expliqué, cool ! Mais ils ne parlent pas de perf du tout.
2023-05-11
Uniquement des techniques basées sur le typage, mais néanmoins pertinentes.
2023-05-24
Un compilateur qui pour tenir dans le boot sector (0,5 Ko) est minimal. Ca n'est bien entendu pas conforme au dtandard, mais ça montre ce qu'on peut réussir à faire avec de l'ASM.
2023-05-25
TL;DR: certaines requêtes SQL faisaient péter le WebSockets de la lib "undici" entre une app Node et la DB Postgres, car le payload WS dépassait la taille threshold de 126, ce qui provoquait dans la lib un bug de mémoire (non initialisée et non écrite) pour de sombres histoires d'offset dans un ArrayBuffer dans une pool et de perf.
2023-05-31
L'article parle d'une brosse à dent dont le manche communique avec la tête via NFC. Et les commentaires sur Hacker News vont bon train sur les implications stupides que cela permet : après 3 mauvais mots de passe, la tête se brick (valeur très basse définie par Philips par sécurité), donc avec le bon matos tu peux aller te balader dans un magasin et bousiller tout leur stock (Toothbrush Terrorist). Ou bien ajouter la 2FA comme mesure de sécurité additionnelle, reconvertir la tête NFC en clé d'hotel ou carte d'abonnement de transport en commun, requérir que le remplacement des parties satisfasse
2023-06-02
De l'importance de l'ergonomie dans l'utilisation de certaines fonctionnalités, pour en faciliter l'adoption. Les exemples : le typage fort, les patterns où l'on sépare les IO du code métier, l'outillage du langage, le scaling de 1 Hz (la vitesse de travail d'un dev) à la prod, ...
2023-06-03
Un langage troll.
2023-06-06
Satire
2023-06-06
Au lieu de payer les coûts exorbitants d'egress d'AWS, pourquoi ne pas créer une stack custom qui envoie et lit des paquets IPv6 depuis S3 ?
2023-06-06
Vidéo humoristique de tom7 où il présente différentes façon de stocker des données : en jonglant à envoyer des pings contenant une payload à des serveurs de l'autre côté du globe, dans la configuration de lignes de milliers de parties de Tetris en parallèle, ou bien dans la minuscule mémoire d'une multitude de tests Covid assemblés en une seule mémoire unufiée.
2023-06-06
Vidéo d'explications de quelques bases, très intéressante.
2023-06-10
TodePond est jne chaîne qui parle de codes pour des simulations, avec un style particulier. Ce dernier épisode a une tournure très intéressante.
2023-06-11
Un talk donné par Robin Moussu, et qui parlait notemment des différentes syntaxes/sémantiques que les langages de programmation offrent pour la gestion des erreurs (code d'erreur, exception, ...). Mais pour choisir entre les différentes possibilités, j'aime bien la classification d'Eric Lippert avec ses Vexing/Fatal/Boneheaded/Exogenous Exceptions. Cela permet de mieux choisir entre checked et unchecked exceptions en Java (je ne retrouve plus l'article qui expliquait si bien la bonne stratégie à employer et les erreurs de la stdlib, celui-ci de Miško Hevery sur le Google Testing Blog avec celui-là peuvent faire l'affaire). Et pour une vision encore plus complète du problème et de son évolution, l'excellent The Error Model de Joe Duffy sur son expérience du projet Midori à Microsoft.
2023-06-14
Un Arc (en Rust) était update depuis une floppée de cores sur 2 différents procs, écroulant les perfs.
2023-06-18
De l'importance de se construire un réseau.
2023-06-18
Une nouvelle semi-horrifique d'informatique, rapellant Trusting Trust de Ken Thompson (papa d'Unix et du langage C, plus tard de Go).
2023-06-19
Un langage où on peut définir des variables et des lambdas, et sinon seulement raise et try-catch des exceptions (et les rewind). Ça suffit pour implémenter les structures classiques de control flow, à l'instar de Python.
2023-06-19
Créer un simulateur de rendu (sous forme d'une caméra) dans le moteur de rendu de Blender : mille fois trop compliqué, mais stylé !
2023-06-23
Un brouillon pour ajouter de nouveaux UUID, avec des propriétés intéressantes, à la RFC originale.
2023-06-25
Une ségie de questions où il faut trouver l'ordre de magnitude de la fréquence à laquelle peut tourner des exemples de code triviaux.
2023-06-25
Très peu performant, mais montre bien la puissance de cet outil. Le backtracking va itérativement tester tous les multiples possibles.
2023-06-26
A part les dates et les noms, que des blagues.
2023-06-27
Optimiser l'utilisation des atomic pour éviter de provoquer trop de chache misses (éviction de l'atomic dans les autres CPU).
2023-06-28
Petite présentation du protocole qui permet au hardware de garantir la cohérence des caches L1 à L3 entre différents cores.
2023-06-28
Micro-optimisation d'une simple boucle et comparaison avec ce que Clang et GCC ont naïvement généré. La partie 2 va explorer l'efficience des cache-lines.
2023-07-07
100% d'accord sur la méthode pour éviter tous les problèmes évitables.
2023-07-18
Un langage textuel pour générer des diagrammes, avec un layout manuel très permissif. Il est notament utilisé pour générer les railroad diagrammes de SQLite (exemple). Version online.
2023-07-25
Il explique que le succès d'Amazon AWS et de Microsoft est d'avoir crée des plateformes où créer des produits, là où Google peine encore à créer ses produits sans plateforme.
2023-07-25
Excellente explication sur le blog de TailScale (WireGuard) qui explique comment NAT impacte les connexions pair-à-pair sur et à travers les réseaux.
2023-08-05
Une étude faussement sérieuse des difficultés managériales et organisationnelles des légions du Chaos dans Warhammer 40K.
2023-08-06
Réflexions intéressantes sur les formes et l'utilité des Anti-Corruption Layer en Hexagonal/DDD, et plus générallement sur les intérêts ("facets") du pattern Hexagonal selon les interprétations qu'on en fait.
2023-08-09
En CPython les int de plus fréquents (de -5 à 256) existent toujours en mémoire, ils ne sont jamais créés ou détruits (des immortals). Donc comme des constantes on peut les intervertir pour rendre fou les gens.
2023-08-13
Conseil de posture pour sa carrière : parler solution plutôt que technique avec un client.
2023-08-15
Une collection d'articles par les personnes ayant crée htmx, qui clarifient ce qu'est une API REST (aucun rapport avec JSON), le couplage avec les applications, les problèmes du tout-javascript, l'ergonomie des SPA/MPA, ...
2023-08-17
Dispo aussi sur Youtube.
TL;DR: vivez le moment présent, focalisez-vous sur vos sensations, plutôt que de ruminer le passé ou de vous inquiéter des futurs possibles. #mindfulness
2023-08-18
Un résumé à date des débats, groupes, positions et difficultés causés par le projet de retirer le GIL de Python. Le GIL est une facilité pour écrire le code multithread de l'interpréteur CPython, qui 20 ans plus tard limite gravement les perfs multithread.
2023-08-19
Une présentation de ce qu'est l'async en python, et des frameworks historiques qui ont contribué à sa maturation. Et la conclusion rappelle qu'on n'en a rarement besoin
2023-08-22
Très bon talk, son message positif est bienvenu. Dommage pour la qualité sonore.
2023-08-28
S'applique très très bien au métier d'ingénieur aussi.
2023-08-29
Un tableau récapitulatif de la difficulté d'écrire une regex qui sache gérer tous les cas d'URL selon le standard.
2023-09-08
Avoir des objectifs raisonnables, et les atteindre incrémentalement, est la route sans histoire du succès.
2023-09-25
A l'aide de sorcelerie à base d'une VM composée de 2 meta-tracing interpreters, 2 langages (Python et PHP, via des interpréteurs respectifs) peuvent être exécutés au sein d'un même fichier, sans FFI explicite. Mais l'article date de 2016, je ne sais pas si ça a évolué depuis.
2023-10-10
Collection de clichés/blagues de pays européens envers d'autres.
2023-10-10
Très bon enseignements que je partage :
2023-10-11
Très bonne explication des concepts, et je partage son avis que sans les comprendre on ne peut que faire des erreurs sans s'en rendre compte. Mais la ligne de commande, la config, le stage et le working tree représentent tellement de contexte mutable et de subtilité que je m'y perds parfois moi-même.
2023-10-11
Une base raisonnable pour n'importe quel script Bash.
2023-10-11
Sur les traces du célèbre FizzBuzz à très haut débit (Stack Overflow), le voyage d'un speedup x20 qui nous plonge dans les tréfonds de Linux.
2023-10-11
Une liste ordonnée de comment rendre une fonction difficile à mal utiliser.
2023-10-14
Ken Thomson, dans les années 80, mit en garde contre les backdoors qui peuvent vivre dans les programmes, et surtout les compilateurs (il est co-auteur du langage C) qui se compilent eux-mêmes, où les backdoors peuvent alors survivre sans être présentes dans le code.
Cet article, 40 ans plus tard, examine ce contre quoi Ken mettait en garde, et le remet au goût du jour.
2023-10-28
Le récit détaillé de quelqu'un qui n'est pas novice et qui voudrait simplement et fiablement builder son package en Python 3.12.
2023-11-01
Rétrospective sur 7 années professionnelles. Je suis très en accord avec ses points : se faire des opinions, observer comment les autres travaillent (code, debug, relecture, ...) pour s'entre-améliorer, faire du code simpliste et le mettre en prod, owner collectivement le code, bien utiliser git, s'autoriser à poser des questions qui semblent idiotes.
2023-11-01
Le mainteneur d'un linteur pour JS écrit en C++ constate un bug coriace, et va finir par le corriger.
2023-11-04
Des statistiques et un palmares des jeux de mots de noms des salons de coiffure en France métropolitaine.
2023-11-06
Comment repenser nos pratiques de dévellopement au regard de la crise climatique et des bouleversements globaux.
2023-11-15
Investigation de pourquoi un code est plus lent quand utilisé directement en Rust plutôt que via le wrapper Python (PyO3).
2023-12-02
Explication de bout-en-bout de comment nous perçevons les couleurs décidées dans nos programmes informatiques.
2023-12-04
A l'aide d'un fuzzer, trouver des inputs SSML (XML for speech synthesis), envoyables depuis du JS qui tourne dans un navigateur Chromium à une lib dynamique Windows possédant une vulnérabilité sur le parsing XML.
2023-12-05
Un retour aux principes de Scrum, la présentation de plein de façons de le faire échouer ou rendre nuisible, et des pistes sur comment y remédier.
2023-12-06
La différence entre 2 techniques de test employant de l'aléatoire : fuzzing et property-based testing. Et 2 comportement intéressants, émergant des properties.
2023-12-08
Troisième épisode de sa série où il interviewe des ingénieurs traditionnels (construction, chimie, ...) s'étant reconverti dans l'informatique, ce qui diffère et ce qu'on peut apprendre de leur vision différente.
2023-12-24
Une mise en pratique des Falsehoods programmers believe about time
2023-12-25
Le matériel de tous les jours de maintenant est entre quelques dizaines voire un milier de fois plus rapide (voire performant) que le Cray-1, le super-ordinateur le plus puissant en 1976.
2023-12-25
Un essai qui démonte les faiblesses de qualité de communication rendues unuverselles par PowerPoint. Ce qu'il propose c'est d'être exigeant envers soi-même et les autres : avoir un bon sujet, et bien le préparer.
2023-12-26
TL;DR :
2023-12-26
Un tutoriel pratique pour comprendre comment Linux gère ses différentes mémoires, l'OOMKiller la récupère, et un programme (Java spécifiquement) l'alloue.
2023-12-28
Une fonction `isEven` avec toutes les réponses (uint32) hardcodées dans des branches de if-elif-else.
2023-12-30
Un tutoriel de comment réaliser une implémentation minimale de Git, pour mieux en comprendre les concepts et le fonctionnement.
Dans la même veine il y a Committing without git où on crée des commits manuellement.
2024-01-01
Implémenter ses protocoles de façon IO-agnostic, c'est-à-dire en supposant disposer d'une fonction qui récupère les bytes en entrée et d'une autre qui permet de les faire sortir, permet à la fois de les rendre facilement testable (sans mock biscornu) et framework-agnostic (relativement facile à intégrer n'importe où, async ou sync, ...).
2023-01-22
Récit de la récriture d'un parseur YAML en Rust, tant du point de vue de ce qu'il a fallu techniquement faire, que des intérêts humains que cela apporte.
2024-02-09
TL;DR: les graphes c'est plus compliqué que ça n'en a l'air.
2024-03-06
Pleins de techniques non-intrusives pour identifier les causes de problèmes de perf d'écriture par Kafka. Et du talent.
2024-03-15
Typiquement injecté via LD_PRELOAD, va remplacer l'appel système "time" par une implèm qui en donne le choix de la valeur, de l'avancement, de la vitesse. Hyper pratique pour tester de manière non-intrusive du code de gestion du temps.
2024-03-15
C'est aussi un protocole de FFI (Foreign Function Call) très peu pratique ni stable.
2024-03-30
Collections d'implémentations d'algo dans différents langages, pour comparer leurs performances.
2024-04-06
Très intéressant, je suis en accord avec ses conseils, et ils sont venus compléter le document textuel équivalent que je travaille.
2024-04-23