Hello les ami.e.s,
Ce mois-ci, je pense que vous nâĂȘtes pas passĂ©s Ă cĂŽtĂ© du petit hack dâHugging Face. Je nâen fais pas un pavĂ©, beaucoup de choses ont dĂ©jĂ Ă©tĂ© dites et je trouve que le plus intĂ©ressant est leur postmortem. Plus particuliĂšrement: le passage oĂč ils dĂ©taillent comment ils ont eux-mĂȘme utilisĂ© des LLM (lesquels, pourquoi, commentâŠ) et que les premiers modĂšles utilisĂ©s Ă©taient inutiles: lâanalyse des requĂȘtes âwere blocked by the providers' safety guardrails, which cannot distinguish an incident responder from an attacker.â
Une autre attaque de juillet (promis je ne suis pas devenue une newsletter de cybersecuritĂ©) que jâai trouvĂ©e assez folle, câest celle des malwares dans les SVG (en utilisant de la stĂ©ganographie). Lâattaque ciblait des dĂ©veloppeurs, via des fausses campagnes de recrutement avec un projet Ă run localement pour le test technique. Tout est documentĂ© dans cet article de Daniel Stepanic.
On sort du hacker world avec cet article de Bert-Jaap Koost de la Tilburg University sur le âfunction creepâ. Lâarticle nâest pas rĂ©cent (2020), mais il pose des bases pour apprĂ©hender ce concept qui dĂ©signe âthe expansion of a system or technology beyond its original purposes" : quelle diffĂ©rence avec lâinnovation ? Pourquoi est-ce particuliĂšrement applicable aux domaines de souverainetĂ© des datas ? Câest un long article scientifique, donc si vous avez la flemme, lisez lâabstract et la conclusion, vous aurez lâessentielâŠ
Pour finir, ne boudons pas notre plaisir de renvoyer tous les influenceurs LinkedIn âLâIA A SUPPRIMĂ LES EMPLOIS POUR LES DEVâ au placard: une rĂ©cente Ă©tude de Yale (The Budget Lab) a examinĂ© les datas du marchĂ© du travail amĂ©ricain dans le secteur de lâinformatique et arrive Ă trois conclusions: 1. il y a bien une hausse importante et persistante des licenciements dans le secteur. 2. Mais les licenciĂ©s retrouvent rapidement du travail. 3. Aucune analyse nâarrive pour lâinstant Ă Ă©tablir une causalitĂ© concrĂšte entre massification de lâusage de lâIA et licenciements dans le secteur. Affaire Ă suivreâŠ
Si on vous a transfĂ©rĂ© cet email, nâoubliez pas de vous abonner đ.
đ Une meuf de la tech Ă connaitre
âš Angela Oduor Lungati âš
Militante de la tech, active dans les communautés et défenseuse du logiciel libre, Angela Oduor Lungati a été élue présidente du Conseil d'administration de Creative Commons en 2024.
On pourrait sâarrĂȘter lĂ , mais ca serait passer Ă cotĂ© du fait quâelle est trĂšs impliquĂ©e dans les plateformes collectives de collecte/mapping de data, membre de Humanitarian Open Source Map et directrice de Ushahidi, un logiciel libre qui agrĂšge et cartographie des donnĂ©es Ă partir de signalements fournis par les utilisateurs (crowdsourcing) pour servir ce quâelle nomme une « cartographie militante » (activist mapping): Ushahidi permet Ă des observateurs locaux de transmettre des signalements via leur tĂ©lĂ©phone mobile ou Internet, constituant ainsi une archive d'Ă©vĂ©nements assortie de donnĂ©es gĂ©ographiques et temporelles.
Elle est aussi co-fondatrice de AkiraChix avec Judith Adem Owigar dont je vous parlais dans une ancienne newsletter.
đ TMIL (this month I learned)
Le TCO ou Tail Call Optimization.
Quand on Ă©crit une fonction rĂ©cursive, comme moi jâai appris Ă les faire, on fait quelque chose comme:
function factorial(n) {
if (n <=1) return 1;
return n*factorial(n-1);
}La rĂšgle la plus importante sur laquelle on insistait, câĂ©tait âmets bien la condition dâarrĂȘt de la rĂ©cursion en premier pour ne pas te retrouver avec une boucle infinieâ. Mais dans ce cas, factorial(n) doit attendre le rĂ©sultat de factorial(n-1) pour faire sa multiplication. Et le rĂ©sultat de factorial(n-1) devrai lui-mĂȘme attendre le rĂ©sultat de factorial(factorial(n-1)), etc⊠RĂ©sultat: avec un n Ă©norme, boum, stack overflow.
Le tail call (âappel en position terminaleâ, dirait lâAcadĂ©mie Française, on les salue) permet dâĂ©viter ça: on sâassure que lâappel rĂ©cursif soit le dernier appel de la fonction, pour quâelle puisse rĂ©utiliser le mĂȘme stack frame plutĂŽt que dâen empiler plein Ă la suite.
Alors attention, ca nâest pas parce que lâappel rĂ©cursif est la derniĂšre ligne de ma factorial(n) que câest le dernier appel. Un appel est en position terminale uniquement lorsque sa valeur de retour est transmise immĂ©diatement. Comment faire ca ? En passant ce ârĂ©sultat en attenteâ dans un accumulator, en paramĂštre de la fonction:
function factorial(n, accumulator =1){
if (n <=1) return accumulator;
return factorial(n -1, n * accumulator);
}Et voilĂ problĂšme rĂ©glĂ©. Enfin, pas tout Ă fait, car si ES6 dĂ©finit le TCO, quasiment aucun moteur JS ne l'implĂ©mente rĂ©ellement (V8/Chrome/Node ne le fait pas, Firefox ne le fait plus). Donc en pratique : mĂȘme en Ă©crivant une fonction bien "tail-terminale", tu peux toujours avoir un stack overflow en Node.js ou Chrome đ€Ș
Mais bon, on a appris un truc, ca compte, non ?
ps: si vous voulez creuser le sujet, câest ce super article qui mâa aidĂ©e Ă tout comprendre
đ° Et un peu de rabâŠ
Is stacked PRs on Github ? - Le monde en 2051 selon une IA - La vie dâune requĂȘte http de 200 ms - Guide pour survivre Ă la tarification dynamique - Si les LLM Ă©taient des personnages de fiction⊠- Quelles sont les couches du âcerveauâ de Claude ?
Câest dĂ©jĂ fini ! On se retrouve le mois prochain pour la rentrĂ©e !
