<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://nocodefunctions.com/blog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nocodefunctions.com/blog/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-07-14T10:50:06+00:00</updated><id>https://nocodefunctions.com/blog/feed.xml</id><title type="html">Nocode functions - blog</title><subtitle>The journey of an academic and app developer</subtitle><entry><title type="html">L’IA dans l’enseignement supérieur : un choc comparable à Internet et au web ?</title><link href="https://nocodefunctions.com/blog/enseignement-superieur-IA-web/" rel="alternate" type="text/html" title="L’IA dans l’enseignement supérieur : un choc comparable à Internet et au web ?" /><published>2026-07-01T00:00:00+00:00</published><updated>2026-07-01T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/enseignement-superieur-ia-web</id><content type="html" xml:base="https://nocodefunctions.com/blog/enseignement-superieur-IA-web/"><![CDATA[<p>L’impact de l’IA sur l’enseignement supérieur dans les années à venir est difficile à cerner. Quels cadres de référence historiques sont utiles pour imaginer les contours de ses conséquences ?</p>

<p>Cet article de blog s’inscrit dans la suite de <a href="https://nocodefunctions.com">mes publications des 4 dernières années</a> sur les significations et les conséquences de l’IA générative, à commencer par <a href="https://nocodefunctions.com/blog/chatgpt-consequences-fr/">une note sur la portée de ChatGPT au moment de sa sortie en 2022</a>.</p>

<p><a href="https://nocodefunctions.com/blog/higher-education-AI-web/">version en anglais de ce post disponible</a></p>

<p>La question qui m’intéresse est large : quel est l’impact de l’IA sur l’enseignement supérieur, et quelles en sont les conséquences ?</p>

<p>Cet article de blog est une importante note de bas de page : j’y commence par établir si l’IA peut être comparée à d’autres chocs technologiques ayant affecté l’enseignement supérieur, et de quelle manière.</p>

<p>Parce que si l’IA est « juste comme les MOOCs : beaucoup d’attentes, mais un impact limité », alors nous avons déjà appris quelque chose d’intéressant : il ne faut pas forcément s’inquiéter de son impact massif sur l’enseignement supérieur.</p>

<p>Mais ce n’est pas la conclusion à laquelle je vais parvenir ;-)</p>

<h1 id="avant-lia-3-chocs-technologiques-notables-pour-lenseignement-supérieur">Avant l’IA, 3 chocs technologiques notables pour l’enseignement supérieur</h1>

<p>Depuis 2000, l’enseignement supérieur a connu son lot de chocs appelant à des adaptations urgentes :</p>

<h2 id="internet-et-le-web">Internet et le web</h2>

<p>Le web a rendu possible la production de contenu numérique par des individus indépendants : avec le web, chacun-e a eu une voix et un accès potentiel à une audience mondiale.
Avec YouTube, chacun pouvait enregistrer un cours et le diffuser.
Les habitudes d’apprentissage se sont diversifiées, avec des capacités d’attention plus courtes, et des pratiques devenues screen-first et mobile-first.
Une question se posait donc naturellement à l’époque : ces changements allaient-ils marginaliser les établissements d’enseignement supérieur, puisque le savoir devenait disponible gratuitement, facilement, et depuis n’importe où ?</p>

<h2 id="big-data-et-data-science">Big data et data science</h2>

<p>Le big data et la data science ont ouvert la perspective d’un apprentissage personnalisé qui remplacerait l’enseignement standardisé au niveau du groupe.
Grâce à l’analyse de vastes quantités de données personnelles, des parcours d’apprentissage individuels pourraient être identifiés.
Par des algorithmes, ou par des modèles de machine learning, les ressources pédagogiques adéquates pourraient être identifiées pour correspondre aux besoins, au rythme de progression et aux aspirations de chaque étudiant.</p>

<h2 id="moocs">MOOCs</h2>

<p>Les MOOCs promettaient de tirer parti des deux premiers éléments — le web et le big data — pour transformer l’éducation.
Le web permet de proposer des enseignements en ligne à une audience de n’importe quelle taille, tandis que le big data et la data science permettent d’individualiser les parcours d’apprentissage, en gardant l’individu et une expérience pédagogique sur mesure au centre, malgré la massification.
Quelques entreprises ont tenté de donner corps à cette promesse : Coursera, edX, Udemy, Udacity, Khan Academy, …</p>

<p>La question, à l’époque, était la suivante : les universités pourraient-elles survivre si des équivalents en ligne existaient, disponibles 24/7, délivrant des certificats d’institutions de l’Ivy League à une fraction du prix et du coût d’une université et de leurs coûteux campus ?</p>

<h1 id="conséquences-de-ces-chocs-technologiques--beaucoup-de-bruit-pour-pas-grand-chose">Conséquences de ces chocs technologiques : beaucoup de bruit pour pas grand-chose</h1>

<p>Je peins volontairement le tableau à gros traits :</p>

<h2 id="internet-et-le-web-ont-laissé-le-cœur-de-lexpérience-pédagogique-étonnamment-intact">Internet et le web ont laissé le cœur de l’expérience pédagogique étonnamment intact</h2>

<p>Quand on les compare aux effets directs et destructeurs que le web continue d’avoir sur les organisations culturelles — les print médias, l’industrie du cinéma, les librairies, … — on peut être surpris de voir à quel point l’enseignement supérieur reste stable et relativement épargné par le web et l’économie numérique.
L’expérience centrale de l’enseignement supérieur reste hors ligne : des cours donnés par un-e professeur, dans une salle de classe, à un groupe d’étudiants.</p>

<p>Dit autrement : les écoles et les universités ont été transformées par les technologies de l’ère web — 
email, learning management systems, visioconférence, systèmes de recrutement en ligne, etc. — mais ces technologies ont davantage transformé les opérations que le format de base de la classe.</p>

<p>Même les tableaux blancs interactifs — quand ils sont présents dans une salle — sont utilisés avec modération, dans mon expérience. En somme, le web a été « absorbé » comme un sujet de plus à disséquer en classe, plutôt que comme une force transformant la classe elle-même.</p>

<h2 id="le-big-data-et-la-data-science-ont-conduit-à-la-création-de-cours-et-de-programmes-spécialisés">Le big data et la data science ont conduit à la création de cours et de programmes spécialisés</h2>

<p>À partir de 2015 environ, la plupart des écoles ont commencé à développer des programmes proposant un croisement entre [<em>nom d’un domaine traditionnel</em>] x [<em>big data / data science / analytics</em>], de la même manière qu’elles avaient introduit quelques années auparavant des cours en [<em>digital</em>] x [<em>nom d’un domaine traditionnel</em>].
C’est un changement important, bien sûr ; cependant, il n’a pas modifié les missions ou les fonctions centrales des établissements d’enseignement supérieur.</p>

<p>C’est assez « classique » et décevant au regard des attentes sur le potentiel transformateur du big data : la promesse était qu’il rendrait les écoles capables de concevoir des parcours d’apprentissage individuels grâce à l’analyse de données étudiantes.
Cette promesse ne s’est pas réalisée à l’échelle imaginée. Les learning analytics et les outils adaptatifs existent, mais ils n’ont pas remplacé la structure de base, collective, de l’enseignement supérieur.</p>

<h2 id="les-plateformes-de-moocs-existent-toujours-mais-les-écoles-et-les-universités-vont-bien">Les plateformes de MOOCs existent toujours, mais les écoles et les universités vont bien</h2>

<p>Coursera, Udemy, Udacity, edX et Khan Academy sont toujours là, après de nombreuses difficultés et restructurations.
Ces initiatives n’ont aucunement remplacé les établissements d’enseignement supérieur ; elles s’adressent plutôt à des segments d’étudiants nouveaux, différents, ou parfois superposés, mais non entièrement coextensifs.
L’enseignement à distance est une caractéristique centrale des MOOCs et il est effectivement important, même vital, pour l’enseignement supérieur, mais cela a été révélé par la pandémie de COVID (2020-2022) davantage que par les MOOCs.
Les établissements traditionnels d’enseignement supérieur se sont adaptés rapidement à la pandémie en accélérant leurs investissements dans les services numériques (Zoom ayant fait son IPO en 2019 : timing heureux!)</p>

<p>J’ai vécu le choc de l’émergence du web dans l’enseignement supérieur comme étudiant, et j’ai été un participant actif aux deux autres chocs comme professeur et responsable de programme à emlyon business school à partir de 2014, initialement sous la direction de Bernard Belletante.
Belletante est un visionnaire qui avait anticipé ces chocs et s’est assuré qu’ils soient traduits dans les programmes et les services support de l’école.
Le lancement de nouveaux programmes en data science, la création d’un Makers Lab, un nouveau LMS, le décloisonnement des départements académiques, le recrutement de professeurs aux profils nouveaux, l’adaptation des salles de classe à l’enseignement hybride, etc. : l’école a bien servi ses étudiants en engageant tous ces changements en amont, plutôt qu’en réaction aux chocs.</p>

<p>Parmi ces trois chocs, le développement d’Internet et du web reste celui que je serais personnellement le plus tenté de comparer à l’IA, étant donné l’effet transformateur qu’Internet et le web ont eu sur la société en général. L’IA est appelée à avoir un impact au moins aussi important.</p>

<blockquote>
  <p>Et donc, étant donné l’impact relativement faible que le web a eu sur l’expérience centrale de l’apprentissage et de l’enseignement — comme discuté juste au-dessus —, une comparaison entre l’IA et le web pourrait être éclairante.</p>
</blockquote>

<blockquote>
  <p><strong>Peut-être que l’IA se révélera aussi importante que le web au niveau <em>sociétal</em>, mais avec des effets transformateurs sur l’enseignement supérieur lui-même qui seraient, comme pour le web, plus « faibles que ce qui avait été annoncé » ?</strong></p>
</blockquote>

<h1 id="focus-sur-le-web-comme-cadre-de-référence-historique--lia-est-elle-le-même-type-de-choc-pour-lenseignement-supérieur-">Focus sur le web comme cadre de référence historique : l’IA est-elle le même type de choc pour l’enseignement supérieur ?</h1>

<p>Posons ce que je considère comme des faits indiscutables. L’impact de l’IA est :</p>

<ul>
  <li><strong>profond</strong> : sur un nombre croissant de tâches cognitives benchmarkées, les systèmes d’IA de pointe atteignent ou dépassent désormais les niveaux de référence humains.</li>
  <li><strong>large</strong> : les usages sont très répandus à l’école, au travail, dans nos vies personnelles, dans les gouvernements et les administrations, dans les arts et la culture, dans la science, la médecine et la technologie, dans la conduite de la guerre, etc.</li>
  <li><strong>systémique</strong> : l’IA crée ou intensifie des déséquilibres environnementaux, géopolitiques et sociétaux.</li>
  <li><strong>rapide</strong> : nous sommes en juillet 2026 et ChatGPT est sorti en novembre 2022. Tout cela s’est donc produit en moins de quatre ans, et le rythme de développement accélère au lieu de ralentir.</li>
</ul>

<p>Comparons l’IA et le web : comment se situent-ils par rapport aux quatre dimensions posées ci-dessus ?</p>

<h2 id="un-choc-profond--le-web-et-lia-se-ressemblent-ils-"><u>Un choc profond</u> : le web et l’IA se ressemblent-ils ?</h2>

<p>Internet et le web étaient assurément « profonds » par nature, parce qu’ils ont ouvert un espace où de nouveaux contenus et de nouvelles expériences pouvaient être créés avec de faibles barrières en termes de coût, de distance ou d’autorité. Cela a créé une explosion de services numériques et transformé le monde hors ligne. Mais l’IA est une couche plus profonde. Elle n’étend pas simplement l’espace dans lequel les humains peuvent exprimer et développer leur créativité, comme l’a fait le web : elle étend la créativité elle-même.</p>

<p>Développons cette idée en revenant à l’enseignement supérieur : le web a offert aux étudiants un accès à de nouveaux types de ressources pour apprendre, ce qui leur a facilité le développement de la compétence correspondante. L’IA va beaucoup plus loin : elle peut générer en quelques minutes ce qu’un étudiant compétent aurait créé en plusieurs heures ou en plusieurs jours. Il ne s’agit pas d’offrir davantage d’espace pour l’expression, ni de connecter des espaces. <strong>Il s’agit de modifier fondamentalement le sens de « s’exprimer »</strong>.</p>

<p>On peut alors légitimement se demander : quelle est la valeur, pour un étudiant, d’apprendre et d’acquérir la compétence ? Cette question n’avait pas été ouverte d’une manière aussi radicale par l’émergence du web.</p>

<h2 id="un-choc-large--le-web-et-lia-se-ressemblent-ils-"><u>Un choc large</u> : le web et l’IA se ressemblent-ils ?</h2>

<p>On peut dire que le web est une technologie très « large » : il touche à tout, en particulier depuis que nous logeons une si grande partie de nos vies personnelles et professionnelles dans les smartphones que nous portons avec nous toute la journée. Mais là encore, l’IA est « large » à un niveau plus fondamental.</p>

<p>Les LLMs ont la capacité d’émuler tout ce que nous leur demandons d’être. De la même façon qu’il existe un écart conceptuel entre les appareils numériques et les mécanismes analogiques, les LLMs introduisent un nouvel écart qui les distingue des appareils numériques « traditionnels ».</p>

<p>Les LLMs restent bien sûr des logiciels. Mais le service qu’ils fournissent n’est pas assimilable à un logiciel qui se contente de suivre une série prédéfinie d’instructions (<a href="https://nocodefunctions.com/blog/chatgpt-consequences-fr/">l’argument est développé ici</a>). Ils peuvent au contraire être utilisés pour n’importe quel objectif que nous leur assignons au moment de l’usage : expliquer un concept de n’importe quel domaine à des étudiants de licence ou à des doctorants, par exemple ; aider un professeur à créer le contenu d’un cours ; ou aider des responsables de programme à passer en revue des curricula entiers.</p>

<p>L’IA est en ce sens un choc « plus large » que le web : le web a eu un impact large, mais l’IA est plus large encore parce qu’elle est une sorte de dispositif de pensée presque omnipotent.</p>

<h2 id="un-choc-systémique--le-web-et-lia-se-ressemblent-ils-"><u>Un choc systémique</u> : le web et l’IA se ressemblent-ils ?</h2>

<p>Le développement d’Internet et du web à grande échelle a eu des conséquences environnementales, géopolitiques et sociétales profondes (voir par exemple <a href="https://www.dukeupress.edu/finite-media">a</a>, <a href="https://yalebooks.yale.edu/book/9780300234176/twitter-and-tear-gas/">b</a>, <a href="https://www.hbs.edu/faculty/Pages/item.aspx?num=56791">c</a>). Pourtant, il semble que l’IA ait des effets encore plus conséquents.</p>

<p>Développer et faire fonctionner des modèles d’IA nécessite des data centers consommant de grandes quantités d’électricité, de minerais critiques et d’eau.
Les capacités de data centers prévues pour la prochaine décennie pour l’IA sont largement discutées comme pouvant poser un risque de pénurie pour d’autres usages.</p>

<p>Les modèles d’IA pourraient aussi créer du chômage chez les cols blancs, et également chez les cols bleus lorsque ces modèles d’IA sont utilisés pour augmenter des robots dotés de comportements intelligents, capables de faire mieux et moins cher que des opérateurs humains — <a href="https://www.ft.com/content/b1445598-e5e3-4530-9e82-e0155c44106b">chauffeurs de taxi</a>, <a href="https://www.ft.com/content/b4649cba-c74b-4cee-b342-0adf6c937705">ouvriers d’usine</a>, …</p>

<p>Internet et le web ne fonctionnent pas dans un cloud (nuage) littéral, et l’accès à Internet et au web n’est certainement pas gratuit. Internet repose sur une infrastructure physique de data centers, câbles, satellites, fournisseurs d’accès, autorités locales et globales… et tout cela continue d’exiger des investissements massifs et des coûts de maintenance de la part des écoles, dans ce que l’on appelait la « transformation digitale », une transformation qui semble ne jamais arriver à son terme.</p>

<p>Là encore, l’IA semble suivre la même logique, mais à une échelle supérieure. Pour rembourser leurs investissements dans l’entraînement des modèles et la construction d’infrastructures, OpenAI et quelques autres acteurs majeurs de l’IA générative ont commencé à proposer des services par abonnement allant de plans gratuits à quelques centaines de dollars par mois et par individu.
Avec l’accélération du rythme de dépense de ces grands acteurs, et avec la <a href="https://gist.github.com/seinecle/689a53bceca96147a04e93bdc5f83940">multiplication de services d’IA sophistiqués</a>, on peut s’attendre à ce que l’IA constitute un nouveau poste de dépenses significatives pour les écoles.</p>

<p><em>NB : certes, les open-weight models peuvent être acquis gratuitement et exécutés en local, mais ils tendent à être associés à leurs propres coûts spécifiques et significatifs, notamment le coût total de possession de l’infrastructure IT nécessaire pour faire tourner ces modèles et les ressources humaines chargées de l’installation, de la maintenance, de la sécurité, de l’onboarding des utilisateurs, etc.</em></p>

<p>Alors qu’Internet reste relativement ouvert à travers la plupart des frontières — avec des réserves majeures : voir la Chine, la Russie, etc. [<a href="https://editions.flammarion.com/smart/9782081307858">Martel, 2015</a>] —, les services d’IA sont créés et distribués depuis deux régions principales : les États-Unis et la Chine. La sortie puis l’arrêt rapide de Fable 5 par Anthropic en juin 2026, à la suite d’une directive du gouvernement américain demandant à Anthropic de restreindre l’accès aux citoyens non américains, donne aux dynamiques d’accès aux services d’IA de pointe une tonalité très différente de l’expansion ouverte des débuts du web.</p>

<p>L’Europe compte des acteurs crédibles dans l’IA, notamment Mistral AI pour les modèles de langage et Black Forest Labs pour l’intelligence visuelle. Mais l’écosystème de l’IA de pointe reste beaucoup plus concentré aux États-Unis et en Chine que ne l’a jamais été le web ouvert. Cela crée un risque de dépendance pour les écoles et universités européennes.</p>

<p>Les modèles d’IA augmentent aussi le potentiel de coûts et pertes dans les cyberattaques ou dans la conception d’armes biologiques (<a href="https://the-coming-wave.com/">Suleyman, 2024</a>).
Enfin, l’IA est considérée par certains comme posant un risque existentiel pour l’humanité elle-même, dans des scénarios plausibles de perte de contrôle, de mauvaise utilisation ou d’objectifs mal alignés (<a href="https://www.cbsnews.com/news/godfather-of-ai-geoffrey-hinton-ai-warning/">Hinton, 2025</a>, <a href="https://aistatement.com/work/statement-on-ai-extinction-risk">AI Statement</a>).</p>

<p>Le web, même s’il n’a pas été une innovation calme et tranquille, n’a certainement jamais atteint ce niveau de risque systémique.</p>

<h2 id="choc-rapide--le-web-et-lia-se-ressemblent-ils-">Choc rapide : le web et l’IA se ressemblent-ils ?</h2>

<p>L’adoption des technologies web a été relativement « rapide » à l’échelle historique, au sens où il a fallu environ deux à trois décennies pour que l’usage du web devienne largement répandu après l’émergence du premier navigateur web.
Par contraste, selon les <a href="https://www.reuters.com/technology/chatgpt-app-hits-1-billion-monthly-active-users-record-time-data-shows-2026-06-02/">données de Sensor Tower rapportées par Reuters</a>, l’application ChatGPT a atteint 1 milliard d’utilisateurs actifs mensuels dans le monde environ trois ans après la sortie de ChatGPT en novembre 2022.</p>

<h1 id="conclusion">Conclusion</h1>

<p>Dans l’enseignement supérieur, il y a certainement du vrai dans le Gartner Hype Cycle : lorsque des chocs technologiques se produisent, un pic d’attentes exagérées se forme rapidement ; puis la poussière retombe, et un plateau de productivité est atteint, où universités et écoles absorbent l’innovation tandis que leurs caractéristiques fondamentales, vieilles de plusieurs siècles, restent complètement intactes :</p>

<p><img width="384" height="249" alt="Gartner Hype Cycle" src="https://github.com/user-attachments/assets/ce9086db-5e53-47c1-97d2-c2ca10e4ca93" /></p>

<blockquote>
  <p>source : le <a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle">Gartner Hype Cycle</a></p>
</blockquote>

<p>Peut-être que l’IA sera de même nature.</p>

<p>Cela signifierait que dans 10 ans, en suivant le playbook de ce qui s’est produit avec les précédents chocs technologiques dans l’enseignement supérieur, on pourrait s’attendre à :</p>

<ul>
  <li>des « experts en création visuelle par IA » dans les écoles d’art,</li>
  <li>des programmes « IA pour la finance » dans les business schools,</li>
  <li>des systèmes de planification augmentés par IA utilisés couramment par les équipes chargées de planification,</li>
  <li>des avatars IA faisant le travail des conseillers admissions,</li>
</ul>

<p>… et un-e professeur humain enseignant toujours à des étudiants humains, exactement comme cela se fait depuis des siècles.</p>

<p>Mais nous avons établi plus haut que l’IA ne peut pas être comparée aux précédents chocs technologiques. Elle est plus profonde, plus large et plus rapide, et ses effets systémiques sont beaucoup plus importants.</p>

<p>Pour cette raison, et c’est là que je veux m’arrêter : <strong>nous ne pouvons pas supposer sans risque que l’IA sera aussi « inoffensive » que le web et les autres chocs technologiques ayant affecté l’enseignement supérieur au cours des dernières décennies</strong>.</p>

<p>À partir de là, nous pouvons entreprendre l’étude des contours de cet impact. Ce sera pour le prochain post !</p>

<hr />
<h1 id="à-propos-de-moi">À propos de moi</h1>

<p>Je suis enseignant-chercheur et développeur indépendant d’applications web. J’ai créé <a href="https://nocodefunctions.com">nocode functions</a>, un outil point-and-click pour explorer des textes et des réseaux. Essayez-le et dites-moi ce que vous en pensez. Vos retours m’intéressent beaucoup !</p>

<ul>
  <li><strong>Email :</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky :</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog :</strong> <a href="https://nocodefunctions.com/blog">Lire d’autres articles</a> sur le développement d’applications et l’exploration de données.</li>
</ul>]]></content><author><name></name></author><category term="ia" /><category term="enseignement supérieur" /><category term="mooc" /><category term="big data" /><category term="web" /><category term="Internet" /><summary type="html"><![CDATA[L’impact de l’IA sur l’enseignement supérieur dans les années à venir est difficile à cerner. Quels cadres de référence historiques sont utiles pour imaginer les contours de ses conséquences ? Cet article de blog s’inscrit dans la suite de mes publications des 4 dernières années sur les significations et les conséquences de l’IA générative, à commencer par une note sur la portée de ChatGPT au moment de sa sortie en 2022. version en anglais de ce post disponible La question qui m’intéresse est large : quel est l’impact de l’IA sur l’enseignement supérieur, et quelles en sont les conséquences ? Cet article de blog est une importante note de bas de page : j’y commence par établir si l’IA peut être comparée à d’autres chocs technologiques ayant affecté l’enseignement supérieur, et de quelle manière. Parce que si l’IA est « juste comme les MOOCs : beaucoup d’attentes, mais un impact limité », alors nous avons déjà appris quelque chose d’intéressant : il ne faut pas forcément s’inquiéter de son impact massif sur l’enseignement supérieur. Mais ce n’est pas la conclusion à laquelle je vais parvenir ;-) Avant l’IA, 3 chocs technologiques notables pour l’enseignement supérieur Depuis 2000, l’enseignement supérieur a connu son lot de chocs appelant à des adaptations urgentes : Internet et le web Le web a rendu possible la production de contenu numérique par des individus indépendants : avec le web, chacun-e a eu une voix et un accès potentiel à une audience mondiale. Avec YouTube, chacun pouvait enregistrer un cours et le diffuser. Les habitudes d’apprentissage se sont diversifiées, avec des capacités d’attention plus courtes, et des pratiques devenues screen-first et mobile-first. Une question se posait donc naturellement à l’époque : ces changements allaient-ils marginaliser les établissements d’enseignement supérieur, puisque le savoir devenait disponible gratuitement, facilement, et depuis n’importe où ? Big data et data science Le big data et la data science ont ouvert la perspective d’un apprentissage personnalisé qui remplacerait l’enseignement standardisé au niveau du groupe. Grâce à l’analyse de vastes quantités de données personnelles, des parcours d’apprentissage individuels pourraient être identifiés. Par des algorithmes, ou par des modèles de machine learning, les ressources pédagogiques adéquates pourraient être identifiées pour correspondre aux besoins, au rythme de progression et aux aspirations de chaque étudiant. MOOCs Les MOOCs promettaient de tirer parti des deux premiers éléments — le web et le big data — pour transformer l’éducation. Le web permet de proposer des enseignements en ligne à une audience de n’importe quelle taille, tandis que le big data et la data science permettent d’individualiser les parcours d’apprentissage, en gardant l’individu et une expérience pédagogique sur mesure au centre, malgré la massification. Quelques entreprises ont tenté de donner corps à cette promesse : Coursera, edX, Udemy, Udacity, Khan Academy, … La question, à l’époque, était la suivante : les universités pourraient-elles survivre si des équivalents en ligne existaient, disponibles 24/7, délivrant des certificats d’institutions de l’Ivy League à une fraction du prix et du coût d’une université et de leurs coûteux campus ? Conséquences de ces chocs technologiques : beaucoup de bruit pour pas grand-chose Je peins volontairement le tableau à gros traits : Internet et le web ont laissé le cœur de l’expérience pédagogique étonnamment intact Quand on les compare aux effets directs et destructeurs que le web continue d’avoir sur les organisations culturelles — les print médias, l’industrie du cinéma, les librairies, … — on peut être surpris de voir à quel point l’enseignement supérieur reste stable et relativement épargné par le web et l’économie numérique. L’expérience centrale de l’enseignement supérieur reste hors ligne : des cours donnés par un-e professeur, dans une salle de classe, à un groupe d’étudiants. Dit autrement : les écoles et les universités ont été transformées par les technologies de l’ère web — email, learning management systems, visioconférence, systèmes de recrutement en ligne, etc. — mais ces technologies ont davantage transformé les opérations que le format de base de la classe. Même les tableaux blancs interactifs — quand ils sont présents dans une salle — sont utilisés avec modération, dans mon expérience. En somme, le web a été « absorbé » comme un sujet de plus à disséquer en classe, plutôt que comme une force transformant la classe elle-même. Le big data et la data science ont conduit à la création de cours et de programmes spécialisés À partir de 2015 environ, la plupart des écoles ont commencé à développer des programmes proposant un croisement entre [nom d’un domaine traditionnel] x [big data / data science / analytics], de la même manière qu’elles avaient introduit quelques années auparavant des cours en [digital] x [nom d’un domaine traditionnel]. C’est un changement important, bien sûr ; cependant, il n’a pas modifié les missions ou les fonctions centrales des établissements d’enseignement supérieur. C’est assez « classique » et décevant au regard des attentes sur le potentiel transformateur du big data : la promesse était qu’il rendrait les écoles capables de concevoir des parcours d’apprentissage individuels grâce à l’analyse de données étudiantes. Cette promesse ne s’est pas réalisée à l’échelle imaginée. Les learning analytics et les outils adaptatifs existent, mais ils n’ont pas remplacé la structure de base, collective, de l’enseignement supérieur. Les plateformes de MOOCs existent toujours, mais les écoles et les universités vont bien Coursera, Udemy, Udacity, edX et Khan Academy sont toujours là, après de nombreuses difficultés et restructurations. Ces initiatives n’ont aucunement remplacé les établissements d’enseignement supérieur ; elles s’adressent plutôt à des segments d’étudiants nouveaux, différents, ou parfois superposés, mais non entièrement coextensifs. L’enseignement à distance est une caractéristique centrale des MOOCs et il est effectivement important, même vital, pour l’enseignement supérieur, mais cela a été révélé par la pandémie de COVID (2020-2022) davantage que par les MOOCs. Les établissements traditionnels d’enseignement supérieur se sont adaptés rapidement à la pandémie en accélérant leurs investissements dans les services numériques (Zoom ayant fait son IPO en 2019 : timing heureux!) J’ai vécu le choc de l’émergence du web dans l’enseignement supérieur comme étudiant, et j’ai été un participant actif aux deux autres chocs comme professeur et responsable de programme à emlyon business school à partir de 2014, initialement sous la direction de Bernard Belletante. Belletante est un visionnaire qui avait anticipé ces chocs et s’est assuré qu’ils soient traduits dans les programmes et les services support de l’école. Le lancement de nouveaux programmes en data science, la création d’un Makers Lab, un nouveau LMS, le décloisonnement des départements académiques, le recrutement de professeurs aux profils nouveaux, l’adaptation des salles de classe à l’enseignement hybride, etc. : l’école a bien servi ses étudiants en engageant tous ces changements en amont, plutôt qu’en réaction aux chocs. Parmi ces trois chocs, le développement d’Internet et du web reste celui que je serais personnellement le plus tenté de comparer à l’IA, étant donné l’effet transformateur qu’Internet et le web ont eu sur la société en général. L’IA est appelée à avoir un impact au moins aussi important. Et donc, étant donné l’impact relativement faible que le web a eu sur l’expérience centrale de l’apprentissage et de l’enseignement — comme discuté juste au-dessus —, une comparaison entre l’IA et le web pourrait être éclairante. Peut-être que l’IA se révélera aussi importante que le web au niveau sociétal, mais avec des effets transformateurs sur l’enseignement supérieur lui-même qui seraient, comme pour le web, plus « faibles que ce qui avait été annoncé » ? Focus sur le web comme cadre de référence historique : l’IA est-elle le même type de choc pour l’enseignement supérieur ? Posons ce que je considère comme des faits indiscutables. L’impact de l’IA est : profond : sur un nombre croissant de tâches cognitives benchmarkées, les systèmes d’IA de pointe atteignent ou dépassent désormais les niveaux de référence humains. large : les usages sont très répandus à l’école, au travail, dans nos vies personnelles, dans les gouvernements et les administrations, dans les arts et la culture, dans la science, la médecine et la technologie, dans la conduite de la guerre, etc. systémique : l’IA crée ou intensifie des déséquilibres environnementaux, géopolitiques et sociétaux. rapide : nous sommes en juillet 2026 et ChatGPT est sorti en novembre 2022. Tout cela s’est donc produit en moins de quatre ans, et le rythme de développement accélère au lieu de ralentir. Comparons l’IA et le web : comment se situent-ils par rapport aux quatre dimensions posées ci-dessus ? Un choc profond : le web et l’IA se ressemblent-ils ? Internet et le web étaient assurément « profonds » par nature, parce qu’ils ont ouvert un espace où de nouveaux contenus et de nouvelles expériences pouvaient être créés avec de faibles barrières en termes de coût, de distance ou d’autorité. Cela a créé une explosion de services numériques et transformé le monde hors ligne. Mais l’IA est une couche plus profonde. Elle n’étend pas simplement l’espace dans lequel les humains peuvent exprimer et développer leur créativité, comme l’a fait le web : elle étend la créativité elle-même. Développons cette idée en revenant à l’enseignement supérieur : le web a offert aux étudiants un accès à de nouveaux types de ressources pour apprendre, ce qui leur a facilité le développement de la compétence correspondante. L’IA va beaucoup plus loin : elle peut générer en quelques minutes ce qu’un étudiant compétent aurait créé en plusieurs heures ou en plusieurs jours. Il ne s’agit pas d’offrir davantage d’espace pour l’expression, ni de connecter des espaces. Il s’agit de modifier fondamentalement le sens de « s’exprimer ». On peut alors légitimement se demander : quelle est la valeur, pour un étudiant, d’apprendre et d’acquérir la compétence ? Cette question n’avait pas été ouverte d’une manière aussi radicale par l’émergence du web. Un choc large : le web et l’IA se ressemblent-ils ? On peut dire que le web est une technologie très « large » : il touche à tout, en particulier depuis que nous logeons une si grande partie de nos vies personnelles et professionnelles dans les smartphones que nous portons avec nous toute la journée. Mais là encore, l’IA est « large » à un niveau plus fondamental. Les LLMs ont la capacité d’émuler tout ce que nous leur demandons d’être. De la même façon qu’il existe un écart conceptuel entre les appareils numériques et les mécanismes analogiques, les LLMs introduisent un nouvel écart qui les distingue des appareils numériques « traditionnels ». Les LLMs restent bien sûr des logiciels. Mais le service qu’ils fournissent n’est pas assimilable à un logiciel qui se contente de suivre une série prédéfinie d’instructions (l’argument est développé ici). Ils peuvent au contraire être utilisés pour n’importe quel objectif que nous leur assignons au moment de l’usage : expliquer un concept de n’importe quel domaine à des étudiants de licence ou à des doctorants, par exemple ; aider un professeur à créer le contenu d’un cours ; ou aider des responsables de programme à passer en revue des curricula entiers. L’IA est en ce sens un choc « plus large » que le web : le web a eu un impact large, mais l’IA est plus large encore parce qu’elle est une sorte de dispositif de pensée presque omnipotent. Un choc systémique : le web et l’IA se ressemblent-ils ? Le développement d’Internet et du web à grande échelle a eu des conséquences environnementales, géopolitiques et sociétales profondes (voir par exemple a, b, c). Pourtant, il semble que l’IA ait des effets encore plus conséquents. Développer et faire fonctionner des modèles d’IA nécessite des data centers consommant de grandes quantités d’électricité, de minerais critiques et d’eau. Les capacités de data centers prévues pour la prochaine décennie pour l’IA sont largement discutées comme pouvant poser un risque de pénurie pour d’autres usages. Les modèles d’IA pourraient aussi créer du chômage chez les cols blancs, et également chez les cols bleus lorsque ces modèles d’IA sont utilisés pour augmenter des robots dotés de comportements intelligents, capables de faire mieux et moins cher que des opérateurs humains — chauffeurs de taxi, ouvriers d’usine, … Internet et le web ne fonctionnent pas dans un cloud (nuage) littéral, et l’accès à Internet et au web n’est certainement pas gratuit. Internet repose sur une infrastructure physique de data centers, câbles, satellites, fournisseurs d’accès, autorités locales et globales… et tout cela continue d’exiger des investissements massifs et des coûts de maintenance de la part des écoles, dans ce que l’on appelait la « transformation digitale », une transformation qui semble ne jamais arriver à son terme. Là encore, l’IA semble suivre la même logique, mais à une échelle supérieure. Pour rembourser leurs investissements dans l’entraînement des modèles et la construction d’infrastructures, OpenAI et quelques autres acteurs majeurs de l’IA générative ont commencé à proposer des services par abonnement allant de plans gratuits à quelques centaines de dollars par mois et par individu. Avec l’accélération du rythme de dépense de ces grands acteurs, et avec la multiplication de services d’IA sophistiqués, on peut s’attendre à ce que l’IA constitute un nouveau poste de dépenses significatives pour les écoles. NB : certes, les open-weight models peuvent être acquis gratuitement et exécutés en local, mais ils tendent à être associés à leurs propres coûts spécifiques et significatifs, notamment le coût total de possession de l’infrastructure IT nécessaire pour faire tourner ces modèles et les ressources humaines chargées de l’installation, de la maintenance, de la sécurité, de l’onboarding des utilisateurs, etc. Alors qu’Internet reste relativement ouvert à travers la plupart des frontières — avec des réserves majeures : voir la Chine, la Russie, etc. [Martel, 2015] —, les services d’IA sont créés et distribués depuis deux régions principales : les États-Unis et la Chine. La sortie puis l’arrêt rapide de Fable 5 par Anthropic en juin 2026, à la suite d’une directive du gouvernement américain demandant à Anthropic de restreindre l’accès aux citoyens non américains, donne aux dynamiques d’accès aux services d’IA de pointe une tonalité très différente de l’expansion ouverte des débuts du web. L’Europe compte des acteurs crédibles dans l’IA, notamment Mistral AI pour les modèles de langage et Black Forest Labs pour l’intelligence visuelle. Mais l’écosystème de l’IA de pointe reste beaucoup plus concentré aux États-Unis et en Chine que ne l’a jamais été le web ouvert. Cela crée un risque de dépendance pour les écoles et universités européennes. Les modèles d’IA augmentent aussi le potentiel de coûts et pertes dans les cyberattaques ou dans la conception d’armes biologiques (Suleyman, 2024). Enfin, l’IA est considérée par certains comme posant un risque existentiel pour l’humanité elle-même, dans des scénarios plausibles de perte de contrôle, de mauvaise utilisation ou d’objectifs mal alignés (Hinton, 2025, AI Statement). Le web, même s’il n’a pas été une innovation calme et tranquille, n’a certainement jamais atteint ce niveau de risque systémique. Choc rapide : le web et l’IA se ressemblent-ils ? L’adoption des technologies web a été relativement « rapide » à l’échelle historique, au sens où il a fallu environ deux à trois décennies pour que l’usage du web devienne largement répandu après l’émergence du premier navigateur web. Par contraste, selon les données de Sensor Tower rapportées par Reuters, l’application ChatGPT a atteint 1 milliard d’utilisateurs actifs mensuels dans le monde environ trois ans après la sortie de ChatGPT en novembre 2022. Conclusion Dans l’enseignement supérieur, il y a certainement du vrai dans le Gartner Hype Cycle : lorsque des chocs technologiques se produisent, un pic d’attentes exagérées se forme rapidement ; puis la poussière retombe, et un plateau de productivité est atteint, où universités et écoles absorbent l’innovation tandis que leurs caractéristiques fondamentales, vieilles de plusieurs siècles, restent complètement intactes : source : le Gartner Hype Cycle Peut-être que l’IA sera de même nature. Cela signifierait que dans 10 ans, en suivant le playbook de ce qui s’est produit avec les précédents chocs technologiques dans l’enseignement supérieur, on pourrait s’attendre à : des « experts en création visuelle par IA » dans les écoles d’art, des programmes « IA pour la finance » dans les business schools, des systèmes de planification augmentés par IA utilisés couramment par les équipes chargées de planification, des avatars IA faisant le travail des conseillers admissions, … et un-e professeur humain enseignant toujours à des étudiants humains, exactement comme cela se fait depuis des siècles. Mais nous avons établi plus haut que l’IA ne peut pas être comparée aux précédents chocs technologiques. Elle est plus profonde, plus large et plus rapide, et ses effets systémiques sont beaucoup plus importants. Pour cette raison, et c’est là que je veux m’arrêter : nous ne pouvons pas supposer sans risque que l’IA sera aussi « inoffensive » que le web et les autres chocs technologiques ayant affecté l’enseignement supérieur au cours des dernières décennies. À partir de là, nous pouvons entreprendre l’étude des contours de cet impact. Ce sera pour le prochain post ! À propos de moi Je suis enseignant-chercheur et développeur indépendant d’applications web. J’ai créé nocode functions, un outil point-and-click pour explorer des textes et des réseaux. Essayez-le et dites-moi ce que vous en pensez. Vos retours m’intéressent beaucoup ! Email : analysis@exploreyourdata.com Bluesky : @seinecle Blog : Lire d’autres articles sur le développement d’applications et l’exploration de données.]]></summary></entry><entry><title type="html">AI in higher ed: just like the shock of the Internet and the web?</title><link href="https://nocodefunctions.com/blog/higher-education-AI-web/" rel="alternate" type="text/html" title="AI in higher ed: just like the shock of the Internet and the web?" /><published>2026-07-01T00:00:00+00:00</published><updated>2026-07-01T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/higher-education-ai-web</id><content type="html" xml:base="https://nocodefunctions.com/blog/higher-education-AI-web/"><![CDATA[<p>AI is impacting higher education. What historical frames of reference are useful for imagining the contours of the consequences?</p>

<p>This blog post builds on the accumulation of <a href="https://nocodefunctions.com">my postings in the last 4 years</a> on the meanings and consequences of gen AI, right from <a href="https://nocodefunctions.com/blog/chatgpt-consequences/">a note on the significance of ChatGPT when it was released in 2022</a>.</p>

<p><a href="https://nocodefunctions.com/blog/enseignement-superieur-IA-web/">this blog post is also available in French</a></p>

<p>I am interested in a broad question — namely, the impact and consequences of AI on higher ed.
This blog post is a short side quest, where I first establish whether AI can be compared to previous tech shocks that impacted higher ed, and how so.
Because if AI is “just like MOOCs: vast expectations but limited impact”, then we have learned something interesting: AI is not much to bother about.
But that’s not the conclusion I’ll reach ;-)</p>

<h1 id="before-ai-3-notable-tech-shocks-to-higher-education">Before AI, 3 notable tech shocks to higher education</h1>

<p>Since 2000, higher ed has had its fair share of shocks that called for urgent adaptation:</p>

<h2 id="the-internet-and-the-web">The Internet and the web</h2>

<p>The web brought digital content production to independent individuals — everyone got a voice and access to a potential worldwide audience.
With YouTube, everyone could record a lecture and broadcast it.
Learning habits diversified with shorter attention spans, screen-first and mobile-first habits.
One question at the time was: would these changes sideline higher education organizations, since knowledge had become available for free, easily and from anywhere?</p>

<h2 id="big-data-and-data-science">Big data and data science</h2>

<p>Big data and data science opened up the prospect that personalized learning could replace standardized teaching at the group level.
Through the analysis of vast quantities of personal data, individual learning paths could be identified.
Algorithmically, or through machine learning, the adequate pedagogical resources could be identified to fit each student’s needs, progress rate and aspirations.</p>

<h2 id="moocs">MOOCs</h2>

<p>MOOCs promised to leverage the first two items (the web and big data) to transform education.
The web offers online teaching to a limitless audience, while big data and data science allow learning paths to be individualized, keeping individuals and a tailored pedagogical experience at the center despite massification.
A few companies tried to flesh out the promise: Coursera, edX, Udemy, Udacity, Khan Academy, …</p>

<p>The question at the time was: would universities be able to survive if online equivalents existed, available 24/7 and delivering certificates from Ivy League institutions at a fraction of the price and cost of a brick-and-mortar university?</p>

<h1 id="consequences-of-these-technological-shocks-much-ado-about-nothing">Consequences of these technological shocks: much ado about nothing</h1>

<p>I am deliberately painting it in broad strokes:</p>

<h2 id="the-internet-and-the-web-left-the-core-of-the-pedagogical-experience-surprisingly-untouched">The Internet and the web left the core of the pedagogical experience surprisingly untouched</h2>

<p>When compared to the direct, destructive effects the web continues to have on cultural organizations (the news media, the movie industry, bookstores, …), we can be surprised that higher education remains quite stable and unscathed by the web and the digital economy.</p>

<p>The core experience in higher education remains offline: courses taught by a professor in a classroom to a group of students.
Said differently: schools and universities have been transformed by web-era technologies (email, learning management systems, video conferencing, online recruitment systems, etc.), but these have transformed operations more than the basic classroom format.</p>

<p>Even touch-enabled smartboards (when present in a classroom) are used with moderation, in my experience. In sum, the web has been “absorbed” as yet another topic to be dissected in the classroom — rather than transforming the classroom.</p>

<h2 id="big-data-and-data-science-have-led-to-the-creation-of-specialized-courses-and-programs">Big data and data science have led to the creation of specialized courses and programs</h2>

<p>From around 2015 onward, most schools started developing programs offering a crossover between [<em>name a traditional domain</em>] x [<em>big data / data science / analytics</em>], just as they had introduced classes in [<em>digital</em>] x [<em>name a traditional domain</em>] a few years before.
This is a consequential change for sure; however, it did not modify the core missions or functions of higher education organizations.</p>

<p>This is quite “normal” and underwhelming compared to expectations about the transformative potential of big data: the promise was that it would make schools capable of designing individual learning paths thanks to data analytics on student data.
This promise has not been delivered at the scale once imagined. Learning analytics and adaptive tools exist, but they have not replaced the basic group-based structure of higher education.</p>

<h2 id="mooc-platforms-still-exist-but-schools-and-universities-are-fine">MOOC platforms still exist, but schools and universities are fine</h2>

<p>Coursera, Udemy, Udacity, edX and Khan Academy are still around, after many difficulties and restructurings.
They did not displace higher education organizations by any means, but instead address new, different, or overlapping but not fully coextensive segments of students.
Distance learning is a central feature of MOOCs and is indeed important, even vital, to higher ed, but that was revealed by the COVID pandemic (2020-2022) more than by MOOCs.
Traditional higher education organizations adapted to the pandemic swiftly by accelerating their investments in digital services (with Zoom having had its IPO in 2019 — lucky timing).</p>

<p>I experienced the shock of the emergence of the web in higher ed as a student, and I was an active participant in the two other shocks as a professor and program manager at emlyon business school from 2014 onward, initially under the leadership of Bernard Belletante.</p>

<p>Belletante is a visionary who anticipated these shocks and made sure they were translated into the programs and support services of the school.
The launch of new programs in data science, the creation of a Makers Lab, a new LMS, the de-siloing of academic departments, the recruitment of professors with new profiles, the adaptation of classrooms for hybrid learning, etc.: the school served students well by making all these changes in advance rather than in reaction to the shocks.</p>

<p>Among these three shocks, the development of the Internet and the web remains the one I would personally be most tempted to compare with AI, given the transformative effect the Internet and the web had on society in general. AI is set to have an impact at least as big.</p>

<blockquote>
  <p>And so, given the relatively weak impact the web has had on the core experience of learning and teaching (as discussed just above), a comparison between AI and the web could be illuminating.</p>
</blockquote>

<blockquote>
  <p><strong>Maybe AI will turn out to be as important as the web at the <em>societal</em> level, but with similarly “weaker than trumpeted” transformative effects on higher education itself?</strong></p>
</blockquote>

<h1 id="focus-on-the-web-as-a-historical-frame-of-reference-is-ai-the-same-kind-of-shock-to-higher-education">Focus on the web as a historical frame of reference: is AI the same kind of shock to higher education?</h1>

<p>Let’s state what I consider to be indisputable facts. The impact of AI is:</p>

<ul>
  <li><strong>profound</strong>: On a growing number of benchmarked cognitive tasks, frontier AI systems now meet or exceed human baselines.</li>
  <li><strong>broad</strong>: usage is widespread at school, in the workplace, in our personal lives, in governments and administrations, in arts and culture, in science, medicine and technology, in the conduct of war, etc.</li>
  <li><strong>systemic</strong>: AI is creating or intensifying environmental, geopolitical and societal imbalances.</li>
  <li><strong>rapid</strong>: it is July 2026 and ChatGPT was released in November 2022. So it all happened in less than four years, and the rate of development is accelerating, not slowing down.</li>
</ul>

<p>Let’s compare AI and the web: how do they compare in terms of the four dimensions laid out above?</p>

<h2 id="profound-shock-web-and-ai-alike"><u>Profound</u> shock: web and AI alike?</h2>

<p>The Internet and the web were definitely “profound” in nature, because they opened a space where new content and experiences could be created with low barriers in terms of cost, distance or authority. This created an explosion of digital services and transformed the offline world. But AI is a layer deeper. It does not merely expand the space where humans can express and develop their creativity, as the web did: it expands creativity itself.</p>

<p>Let’s develop this idea by coming back to higher education: the web has offered students access to new kinds of resources for learning, which made it easier for them to develop the corresponding skill. AI goes much deeper: AI can readily generate in a few minutes what a skilled student would have created in a few hours or days. This is not about offering more space for expression, or connecting spaces. <strong>It is about fundamentally changing the meaning of “expressing oneself”</strong>.</p>

<p>One can then legitimately wonder: what is the value, for a student, of learning and acquiring the skill? This question was not opened up in such a radical way by the emergence of the web.</p>

<h2 id="broad-shock-web-and-ai-alike"><u>Broad</u> shock: web and AI alike?</h2>

<p>The web can be said to be a very “broad” technology: it touches everything, in particular since we pack so much of our personal and professional lives into the smartphones we carry all day long. But there again, AI is broad at a more fundamental level.</p>

<p>LLMs have the capacity to emulate everything we ask them to be. Just as there is a conceptual gap between digital devices and analog mechanisms, LLMs introduce a new gap that sets them apart from “traditional” digital devices.</p>

<p>LLMs are still software, of course. But the service they provide is not akin to software that simply follows a predefined series of instructions (<a href="https://nocodefunctions.com/blog/chatgpt-consequences/">the argument is developed there</a>). Instead, they can be used for any purpose we set for them at the point of use: explaining a concept from any domain to undergrad students or to PhDs, for instance; helping a professor create the content of a class; or helping program officers review entire curricula.</p>

<p>AI is a “broader” shock than the web in this sense: the web had a broad impact, but AI is broader because it is a kind of nearly omnipotent thinking device.</p>

<h2 id="systemic-shock-web-and-ai-alike"><u>Systemic</u> shock: web and AI alike?</h2>

<p>The development of the Internet and the web at scale has had profound environmental, geopolitical and societal consequences (e.g., <a href="https://www.dukeupress.edu/finite-media">a</a>, <a href="https://yalebooks.yale.edu/book/9780300234176/twitter-and-tear-gas/">b</a>, <a href="https://www.hbs.edu/faculty/Pages/item.aspx?num=56791">c</a>). Yet it seems that AI has even more consequential effects.</p>

<p>Developing and running AI models necessitates data centers that consume large amounts of electricity, critical minerals and water.
The planned data-center capacity to be created in the next decade is widely discussed as putting other uses at risk.</p>

<p>AI models could also create unemployment among white-collar workers, and also among blue-collar workers when these AI models are used to augment robots with smart behavior, performing better and more cheaply than human operators would (<a href="https://www.ft.com/content/b1445598-e5e3-4530-9e82-e0155c44106b">taxi drivers</a>, <a href="https://www.ft.com/content/b4649cba-c74b-4cee-b342-0adf6c937705">factory workers</a>, …).</p>

<p>The Internet and the web do not run in a literal cloud, and access to the Internet and the web is certainly not free. The Internet rests on a physical infrastructure of data centers, cables, satellites, internet service providers, local and global authorities… and it all continues to require massive investments and maintenance costs by schools in what was called “digital transformation”, a transformation that never seems to come to an end.</p>

<p>Here again, AI seems to follow the same logic, but at a larger scale. To repay their investments in model training and infrastructure building, OpenAI and a few other major players in gen AI have started offering subscription services that range from free plans to a few hundred dollars per month, per individual.
With the spending rate of these big players accelerating, and with the <a href="https://gist.github.com/seinecle/689a53bceca96147a04e93bdc5f83940">multiplication of sophisticated AI services</a>, we can expect AI to open a new category of significant spending for schools.</p>

<p><em>NB: true, open-weight models can be acquired for free and run locally, but they tend to be associated with their own specific and significant costs, notably the cost of ownership of the IT infrastructure required to run these models and the human resources in charge of installation, maintenance, security, user onboarding, etc.</em></p>

<p>While the Internet remains relatively open across most borders (with major caveats: see China, Russia, etc. [<a href="https://harpercollins.co.in/press-release/smartthe-digital-century-by-frederic-martel-and-translated-by-sindhuja-veeraragavan/">Martel, 2018</a>]), AI services are created and distributed from two main regions: the United States and China. The release and rapid shutdown of Fable 5 by Anthropic in June 2026, following a US government directive that required Anthropic to restrict access for non-US citizens, makes the dynamics of access to frontier AI services feel quite different from the early open expansion of the web.</p>

<p>Europe has credible AI actors, notably Mistral AI in language models and Black Forest Labs in visual intelligence. But the frontier AI ecosystem remains much more concentrated in the United States and China than the open web ever was. This creates a dependency risk for European schools and universities.</p>

<p>AI models also increase the potential for harm in cyberattacks or in the design of bioweapons (<a href="https://the-coming-wave.com/">Suleyman, 2024</a>).
Finally, AI is considered by some to pose an existential risk to humanity itself, in plausible scenarios of loss of control, misuse, or misaligned objectives (<a href="https://www.cbsnews.com/news/godfather-of-ai-geoffrey-hinton-ai-warning/">Hinton, 2025</a>, <a href="https://aistatement.com/work/statement-on-ai-extinction-risk">AI Statement</a>).</p>

<p>The web, while not a calm and quiet innovation, certainly never amounted to this level of systemic risk.</p>

<h2 id="rapid-shock-web-and-ai-alike">Rapid shock: web and AI alike?</h2>

<p>The adoption of web technologies was relatively “rapid” on a historical timescale, in the sense that it took about two to three decades for web usage to become widespread after the emergence of the first web browser.
By contrast, according to <a href="https://www.reuters.com/technology/chatgpt-app-hits-1-billion-monthly-active-users-record-time-data-shows-2026-06-02/">Sensor Tower data reported by Reuters</a>, the ChatGPT app reached 1 billion monthly active users globally roughly three years after ChatGPT’s November 2022 release.</p>

<h1 id="conclusion">Conclusion</h1>

<p>In higher education, there is definitely some truth to the Gartner hype cycle: when tech shocks occur, a peak of inflated expectations forms quickly; then the dust settles, and a plateau of productivity is reached, where universities and schools absorb the innovation while their centuries-old defining features remain completely intact:</p>

<p><img width="384" height="249" alt="Gartner Hype Cycle" src="https://github.com/user-attachments/assets/ce9086db-5e53-47c1-97d2-c2ca10e4ca93" /></p>

<blockquote>
  <p>source: The <a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle">Gartner Hype Cycle</a></p>
</blockquote>

<p>Maybe AI will be of the same sort.</p>

<p>That would mean that in 10 years’ time, following the playbook of what happened with previous tech shocks in higher ed, we could expect:</p>

<ul>
  <li>“Experts in AI visual creation” in schools of arts,</li>
  <li>“AI for finance” programs in business schools,</li>
  <li>AI-enabled scheduling systems used routinely by planning teams,</li>
  <li>AI avatars doing the job of admissions counselors,</li>
</ul>

<p>… and a human professor still teaching human students, exactly as has happened for centuries.</p>

<p>But we established above that AI cannot be compared to previous tech shocks. It is more profound, broad and rapid, and it has vastly more systemic effects.</p>

<p>For this reason, and that is where I want to stop: <strong>we can’t safely assume that AI will be as “innocuous” as the web and other tech shocks that have impacted higher ed in recent decades</strong>.</p>

<p>From there, we can embark on the study of the contours of this impact. This is for the next post!</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="ai" /><category term="higher ed" /><category term="mooc" /><category term="big data" /><category term="web" /><category term="Internet" /><summary type="html"><![CDATA[AI is impacting higher education. What historical frames of reference are useful for imagining the contours of the consequences? This blog post builds on the accumulation of my postings in the last 4 years on the meanings and consequences of gen AI, right from a note on the significance of ChatGPT when it was released in 2022. this blog post is also available in French I am interested in a broad question — namely, the impact and consequences of AI on higher ed. This blog post is a short side quest, where I first establish whether AI can be compared to previous tech shocks that impacted higher ed, and how so. Because if AI is “just like MOOCs: vast expectations but limited impact”, then we have learned something interesting: AI is not much to bother about. But that’s not the conclusion I’ll reach ;-) Before AI, 3 notable tech shocks to higher education Since 2000, higher ed has had its fair share of shocks that called for urgent adaptation: The Internet and the web The web brought digital content production to independent individuals — everyone got a voice and access to a potential worldwide audience. With YouTube, everyone could record a lecture and broadcast it. Learning habits diversified with shorter attention spans, screen-first and mobile-first habits. One question at the time was: would these changes sideline higher education organizations, since knowledge had become available for free, easily and from anywhere? Big data and data science Big data and data science opened up the prospect that personalized learning could replace standardized teaching at the group level. Through the analysis of vast quantities of personal data, individual learning paths could be identified. Algorithmically, or through machine learning, the adequate pedagogical resources could be identified to fit each student’s needs, progress rate and aspirations. MOOCs MOOCs promised to leverage the first two items (the web and big data) to transform education. The web offers online teaching to a limitless audience, while big data and data science allow learning paths to be individualized, keeping individuals and a tailored pedagogical experience at the center despite massification. A few companies tried to flesh out the promise: Coursera, edX, Udemy, Udacity, Khan Academy, … The question at the time was: would universities be able to survive if online equivalents existed, available 24/7 and delivering certificates from Ivy League institutions at a fraction of the price and cost of a brick-and-mortar university? Consequences of these technological shocks: much ado about nothing I am deliberately painting it in broad strokes: The Internet and the web left the core of the pedagogical experience surprisingly untouched When compared to the direct, destructive effects the web continues to have on cultural organizations (the news media, the movie industry, bookstores, …), we can be surprised that higher education remains quite stable and unscathed by the web and the digital economy. The core experience in higher education remains offline: courses taught by a professor in a classroom to a group of students. Said differently: schools and universities have been transformed by web-era technologies (email, learning management systems, video conferencing, online recruitment systems, etc.), but these have transformed operations more than the basic classroom format. Even touch-enabled smartboards (when present in a classroom) are used with moderation, in my experience. In sum, the web has been “absorbed” as yet another topic to be dissected in the classroom — rather than transforming the classroom. Big data and data science have led to the creation of specialized courses and programs From around 2015 onward, most schools started developing programs offering a crossover between [name a traditional domain] x [big data / data science / analytics], just as they had introduced classes in [digital] x [name a traditional domain] a few years before. This is a consequential change for sure; however, it did not modify the core missions or functions of higher education organizations. This is quite “normal” and underwhelming compared to expectations about the transformative potential of big data: the promise was that it would make schools capable of designing individual learning paths thanks to data analytics on student data. This promise has not been delivered at the scale once imagined. Learning analytics and adaptive tools exist, but they have not replaced the basic group-based structure of higher education. MOOC platforms still exist, but schools and universities are fine Coursera, Udemy, Udacity, edX and Khan Academy are still around, after many difficulties and restructurings. They did not displace higher education organizations by any means, but instead address new, different, or overlapping but not fully coextensive segments of students. Distance learning is a central feature of MOOCs and is indeed important, even vital, to higher ed, but that was revealed by the COVID pandemic (2020-2022) more than by MOOCs. Traditional higher education organizations adapted to the pandemic swiftly by accelerating their investments in digital services (with Zoom having had its IPO in 2019 — lucky timing). I experienced the shock of the emergence of the web in higher ed as a student, and I was an active participant in the two other shocks as a professor and program manager at emlyon business school from 2014 onward, initially under the leadership of Bernard Belletante. Belletante is a visionary who anticipated these shocks and made sure they were translated into the programs and support services of the school. The launch of new programs in data science, the creation of a Makers Lab, a new LMS, the de-siloing of academic departments, the recruitment of professors with new profiles, the adaptation of classrooms for hybrid learning, etc.: the school served students well by making all these changes in advance rather than in reaction to the shocks. Among these three shocks, the development of the Internet and the web remains the one I would personally be most tempted to compare with AI, given the transformative effect the Internet and the web had on society in general. AI is set to have an impact at least as big. And so, given the relatively weak impact the web has had on the core experience of learning and teaching (as discussed just above), a comparison between AI and the web could be illuminating. Maybe AI will turn out to be as important as the web at the societal level, but with similarly “weaker than trumpeted” transformative effects on higher education itself? Focus on the web as a historical frame of reference: is AI the same kind of shock to higher education? Let’s state what I consider to be indisputable facts. The impact of AI is: profound: On a growing number of benchmarked cognitive tasks, frontier AI systems now meet or exceed human baselines. broad: usage is widespread at school, in the workplace, in our personal lives, in governments and administrations, in arts and culture, in science, medicine and technology, in the conduct of war, etc. systemic: AI is creating or intensifying environmental, geopolitical and societal imbalances. rapid: it is July 2026 and ChatGPT was released in November 2022. So it all happened in less than four years, and the rate of development is accelerating, not slowing down. Let’s compare AI and the web: how do they compare in terms of the four dimensions laid out above? Profound shock: web and AI alike? The Internet and the web were definitely “profound” in nature, because they opened a space where new content and experiences could be created with low barriers in terms of cost, distance or authority. This created an explosion of digital services and transformed the offline world. But AI is a layer deeper. It does not merely expand the space where humans can express and develop their creativity, as the web did: it expands creativity itself. Let’s develop this idea by coming back to higher education: the web has offered students access to new kinds of resources for learning, which made it easier for them to develop the corresponding skill. AI goes much deeper: AI can readily generate in a few minutes what a skilled student would have created in a few hours or days. This is not about offering more space for expression, or connecting spaces. It is about fundamentally changing the meaning of “expressing oneself”. One can then legitimately wonder: what is the value, for a student, of learning and acquiring the skill? This question was not opened up in such a radical way by the emergence of the web. Broad shock: web and AI alike? The web can be said to be a very “broad” technology: it touches everything, in particular since we pack so much of our personal and professional lives into the smartphones we carry all day long. But there again, AI is broad at a more fundamental level. LLMs have the capacity to emulate everything we ask them to be. Just as there is a conceptual gap between digital devices and analog mechanisms, LLMs introduce a new gap that sets them apart from “traditional” digital devices. LLMs are still software, of course. But the service they provide is not akin to software that simply follows a predefined series of instructions (the argument is developed there). Instead, they can be used for any purpose we set for them at the point of use: explaining a concept from any domain to undergrad students or to PhDs, for instance; helping a professor create the content of a class; or helping program officers review entire curricula. AI is a “broader” shock than the web in this sense: the web had a broad impact, but AI is broader because it is a kind of nearly omnipotent thinking device. Systemic shock: web and AI alike? The development of the Internet and the web at scale has had profound environmental, geopolitical and societal consequences (e.g., a, b, c). Yet it seems that AI has even more consequential effects. Developing and running AI models necessitates data centers that consume large amounts of electricity, critical minerals and water. The planned data-center capacity to be created in the next decade is widely discussed as putting other uses at risk. AI models could also create unemployment among white-collar workers, and also among blue-collar workers when these AI models are used to augment robots with smart behavior, performing better and more cheaply than human operators would (taxi drivers, factory workers, …). The Internet and the web do not run in a literal cloud, and access to the Internet and the web is certainly not free. The Internet rests on a physical infrastructure of data centers, cables, satellites, internet service providers, local and global authorities… and it all continues to require massive investments and maintenance costs by schools in what was called “digital transformation”, a transformation that never seems to come to an end. Here again, AI seems to follow the same logic, but at a larger scale. To repay their investments in model training and infrastructure building, OpenAI and a few other major players in gen AI have started offering subscription services that range from free plans to a few hundred dollars per month, per individual. With the spending rate of these big players accelerating, and with the multiplication of sophisticated AI services, we can expect AI to open a new category of significant spending for schools. NB: true, open-weight models can be acquired for free and run locally, but they tend to be associated with their own specific and significant costs, notably the cost of ownership of the IT infrastructure required to run these models and the human resources in charge of installation, maintenance, security, user onboarding, etc. While the Internet remains relatively open across most borders (with major caveats: see China, Russia, etc. [Martel, 2018]), AI services are created and distributed from two main regions: the United States and China. The release and rapid shutdown of Fable 5 by Anthropic in June 2026, following a US government directive that required Anthropic to restrict access for non-US citizens, makes the dynamics of access to frontier AI services feel quite different from the early open expansion of the web. Europe has credible AI actors, notably Mistral AI in language models and Black Forest Labs in visual intelligence. But the frontier AI ecosystem remains much more concentrated in the United States and China than the open web ever was. This creates a dependency risk for European schools and universities. AI models also increase the potential for harm in cyberattacks or in the design of bioweapons (Suleyman, 2024). Finally, AI is considered by some to pose an existential risk to humanity itself, in plausible scenarios of loss of control, misuse, or misaligned objectives (Hinton, 2025, AI Statement). The web, while not a calm and quiet innovation, certainly never amounted to this level of systemic risk. Rapid shock: web and AI alike? The adoption of web technologies was relatively “rapid” on a historical timescale, in the sense that it took about two to three decades for web usage to become widespread after the emergence of the first web browser. By contrast, according to Sensor Tower data reported by Reuters, the ChatGPT app reached 1 billion monthly active users globally roughly three years after ChatGPT’s November 2022 release. Conclusion In higher education, there is definitely some truth to the Gartner hype cycle: when tech shocks occur, a peak of inflated expectations forms quickly; then the dust settles, and a plateau of productivity is reached, where universities and schools absorb the innovation while their centuries-old defining features remain completely intact: source: The Gartner Hype Cycle Maybe AI will be of the same sort. That would mean that in 10 years’ time, following the playbook of what happened with previous tech shocks in higher ed, we could expect: “Experts in AI visual creation” in schools of arts, “AI for finance” programs in business schools, AI-enabled scheduling systems used routinely by planning teams, AI avatars doing the job of admissions counselors, … and a human professor still teaching human students, exactly as has happened for centuries. But we established above that AI cannot be compared to previous tech shocks. It is more profound, broad and rapid, and it has vastly more systemic effects. For this reason, and that is where I want to stop: we can’t safely assume that AI will be as “innocuous” as the web and other tech shocks that have impacted higher ed in recent decades. From there, we can embark on the study of the contours of this impact. This is for the next post! About Me I’m an academic and independent web app developer. I created nocode functions, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">Trois manières de coder avec des agents IA</title><link href="https://nocodefunctions.com/blog/coder-avec-agents-IA/" rel="alternate" type="text/html" title="Trois manières de coder avec des agents IA" /><published>2026-05-29T00:00:00+00:00</published><updated>2026-05-29T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/agents-IA-pour-coder</id><content type="html" xml:base="https://nocodefunctions.com/blog/coder-avec-agents-IA/"><![CDATA[<p>Une définition raisonnable d’un « agent IA », au moins dans le contexte du codage agentique, pourrait être la suivante :</p>

<ul>
  <li>un processus logiciel doté des capacités d’un LLM</li>
  <li>lancé avec des instructions données au départ pour accomplir une tâche</li>
  <li>qui s’exécute de manière autonome (pas de session interactive avec un humain), pendant une période significative</li>
  <li>avec un comportement non déterministe : l’agent s’adapte aux circonstances, si possible sans s’écarter des instructions qu’il a reçues</li>
</ul>

<p>Ces processus logiciels (agents) peuvent être lancés en parallèle afin d’obtenir des résultats plus rapidement ou d’accomplir un plus grand nombre de tâches : le même agent lancé en plusieurs exemplaires, ou bien une variété d’agents lancés en même temps.</p>

<p>Pour accomplir une tâche, un processus peut être amené à lancer d’autres processus, des sous-processus, etc.
Cela évoque des images de cascades, d’armées ou d’essaims d’agents qui se coordonnent de manière décentralisée (sans humain dans la boucle) pour accomplir une tâche.</p>

<p>Pourtant, en pratique, le terme « agents » est souvent utilisé sans rapport avec la définition ci-dessus.
Peut-être pour paraître à jour et sophistiqué, « agents » peut en réalité désigner une simple conversation ChatGPT dans laquelle l’utilisateur a écrit, par exemple : « tu agis comme un <strong>agent</strong> fiscal professionnel et, dans ce qui suit, je veux que tu m’aides à remplir ma déclaration d’impôts » 🤷‍♂️.</p>

<p>Pieter Levels, qui a tendance à parler franchement de code et d’IA, partageait ce sentiment à l’été 2025 :</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">If I hear people talk about &quot;AI agents&quot; these days it&#39;s generally a red flag and I know they&#39;re non-technical ppl reading AI news but not actually shipping anything<br /><br />Not cause I don&#39;t believe in AI agents but it&#39;s such a marketing term with no real meaning at this point</p>&mdash; @levelsio (@levelsio) <a href="https://x.com/levelsio/status/1953125500492128766?ref_src=twsrc%5Etfw">August 6, 2025</a></blockquote>

<p><strong>Nous approchons maintenant de l’été 2026 : les choses ont-elles beaucoup changé ?</strong></p>

<p>Dans ma pratique du code, j’ai exploré plusieurs façons de faire du codage agentique qui correspondent vraiment à la définition proposée ci-dessus, plutôt que de simplement en donner l’apparence.</p>

<p>Voici les 3 approches que j’ai testées :</p>

<h1 id="approche-1--lancer-plusieurs-interfaces-en-ligne-de-commande">Approche 1 : lancer plusieurs interfaces en ligne de commande</h1>

<p>Je pratique cette approche depuis quelques mois :</p>

<ul>
  <li>ouvrir une session SSH vers mon serveur</li>
  <li>lancer <a href="https://developers.openai.com/codex/cli">Codex CLI</a> dans cette session</li>
  <li>demander à GPT d’accomplir une tâche, pour cela j’écris simplement un prompt qui décrit cette tâche</li>
  <li>ouvrir une deuxième session SSH vers mon serveur</li>
  <li>lancer <a href="https://developers.openai.com/codex/cli">Codex CLI</a> dans cette session</li>
  <li>demander à GPT d’accomplir une deuxième tâche, pour cela j’écris simplement un prompt qui décrit cette tâche</li>
  <li>et cette méthode peut se répèter à l’infini.</li>
</ul>

<p>Honnêtement, cela fonctionne assez bien.
C’est extrêmement low-tech, comme vous pouvez le voir.
Cela signifie aussi que vous pouvez lancer <a href="https://claude.com/fr/product/claude-code">Claude Code</a> dans une session, Codex CLI dans une autre, <a href="https://geminicli.com/">Gemini CLI</a> dans une troisième… et donc répartir votre consommation de tokens entre plusieurs fournisseurs d’IA en parallèle, ce qui fait qu’on atteint moins vite sa limite de budget en tokens chez un fournisseur donné.</p>

<h1 id="approche-2--lancer-des-cli-ia-en-mode-headless">Approche 2 : lancer des CLI IA en mode headless</h1>
<p>J’ai utilisé cette deuxième approche pour écrire des crawlers pour plus de 200 pages web différentes.
Évidemment, avec 200 crawlers à créer, cela aurait été beaucoup trop ennuyeux à faire avec l’approche 1 décrite juste au-dessus.
ChatGPT m’a guidé tout au long de la mise en œuvre de cette nouvelle approche. La logique de base est la suivante :</p>

<ul>
  <li>un fichier JSON contenant les paramètres des 200 sites web (URLs et quelques autres détails).</li>
  <li>un script Bash (appelons-le « A ») capable de lancer un LLM via une interface en ligne de commande (une IA en CLI comme faisait l’approche 1), <em>en mode headless</em>. Headless signifie que le LLM, une fois lancé avec le prompt que vous lui avez donné, s’exécutera jusqu’à ce qu’il ait terminé la tâche, sans s’interrompre pour vous demander une permission, un retour ou une suite. Pour cela, j’utilise le <a href="https://developers.openai.com/codex/noninteractive"><code class="language-plaintext highlighter-rouge">flag exec</code> de Codex CLI qui déclenche le mode headless</a>. Le script A contient également le prompt qui sera donné au LLM au moment de son lancement. Le prompt est un morceau de texte avec des placeholders à des endroits clés, qui sont remplacés par les informations réelles liées au site web spécifique à crawler. Le prompt demande essentiellement au LLM d’écrire un crawler pour ce site web.</li>
  <li>un autre script (le script « B ») qui prend 20 sites web dans le fichier JSON et exécute le script A pour chacun d’eux. Les placeholders du script A sont remplacés par les informations du site web à crawler, ce qui signifie que le crawler créé par le LLM sera spécifique à ce site web.</li>
  <li>je lance le script B, je vérifie qu’il fonctionne correctement, puis je le relance avec 20 autres sites web, etc., jusqu’à avoir traité 200 sites web de cette manière.</li>
</ul>

<p>Je vous montre le script A (script écrit par ChatGPT) pour illustrer en quoi cette approche 2 implique bien plus de complexité que l’approche 1 :</p>

<p><a href="https://github.com/seinecle/blog/blob/main/assets/data/script-A">ouvrir le script A</a></p>

<p>Cette approche fonctionne bien.
Ce n’est pas aussi simple que « lancer le script B et obtenir 200 crawlers écrits en une heure », mais on n’en est pas si loin.</p>

<p>Si vous avez la patience de lire un peu le script A ci-dessus, vous verrez que le LLM a aussi pour tâche d’écrire des tests unitaires pour chaque crawler qu’il crée !
Comme on peut s’y attendre, ces tests ne passent pas toujours, ce qui ralentit un peu les choses.
Mais c’est pour une bonne raison : faire le travail supplémentaire nécessaire pour obtenir des tests qui passent signifie que les crawlers seront plus fiables.</p>

<p>Avec cette approche, je m’attends à avoir mes 200 crawlers prêts dans les prochains jours, avec un chemin assez simple pour monter ensuite à plusieurs centaines de plus.</p>

<h1 id="approche-3--demander-à-un-llm-de-créer-et-de-gérer-lui-même-ses-sous-agents">Approche 3 : demander à un LLM de créer et de gérer lui-même ses sous-agents</h1>

<p>L’approche 2 était vraiment très orientée Bash et Unix : ca demande du travail de maintenance de scripts.
Pourquoi ne pas demander à un LLM de lancer lui-même des agents, en suivant mes instructions ?
C’est ce que toutes les solutions promettent aujourd’hui :</p>

<ul>
  <li>Cursor vous invite à <a href="https://web.archive.org/web/20260528201253/https://cursor.com/product">“déléguer l’implémentation pour se concentrer sur la direction de haut niveau”</a></li>
  <li>Codex propose des <a href="https://web.archive.org/web/20260524042439/https://developers.openai.com/codex/subagents">“sub-agents”</a> que vous pouvez orchestrer</li>
  <li>Antigravity de Google propose d’<a href="https://perma.cc/4S83-LRM3">“orchestrer de multiples agents autonomes travaillant en parallèle sur des projets indépendants”</a></li>
  <li>Claude Code peut créer des <a href="https://web.archive.org/web/20260528082943/https://code.claude.com/docs/en/sub-agents">“sous-agents personnalisés”</a> pour vous.</li>
</ul>

<p>Mon avis : probablement, mais pas aujourd’hui.
Demander à un agent de déléguer à des sous-agents signifie que vous êtes à deux niveaux de distance du travail réel.
Les incohérences, les mauvais choix, les erreurs critiques … seront plus difficiles à repérer.
L’interruption puis la reprise du travail d’un sous-agent donné ne sont pas simples.
Et vous devenez dépendant d’une solution : mon IA de prédilection ces temps-ci est GPT 5.5, et elle serait hors limites si je choisissais une solution agentique qui n’est pas développée par son entreprise, OpenAI.</p>

<blockquote>
  <p>Pour ces raisons, et jusqu’à preuve du contraire, je vais m’en tenir à l’approche 2 (et même à l’approche 1 dans les cas simples) décrite ci-dessus.</p>
</blockquote>

<h1 id="avons-nous-vraiment-besoin-dagents-">Avons-nous vraiment besoin d’agents ?</h1>

<p>La plupart du temps, <em>non</em>.
Voici <a href="https://www.linkedin.com/in/emollick/">Ethan Mollick</a> en train de créer une application web complète et fonctionnelle avec un seul prompt et 4 relances, pour un total de moins de 20 lignes :</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">How lucky are you to have been born when and where you are?<br /><br />Had Opus 4.8 in Claude Code whip up a new visualization of all humans who ever lived. In addition to being neat, it is an interesting test of combining research, code, design and stats for an AI. <a href="https://t.co/ayNEdhSLy3">https://t.co/ayNEdhSLy3</a> <a href="https://t.co/Ny2NmICZsK">pic.twitter.com/Ny2NmICZsK</a></p>&mdash; Ethan Mollick (@emollick) <a href="https://x.com/emollick/status/2060165879908749490?ref_src=twsrc%5Etfw">May 29, 2026</a></blockquote>

<p>Il n’a pas eu besoin de développer une approche agentique, les prompts ont suffit.</p>

<p>Un autre exemple est le site développé par ma fille : une <a href="https://www.daebias.com/">plateforme e-commerce complète</a>.
Développée sans technologie sophistiquée ni échafaudage agentique. Juste des prompts (et beaucoup de travail).</p>

<p>Vous avez probablement aussi remarqué que, dans les conversations avec des LLMs où nous leur demandons de chercher de l’information, ces LLMs peuvent choisir de lancer des recherches sur différents sites web, chaque recherche étant effectuée par son propre agent.
Cela les aide à accélérer leur recherche et à couvrir davantage de terrain en réponse à votre demande.</p>

<p>Je dirais donc que, dans la plupart des cas, nous n’avons pas besoin d’agents, même pour des tâches complexes, parce que les LLMs fonctionnent très bien sans eux.
Et si des agents sont utiles, alors les LLMs lancent leurs propres agents et les gèrent sous le capot.</p>

<h1 id="cerise-sur-le-gâteau--les-agents-qui-se-marchent-sur-les-pieds">Cerise sur le gâteau : les agents qui se marchent sur les pieds</h1>

<p>Le sujet est peu glamour et ce billet est déjà trop long, donc je serai bref : plusieurs agents qui écrivent simultanément dans votre codebase vont se marcher sur les pieds.
S’ils modifient le même fichier, il y a de fortes chances que le fichier résultant soit un désastre.</p>

<p>Le remède consiste à faire travailler chaque agent sur une <a href="https://www.w3schools.com/GIT/git_branch.asp">branche git</a> différente, puis à procéder à un <em>merge</em> de ces branches dans la branche principale une fois que tous les agents ont terminé.
C’est aussi un bazar : que se passe-t-il si le <em>merge</em> échoue ? (et bien sûr, il échouera).
J’ai essayé cette approche, et elle est fastidieuse, crispante, et vous donne vite envie d’abandonner l’approche multi-agent.</p>

<p>Alors comment ai-je fait, dans l’approche 2, pour créer des dizaines de crawlers sans que les agents ne se rentrent dedans ?</p>

<p>J’ai d’abord mené un important travail préparatoire sur un seul crawler, en m’assurant qu’il fonctionnait en parfaite isolation par rapport aux autres.
Ce n’est pas une tâche facile quand on veut malgré tout suivre le principe DRY (<em>don’t repeat yourself</em>) en programmation.
Ce n’est qu’à la condition que chaque crawler soit parfaitement isolé que vous pouvez faire travailler simultanément des dizaines d’agents sur des fichiers source sans créer de désastre.</p>

<p>Si vous remontez dans cet article et regardez le script Bash que j’ai partagé, vous verrez que ChatGPT m’a également conseillé sur ce point, en ajoutant des blocages stricts dans le prompt, de sorte que chaque agent se voit explicitement interdire de toucher aux fichiers qui ne sont pas dans le périmètre de son travail.</p>

<h1 id="prochaines-étapes">Prochaines étapes</h1>

<p>Passer de dizaines de crawlers écrits avec l’approche 2 à des centaines de crawlers.
Puis les exécuter.
Devenir suffisamment compétent dans ce setup multi-agent « fait maison » pour pouvoir le reproduire ailleurs, quand et si j’en ai besoin.</p>

<h1 id="et-vous-">Et vous ?</h1>

<p>Quel setup multi-agent fonctionne pour vous ? Ou bien restez-vous sans agent ?</p>

<hr />

<h1 id="à-propos-de-moi">À propos de moi</h1>

<p>Je suis universitaire et développeur indépendant d’applications web. J’ai créé <a href="https://nocodefunctions.com">nocode functions</a>, un outil point-and-click pour explorer des textes et des réseaux. Essayez-le et dites-moi ce que vous en pensez. Vos retours m’intéressent beaucoup !</p>

<ul>
  <li><strong>Email :</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky :</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog :</strong> <a href="https://nocodefunctions.com/blog">Lire d’autres articles</a> sur le développement d’applications et l’exploration de données.</li>
</ul>]]></content><author><name></name></author><category term="ia" /><category term="productivité" /><category term="coding" /><category term="développement" /><category term="agentic" /><category term="agentique" /><summary type="html"><![CDATA[Une définition raisonnable d’un « agent IA », au moins dans le contexte du codage agentique, pourrait être la suivante : un processus logiciel doté des capacités d’un LLM lancé avec des instructions données au départ pour accomplir une tâche qui s’exécute de manière autonome (pas de session interactive avec un humain), pendant une période significative avec un comportement non déterministe : l’agent s’adapte aux circonstances, si possible sans s’écarter des instructions qu’il a reçues Ces processus logiciels (agents) peuvent être lancés en parallèle afin d’obtenir des résultats plus rapidement ou d’accomplir un plus grand nombre de tâches : le même agent lancé en plusieurs exemplaires, ou bien une variété d’agents lancés en même temps. Pour accomplir une tâche, un processus peut être amené à lancer d’autres processus, des sous-processus, etc. Cela évoque des images de cascades, d’armées ou d’essaims d’agents qui se coordonnent de manière décentralisée (sans humain dans la boucle) pour accomplir une tâche. Pourtant, en pratique, le terme « agents » est souvent utilisé sans rapport avec la définition ci-dessus. Peut-être pour paraître à jour et sophistiqué, « agents » peut en réalité désigner une simple conversation ChatGPT dans laquelle l’utilisateur a écrit, par exemple : « tu agis comme un agent fiscal professionnel et, dans ce qui suit, je veux que tu m’aides à remplir ma déclaration d’impôts » 🤷‍♂️. Pieter Levels, qui a tendance à parler franchement de code et d’IA, partageait ce sentiment à l’été 2025 : If I hear people talk about &quot;AI agents&quot; these days it&#39;s generally a red flag and I know they&#39;re non-technical ppl reading AI news but not actually shipping anythingNot cause I don&#39;t believe in AI agents but it&#39;s such a marketing term with no real meaning at this point&mdash; @levelsio (@levelsio) August 6, 2025 Nous approchons maintenant de l’été 2026 : les choses ont-elles beaucoup changé ? Dans ma pratique du code, j’ai exploré plusieurs façons de faire du codage agentique qui correspondent vraiment à la définition proposée ci-dessus, plutôt que de simplement en donner l’apparence. Voici les 3 approches que j’ai testées : Approche 1 : lancer plusieurs interfaces en ligne de commande Je pratique cette approche depuis quelques mois : ouvrir une session SSH vers mon serveur lancer Codex CLI dans cette session demander à GPT d’accomplir une tâche, pour cela j’écris simplement un prompt qui décrit cette tâche ouvrir une deuxième session SSH vers mon serveur lancer Codex CLI dans cette session demander à GPT d’accomplir une deuxième tâche, pour cela j’écris simplement un prompt qui décrit cette tâche et cette méthode peut se répèter à l’infini. Honnêtement, cela fonctionne assez bien. C’est extrêmement low-tech, comme vous pouvez le voir. Cela signifie aussi que vous pouvez lancer Claude Code dans une session, Codex CLI dans une autre, Gemini CLI dans une troisième… et donc répartir votre consommation de tokens entre plusieurs fournisseurs d’IA en parallèle, ce qui fait qu’on atteint moins vite sa limite de budget en tokens chez un fournisseur donné. Approche 2 : lancer des CLI IA en mode headless J’ai utilisé cette deuxième approche pour écrire des crawlers pour plus de 200 pages web différentes. Évidemment, avec 200 crawlers à créer, cela aurait été beaucoup trop ennuyeux à faire avec l’approche 1 décrite juste au-dessus. ChatGPT m’a guidé tout au long de la mise en œuvre de cette nouvelle approche. La logique de base est la suivante : un fichier JSON contenant les paramètres des 200 sites web (URLs et quelques autres détails). un script Bash (appelons-le « A ») capable de lancer un LLM via une interface en ligne de commande (une IA en CLI comme faisait l’approche 1), en mode headless. Headless signifie que le LLM, une fois lancé avec le prompt que vous lui avez donné, s’exécutera jusqu’à ce qu’il ait terminé la tâche, sans s’interrompre pour vous demander une permission, un retour ou une suite. Pour cela, j’utilise le flag exec de Codex CLI qui déclenche le mode headless. Le script A contient également le prompt qui sera donné au LLM au moment de son lancement. Le prompt est un morceau de texte avec des placeholders à des endroits clés, qui sont remplacés par les informations réelles liées au site web spécifique à crawler. Le prompt demande essentiellement au LLM d’écrire un crawler pour ce site web. un autre script (le script « B ») qui prend 20 sites web dans le fichier JSON et exécute le script A pour chacun d’eux. Les placeholders du script A sont remplacés par les informations du site web à crawler, ce qui signifie que le crawler créé par le LLM sera spécifique à ce site web. je lance le script B, je vérifie qu’il fonctionne correctement, puis je le relance avec 20 autres sites web, etc., jusqu’à avoir traité 200 sites web de cette manière. Je vous montre le script A (script écrit par ChatGPT) pour illustrer en quoi cette approche 2 implique bien plus de complexité que l’approche 1 : ouvrir le script A Cette approche fonctionne bien. Ce n’est pas aussi simple que « lancer le script B et obtenir 200 crawlers écrits en une heure », mais on n’en est pas si loin. Si vous avez la patience de lire un peu le script A ci-dessus, vous verrez que le LLM a aussi pour tâche d’écrire des tests unitaires pour chaque crawler qu’il crée ! Comme on peut s’y attendre, ces tests ne passent pas toujours, ce qui ralentit un peu les choses. Mais c’est pour une bonne raison : faire le travail supplémentaire nécessaire pour obtenir des tests qui passent signifie que les crawlers seront plus fiables. Avec cette approche, je m’attends à avoir mes 200 crawlers prêts dans les prochains jours, avec un chemin assez simple pour monter ensuite à plusieurs centaines de plus. Approche 3 : demander à un LLM de créer et de gérer lui-même ses sous-agents L’approche 2 était vraiment très orientée Bash et Unix : ca demande du travail de maintenance de scripts. Pourquoi ne pas demander à un LLM de lancer lui-même des agents, en suivant mes instructions ? C’est ce que toutes les solutions promettent aujourd’hui : Cursor vous invite à “déléguer l’implémentation pour se concentrer sur la direction de haut niveau” Codex propose des “sub-agents” que vous pouvez orchestrer Antigravity de Google propose d’“orchestrer de multiples agents autonomes travaillant en parallèle sur des projets indépendants” Claude Code peut créer des “sous-agents personnalisés” pour vous. Mon avis : probablement, mais pas aujourd’hui. Demander à un agent de déléguer à des sous-agents signifie que vous êtes à deux niveaux de distance du travail réel. Les incohérences, les mauvais choix, les erreurs critiques … seront plus difficiles à repérer. L’interruption puis la reprise du travail d’un sous-agent donné ne sont pas simples. Et vous devenez dépendant d’une solution : mon IA de prédilection ces temps-ci est GPT 5.5, et elle serait hors limites si je choisissais une solution agentique qui n’est pas développée par son entreprise, OpenAI. Pour ces raisons, et jusqu’à preuve du contraire, je vais m’en tenir à l’approche 2 (et même à l’approche 1 dans les cas simples) décrite ci-dessus. Avons-nous vraiment besoin d’agents ? La plupart du temps, non. Voici Ethan Mollick en train de créer une application web complète et fonctionnelle avec un seul prompt et 4 relances, pour un total de moins de 20 lignes : How lucky are you to have been born when and where you are?Had Opus 4.8 in Claude Code whip up a new visualization of all humans who ever lived. In addition to being neat, it is an interesting test of combining research, code, design and stats for an AI. https://t.co/ayNEdhSLy3 pic.twitter.com/Ny2NmICZsK&mdash; Ethan Mollick (@emollick) May 29, 2026 Il n’a pas eu besoin de développer une approche agentique, les prompts ont suffit. Un autre exemple est le site développé par ma fille : une plateforme e-commerce complète. Développée sans technologie sophistiquée ni échafaudage agentique. Juste des prompts (et beaucoup de travail). Vous avez probablement aussi remarqué que, dans les conversations avec des LLMs où nous leur demandons de chercher de l’information, ces LLMs peuvent choisir de lancer des recherches sur différents sites web, chaque recherche étant effectuée par son propre agent. Cela les aide à accélérer leur recherche et à couvrir davantage de terrain en réponse à votre demande. Je dirais donc que, dans la plupart des cas, nous n’avons pas besoin d’agents, même pour des tâches complexes, parce que les LLMs fonctionnent très bien sans eux. Et si des agents sont utiles, alors les LLMs lancent leurs propres agents et les gèrent sous le capot. Cerise sur le gâteau : les agents qui se marchent sur les pieds Le sujet est peu glamour et ce billet est déjà trop long, donc je serai bref : plusieurs agents qui écrivent simultanément dans votre codebase vont se marcher sur les pieds. S’ils modifient le même fichier, il y a de fortes chances que le fichier résultant soit un désastre. Le remède consiste à faire travailler chaque agent sur une branche git différente, puis à procéder à un merge de ces branches dans la branche principale une fois que tous les agents ont terminé. C’est aussi un bazar : que se passe-t-il si le merge échoue ? (et bien sûr, il échouera). J’ai essayé cette approche, et elle est fastidieuse, crispante, et vous donne vite envie d’abandonner l’approche multi-agent. Alors comment ai-je fait, dans l’approche 2, pour créer des dizaines de crawlers sans que les agents ne se rentrent dedans ? J’ai d’abord mené un important travail préparatoire sur un seul crawler, en m’assurant qu’il fonctionnait en parfaite isolation par rapport aux autres. Ce n’est pas une tâche facile quand on veut malgré tout suivre le principe DRY (don’t repeat yourself) en programmation. Ce n’est qu’à la condition que chaque crawler soit parfaitement isolé que vous pouvez faire travailler simultanément des dizaines d’agents sur des fichiers source sans créer de désastre. Si vous remontez dans cet article et regardez le script Bash que j’ai partagé, vous verrez que ChatGPT m’a également conseillé sur ce point, en ajoutant des blocages stricts dans le prompt, de sorte que chaque agent se voit explicitement interdire de toucher aux fichiers qui ne sont pas dans le périmètre de son travail. Prochaines étapes Passer de dizaines de crawlers écrits avec l’approche 2 à des centaines de crawlers. Puis les exécuter. Devenir suffisamment compétent dans ce setup multi-agent « fait maison » pour pouvoir le reproduire ailleurs, quand et si j’en ai besoin. Et vous ? Quel setup multi-agent fonctionne pour vous ? Ou bien restez-vous sans agent ? À propos de moi Je suis universitaire et développeur indépendant d’applications web. J’ai créé nocode functions, un outil point-and-click pour explorer des textes et des réseaux. Essayez-le et dites-moi ce que vous en pensez. Vos retours m’intéressent beaucoup ! Email : analysis@exploreyourdata.com Bluesky : @seinecle Blog : Lire d’autres articles sur le développement d’applications et l’exploration de données.]]></summary></entry><entry><title type="html">Three flavors of coding with AI agents</title><link href="https://nocodefunctions.com/blog/three-flavors-agentic-coding/" rel="alternate" type="text/html" title="Three flavors of coding with AI agents" /><published>2026-05-29T00:00:00+00:00</published><updated>2026-05-29T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/flavors-agentic</id><content type="html" xml:base="https://nocodefunctions.com/blog/three-flavors-agentic-coding/"><![CDATA[<p>A reasonable definition of an “AI agent”, at least in the context of agentic coding, could be:</p>

<ul>
  <li>a software process endowed with the capabilities of an LLM</li>
  <li>launched with instructions given at the start to accomplish a task</li>
  <li>which runs autonomously (no interactive session with a human), for a significant period of time</li>
  <li>with non-deterministic behavior: the agent adapts to the circumstances, hopefully without deviating from the instructions it received</li>
</ul>

<p>These software processes (agents) can be launched in parallel to achieve faster results or to accomplish a larger number of tasks:  same process launched in multiple copies, or a variety of processes launched at once.</p>

<p>Not a necessity but logical next step: to accomplish a task, a process can be led to launch other processes, subprocesses, etc. This evokes images of cascades, armies, or swarms of agents coordinating in a decentralized manner (no human in the loop) to accomplish a task.</p>

<p>Yet, in practice, “agents” is often used with no relation to the definition above. Possibly to sound up-to-date and sophisticated, “agents” might in reality designate a ChatGPT conversation where the user prompted “you are acting like a professional tax <strong>agent</strong> and in the following, I want you to help me fill in my tax declaration” 🤷‍♂️.</p>

<p>Pieter Levels, who tends to speak frankly about coding and AI matters, shared this feeling in summer 2025:</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">If I hear people talk about &quot;AI agents&quot; these days it&#39;s generally a red flag and I know they&#39;re non-technical ppl reading AI news but not actually shipping anything<br /><br />Not cause I don&#39;t believe in AI agents but it&#39;s such a marketing term with no real meaning at this point</p>&mdash; @levelsio (@levelsio) <a href="https://x.com/levelsio/status/1953125500492128766?ref_src=twsrc%5Etfw">August 6, 2025</a></blockquote>

<p><strong>We are now approaching summer 2026, have things changed much?</strong></p>

<p>In my coding practice, I explored several ways to do agentic coding that would live up to the definition proposed above, and not masquerade for it.</p>

<p>Here are 3 flavors I tried:</p>

<h1 id="flavor-1-launching-multiple-command-line-interfaces">Flavor 1: launching multiple command line interfaces</h1>
<p>I did that for a while:</p>

<ul>
  <li>open an SSH session to my server</li>
  <li>launch <a href="https://developers.openai.com/codex/cli">Codex CLI</a> in it</li>
  <li>ask GPT to accomplish a task just by writing a prompt describing the task</li>
  <li>open a second SSH session to my server</li>
  <li>launch <a href="https://developers.openai.com/codex/cli">Codex CLI</a> in it</li>
  <li>ask GPT to accomplish another task just by writing a prompt describing the task</li>
  <li>rinse and repeat…</li>
</ul>

<p>Honestly, that works pretty well. It is extremely low-tech as you can see. It also means you can launch <a href="https://claude.com/fr/product/claude-code">Claude Code</a> in one session, Codex CLI in another, <a href="https://geminicli.com/">Gemini CLI</a> in a third one… and hence spread your token consumption across several AI providers in parallel, which makes the token budget limit slower to hit for a given provider.</p>

<h1 id="flavor-2-launching-ai-clis-in-headless-mode">Flavor 2: launching AI CLIs in headless mode</h1>
<p>I used this second approach to write crawlers for 200+ different webpages. Obviously with 200 crawlers to create, that would have been too boring to do with the Flavor 1 described just above. ChatGPT guided me throughout on how to implement this new approach. The basic logic is:</p>

<ul>
  <li>one JSON file containing the parameters for the 200 websites (URLs and a few more details).</li>
  <li>one Bash script (call it “A”) that can launch one LLM through a command-line interface, in headless mode. Headless means that the LLM, once launched with the prompt you have given it, will execute until it has completed the task, without interrupting to ask you for permission or ask for feedback or a follow-up. For that I use the <a href="https://developers.openai.com/codex/noninteractive"><code class="language-plaintext highlighter-rouge">exec</code> flag on Codex CLI that triggers the headless mode</a>. Script A also contains the prompt that will be given to the LLM when it launches. The prompt is a piece of text with placeholders at key points, which are replaced by the actual information related to the specific website to be crawled. The prompt basically asks the LLM to write a crawler for this website.</li>
  <li>another script (script “B”) that picks 20 websites from the json file and executes script A for each of them. The placeholders of script A are replaced by the info of the website to be crawled, meaning that the crawler created by the LLM will be specific to this website.</li>
  <li>I launch script B, check that it works fine, then relaunch it with 20 other websites, etc. until I had processed 200 websites this way.</li>
</ul>

<p>Let me show you script A (script written by ChatGPT) to illustrate how this approach Flavor 2 involves more complexity than Flavor 1:</p>

<p><a href="https://github.com/seinecle/blog/blob/main/assets/data/script-A">open script A</a></p>

<p>This approach works well. It is not as easy as “launch script B, get 200 crawlers written in an hour” but almost that. If you are patient to read a bit the script above, you’ll see that the LLM is tasked to write unit tests for each crawler it creates! As expected, these tests do not always pass, so that slows things down a bit. But it is for a good reason: doing the extra work needed to get passing tests means that the crawlers will be more reliable.</p>

<p>With this approach, I expect to have my 200 crawlers up and ready in the next few days, and with an easy path to grow to hundreds more.</p>

<h1 id="flavor-3-having-one-llm-create-and-manage-these-subagents-itself">Flavor 3: having one LLM create and manage these subagents itself</h1>
<p>Flavor 2 was really Bash and Unix heavy: this makes my processes harder to maintain. Why not have an LLM just spin up agents by itself, following my instructions? That’s what every solution is advertising these days:</p>

<ul>
  <li>Cursor invites you to <a href="https://web.archive.org/web/20260528201253/https://cursor.com/product">“delegate implementation to focus on higher-level direction”</a></li>
  <li>Codex has <a href="https://web.archive.org/web/20260524042439/https://developers.openai.com/codex/subagents">“sub-agents”</a> you can orchestrate</li>
  <li>Google’s Antigravity offers to <a href="https://perma.cc/4S83-LRM3">“orchestrate multiple autonomous agents working in parallel across independent projects.”</a></li>
  <li>Claude Code can create <a href="https://web.archive.org/web/20260528082943/https://code.claude.com/docs/en/sub-agents">“custom sub agents”</a> for you.</li>
</ul>

<p>My opinion: probably, but not today. Asking one agent to delegate to sub-agents means that you are two steps removed from the actual work. Inconsistencies, poor choices, flat errors… will be harder to catch. Interruption and resuming of work for a given sub-agent is not straightforward. And you become solution-dependent: my AI of choice these days is GPT 5.5, and that would be off-limits if I choose a solution with agents that is not developed by its company, OpenAI.</p>

<blockquote>
  <p>For these reasons and until proven otherwise, I’ll stick with Flavor number 2 (and even number 1 in simple cases) described above.</p>
</blockquote>

<h1 id="do-we-even-need-agents">Do we even need agents?</h1>

<p>Most of the time, <em>no</em>. Here is <a href="https://www.linkedin.com/in/emollick/">Ethan Mollick</a> creating a complete, live web application with just one prompt and 4 follow-ups, for a total of less than 20 lines:</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">How lucky are you to have been born when and where you are?<br /><br />Had Opus 4.8 in Claude Code whip up a new visualization of all humans who ever lived. In addition to being neat, it is an interesting test of combining research, code, design and stats for an AI. <a href="https://t.co/ayNEdhSLy3">https://t.co/ayNEdhSLy3</a> <a href="https://t.co/Ny2NmICZsK">pic.twitter.com/Ny2NmICZsK</a></p>&mdash; Ethan Mollick (@emollick) <a href="https://x.com/emollick/status/2060165879908749490?ref_src=twsrc%5Etfw">May 29, 2026</a></blockquote>

<p>Another example is the website developed by my daughter: a <a href="https://www.daebias.com/">fullfledged e-commerce platform</a>. Developed with zero fancy technology or agentic scaffolding. Just prompts (and a lot of work).</p>

<p>You probably also noticed that in chats with LLMs when we search for information, these LLMS can choose to launch searches on different website, with each search performed by its own agent. This helps speed up their research and cover more ground in response to your request.</p>

<p>So I’d say that in most cases, we don’t need agents even for complex tasks because LLMs  work just fine without, and if agents are useful, then LLM launch their own agents and manage them under the hood.</p>

<h1 id="and-the-difficulty-of-agents-bumping-into-each-other">And the difficulty of agents bumping into each other</h1>
<p>The topic is just unglamorous and the blog post is already too long so I’ll be super brief: multiple agents writing simultaneously in your codebase will step on each other’s toes. If they make changes to the same file, there is a very good chance the resulting file will be a mess.</p>

<p>The remedy is to have each agent working on different <a href="https://www.w3schools.com/GIT/git_branch.asp">git branches</a>, then proceeding to the merge of the branches into the main branch when all agents are done. This is also a mess: what if the merge fails? (and oh, it will). I tried this approach and it is tedious, hair-raising and makes you quit the multi-agent game quickly.</p>

<p>So how did I manage in Flavor 2 to create dozens of crawlers without having agents crash into each other’s work?</p>

<p>I first conducted plenty of preparatory work on just one crawler, making sure it worked in perfect isolation of the others. Not an easy task when you still want to follow the DRY (don’t repeat yourself) principle in coding. Only under this condition that each crawler is perfectly isolated can you have dozens of agents working on source files simultaneously without creating a mess.</p>

<p>If you scroll up and check the Bash script (“script A”) I’ve shared, you’ll see I was also advised on the matter by ChatGPT, which added some hard blocks in the prompt, so that each agent is explicitly forbidden from touching files not in the scope of its work.</p>

<h1 id="next-steps">Next steps</h1>
<p>Getting from dozens of crawlers written with Flavor 2 to hundreds of crawlers. Then executing them. Becoming sufficiently proficient at this “homemade” multi-agent setup that I can reproduce it when and if needed in other places.</p>

<h1 id="and-you">And you?</h1>
<p>What multi-agent setup works for you? Or do you stick with no agent at all?</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="ai" /><category term="productivity" /><category term="coding" /><category term="development" /><category term="agentic" /><category term="agents" /><summary type="html"><![CDATA[A reasonable definition of an “AI agent”, at least in the context of agentic coding, could be: a software process endowed with the capabilities of an LLM launched with instructions given at the start to accomplish a task which runs autonomously (no interactive session with a human), for a significant period of time with non-deterministic behavior: the agent adapts to the circumstances, hopefully without deviating from the instructions it received These software processes (agents) can be launched in parallel to achieve faster results or to accomplish a larger number of tasks: same process launched in multiple copies, or a variety of processes launched at once. Not a necessity but logical next step: to accomplish a task, a process can be led to launch other processes, subprocesses, etc. This evokes images of cascades, armies, or swarms of agents coordinating in a decentralized manner (no human in the loop) to accomplish a task. Yet, in practice, “agents” is often used with no relation to the definition above. Possibly to sound up-to-date and sophisticated, “agents” might in reality designate a ChatGPT conversation where the user prompted “you are acting like a professional tax agent and in the following, I want you to help me fill in my tax declaration” 🤷‍♂️. Pieter Levels, who tends to speak frankly about coding and AI matters, shared this feeling in summer 2025: If I hear people talk about &quot;AI agents&quot; these days it&#39;s generally a red flag and I know they&#39;re non-technical ppl reading AI news but not actually shipping anythingNot cause I don&#39;t believe in AI agents but it&#39;s such a marketing term with no real meaning at this point&mdash; @levelsio (@levelsio) August 6, 2025 We are now approaching summer 2026, have things changed much? In my coding practice, I explored several ways to do agentic coding that would live up to the definition proposed above, and not masquerade for it. Here are 3 flavors I tried: Flavor 1: launching multiple command line interfaces I did that for a while: open an SSH session to my server launch Codex CLI in it ask GPT to accomplish a task just by writing a prompt describing the task open a second SSH session to my server launch Codex CLI in it ask GPT to accomplish another task just by writing a prompt describing the task rinse and repeat… Honestly, that works pretty well. It is extremely low-tech as you can see. It also means you can launch Claude Code in one session, Codex CLI in another, Gemini CLI in a third one… and hence spread your token consumption across several AI providers in parallel, which makes the token budget limit slower to hit for a given provider. Flavor 2: launching AI CLIs in headless mode I used this second approach to write crawlers for 200+ different webpages. Obviously with 200 crawlers to create, that would have been too boring to do with the Flavor 1 described just above. ChatGPT guided me throughout on how to implement this new approach. The basic logic is: one JSON file containing the parameters for the 200 websites (URLs and a few more details). one Bash script (call it “A”) that can launch one LLM through a command-line interface, in headless mode. Headless means that the LLM, once launched with the prompt you have given it, will execute until it has completed the task, without interrupting to ask you for permission or ask for feedback or a follow-up. For that I use the exec flag on Codex CLI that triggers the headless mode. Script A also contains the prompt that will be given to the LLM when it launches. The prompt is a piece of text with placeholders at key points, which are replaced by the actual information related to the specific website to be crawled. The prompt basically asks the LLM to write a crawler for this website. another script (script “B”) that picks 20 websites from the json file and executes script A for each of them. The placeholders of script A are replaced by the info of the website to be crawled, meaning that the crawler created by the LLM will be specific to this website. I launch script B, check that it works fine, then relaunch it with 20 other websites, etc. until I had processed 200 websites this way. Let me show you script A (script written by ChatGPT) to illustrate how this approach Flavor 2 involves more complexity than Flavor 1: open script A This approach works well. It is not as easy as “launch script B, get 200 crawlers written in an hour” but almost that. If you are patient to read a bit the script above, you’ll see that the LLM is tasked to write unit tests for each crawler it creates! As expected, these tests do not always pass, so that slows things down a bit. But it is for a good reason: doing the extra work needed to get passing tests means that the crawlers will be more reliable. With this approach, I expect to have my 200 crawlers up and ready in the next few days, and with an easy path to grow to hundreds more. Flavor 3: having one LLM create and manage these subagents itself Flavor 2 was really Bash and Unix heavy: this makes my processes harder to maintain. Why not have an LLM just spin up agents by itself, following my instructions? That’s what every solution is advertising these days: Cursor invites you to “delegate implementation to focus on higher-level direction” Codex has “sub-agents” you can orchestrate Google’s Antigravity offers to “orchestrate multiple autonomous agents working in parallel across independent projects.” Claude Code can create “custom sub agents” for you. My opinion: probably, but not today. Asking one agent to delegate to sub-agents means that you are two steps removed from the actual work. Inconsistencies, poor choices, flat errors… will be harder to catch. Interruption and resuming of work for a given sub-agent is not straightforward. And you become solution-dependent: my AI of choice these days is GPT 5.5, and that would be off-limits if I choose a solution with agents that is not developed by its company, OpenAI. For these reasons and until proven otherwise, I’ll stick with Flavor number 2 (and even number 1 in simple cases) described above. Do we even need agents? Most of the time, no. Here is Ethan Mollick creating a complete, live web application with just one prompt and 4 follow-ups, for a total of less than 20 lines: How lucky are you to have been born when and where you are?Had Opus 4.8 in Claude Code whip up a new visualization of all humans who ever lived. In addition to being neat, it is an interesting test of combining research, code, design and stats for an AI. https://t.co/ayNEdhSLy3 pic.twitter.com/Ny2NmICZsK&mdash; Ethan Mollick (@emollick) May 29, 2026 Another example is the website developed by my daughter: a fullfledged e-commerce platform. Developed with zero fancy technology or agentic scaffolding. Just prompts (and a lot of work). You probably also noticed that in chats with LLMs when we search for information, these LLMS can choose to launch searches on different website, with each search performed by its own agent. This helps speed up their research and cover more ground in response to your request. So I’d say that in most cases, we don’t need agents even for complex tasks because LLMs work just fine without, and if agents are useful, then LLM launch their own agents and manage them under the hood. And the difficulty of agents bumping into each other The topic is just unglamorous and the blog post is already too long so I’ll be super brief: multiple agents writing simultaneously in your codebase will step on each other’s toes. If they make changes to the same file, there is a very good chance the resulting file will be a mess. The remedy is to have each agent working on different git branches, then proceeding to the merge of the branches into the main branch when all agents are done. This is also a mess: what if the merge fails? (and oh, it will). I tried this approach and it is tedious, hair-raising and makes you quit the multi-agent game quickly. So how did I manage in Flavor 2 to create dozens of crawlers without having agents crash into each other’s work? I first conducted plenty of preparatory work on just one crawler, making sure it worked in perfect isolation of the others. Not an easy task when you still want to follow the DRY (don’t repeat yourself) principle in coding. Only under this condition that each crawler is perfectly isolated can you have dozens of agents working on source files simultaneously without creating a mess. If you scroll up and check the Bash script (“script A”) I’ve shared, you’ll see I was also advised on the matter by ChatGPT, which added some hard blocks in the prompt, so that each agent is explicitly forbidden from touching files not in the scope of its work. Next steps Getting from dozens of crawlers written with Flavor 2 to hundreds of crawlers. Then executing them. Becoming sufficiently proficient at this “homemade” multi-agent setup that I can reproduce it when and if needed in other places. And you? What multi-agent setup works for you? Or do you stick with no agent at all? About Me I’m an academic and independent web app developer. I created nocode functions, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">Piloting Claude and Gemini on Debian from Signal</title><link href="https://nocodefunctions.com/blog/claude-gemini-on-debian-from-signal/" rel="alternate" type="text/html" title="Piloting Claude and Gemini on Debian from Signal" /><published>2026-03-01T00:00:00+00:00</published><updated>2026-03-01T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/agents-automation</id><content type="html" xml:base="https://nocodefunctions.com/blog/claude-gemini-on-debian-from-signal/"><![CDATA[<p>I document the rapid evolution of tooling for my web app, <a href="https://nocodefunctions.com">nocodefunctions.com</a>.
The previous steps are documented in <a href="https://nocodefunctions.com/blog/from-netbeans-to-claude-cursor/">From NetBeans to Claude Code (Jan 2026)</a>.</p>

<p>In early January, I had left my coding environment in this configuration, which was great:</p>

<ul>
  <li>one single Debian server for dev and prod</li>
  <li>Claude Code installed on it</li>
  <li>I connect on SSH to it, from my local Windows machine</li>
  <li>in the terminal (Putty), I “vibe code” the development of my web app</li>
  <li>I can also SSH to my server directly from <a href="https://nocodefunctions.com/blog/from-netbeans-to-claude-cursor/#january-2026-the-third-tipping-point">my Android phone using ConnectBot</a>: effectively coding while on a metro ride.</li>
</ul>

<h1 id="2-frustrations">2 frustrations</h1>
<p>This setup served me well, but I hit some real limits:</p>

<h2 id="1-coding-from-the-terminal-on-the-phone-is-ok-but-not-fantastic">1. Coding from the terminal on the phone is OK but not fantastic</h2>
<p>Sending instructions to Claude from a mobile with ConnectBot is not a great experience.
The app connects to the server so this is a terminal interface, and on a mobile phone there are some keys (arrows, escapes, tabs…) that are not readily available, necessitating to install an app with a more advanced keyboard on the phone.
In the end the experience is OK but not comfortable.
Here is how it looks:</p>

<div style="display: flex; justify-content: center;">
    <img src="https://github.com/user-attachments/assets/475fa4aa-2357-4165-b4d3-5925fdee8419" alt="Connectbot on Android" style="max-width: 100%; width: 360px; height: auto;" />
</div>

<h2 id="2-claude-token-rate-limits-every-5-hours-and-every-week">2. Claude: token rate limits every 5 hours and every week</h2>
<p>Vibe coding increases productivity for sure, and it comes with token spending. I became regularly blocked by the 5-hour token reset period imposed by Claude.
The weekly limit on token consumption was also looming large. I am on the <span>$20</span> monthly plan with Claude, and didn’t want to jump to the <span>$90</span> or <span>$200</span> plan. The situation became very frustrating.</p>

<h1 id="the-solutions-">The solutions! ✨</h1>

<h2 id="1-adding-gemini-cli-to-the-server">1. Adding Gemini CLI to the server!</h2>
<p>Google’s most visible product to compete with Cursor or Claude is <a href="https://antigravity.google/">AntiGravity</a> and so I had missed that Google has released a CLI version of Gemini (since summer 2025 as per <a href="https://github.com/google-gemini/gemini-cli">this Github repo</a>).</p>

<p>Anyway, if I am limited by Claude’s token limit, why not use the token allowance I have from my Gemini subscription?. Installing Gemini CLI on the server is straightforward.</p>

<p>At first, I switched between Claude and Gemini : launching one when the other’s limit was reached.
If you wonder, Gemini 3.1 pro is good enough to work with on code.
It is at the same level as Claude sonnet or opus.
Gemini’s other models are insufficient.</p>

<p>But then I thought naturally…</p>

<h2 id="2-getting-claude-and-gemini-to-coordinate-their-efforts">2. Getting Claude and Gemini to coordinate their efforts!</h2>
<p>It is natural to try the next step: getting Claude, Gemini, and possibly other forthcoming CLI agents to coordinate their efforts on tasks I submit to them.</p>

<p>To create this, I started a conversation with Gemini to devise a plan. My entire prompt was:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>On my debian server I installed in 2026 both Claude Code and Gemini CLI with flags to bypass human confirmation . I created scripts and md files so that they should coordinate work when I formulate a task to accomplish . works great.
only issue is that when one is finished on a set of subtasks, it returns to the command line and wait for my instructions. there is no mechanism for it to detect that the other has written down new subtasks in the md file to be picked up now.
how to solve that? i would love that I first give them both a general task, and then they remain active on it. they would also send their remarks, questions, progress reports... in a centralized place where I could then answer (to both at the same time) 
</code></pre></div></div>

<p>Gemini provided a simple plan, that I then asked my 2 agents (Claude and Gemini) on debian to implement.
It works great now, mostly through a mix of shared .md files where both agents report their progress and pick up instructions to work on the next steps.</p>

<h2 id="3-using-the-web-then-signal-to-improve-my-comfort-as-an-orchestrator">3. Using the web then Signal to improve my comfort as an orchestrator!</h2>
<p>Since I left the comfort of using an IDE like NetBeans (2010-2025) then Cursor (November-December 2025), working in the terminal with Claude and Gemini is not so bad, but is not entirely comfortable either. Especially, as I explained above, when connecting on the terminal from my phone, things get really tiny and typing messages is not super easy.</p>

<p>First thing I did was asking the agents to create a web page interface: a page that I could double tap to edit it, so that I could monitor progress and add tasks directly in the text. They found a Python lib for that:</p>

<div style="display: flex; justify-content: center;">
    <img src="https://github.com/user-attachments/assets/a84ab09e-adef-46a3-808b-61c58af7531a" alt="web interface for agents coordination" style="max-width: 100%; width: 460px; height: auto;" />
</div>

<p>Not bad at all. Then I remembered that levelsio / Pieter Levels had mentioned his use of Telegram to pilot his agents:</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">✨ A dream I had finally came true: I can now chat directly with my sites to build any feature or fix any bug just via Telegram<br /><br />I&#39;ve been playing with OpenClaw for 3 weeks now and it&#39;s great but I was always too scared to run it on any production server<br /><br />And I was right a bit as… <a href="https://t.co/pfQf6EMKOd">pic.twitter.com/pfQf6EMKOd</a></p>&mdash; @levelsio (@levelsio) <a href="https://twitter.com/levelsio/status/2023960543959101938?ref_src=twsrc%5Etfw">February 18, 2026</a></blockquote>

<p>I don’t personally like or use Telegram, and I would have preferred WhatsApp or Signal. Turns out WhatsApp is not fit for this purpose, and Signal has a <a href="https://github.com/AsamK/signal-cli">community-supported CLI</a> that fits the need. Claude and Gemini implemented that in an hour or two.</p>

<p>Done: I can now send instructions to my agents (Claude and Gemini) directly from Signal, either from my phone or from my Windows laptop (where Signal is installed as a desktop app). I can even attach pics to the message. Typically, screenshots of my web app to show them what I mean in terms of layout, when there is a defect or when I want an improvement.</p>

<p>Using Signal compared to a terminal interface, the comfort is real:</p>

<div style="display: flex; justify-content: center;">
    <img src="https://github.com/user-attachments/assets/ce5548d4-9a35-4777-bb38-8d2e8604d795" alt="screenshot of dialoging with agents on debian from Signal" style="max-width: 100%; width: 360px; height: auto;" />
</div>

<h1 id="money-money-money">Money, money, money</h1>
<p>No extra money spent here. I continue with my existing <span>$20</span> Claude and <span>$20</span> Gemini monthly subscriptions. It’ just that their token allowances are better spent now.</p>

<h1 id="next-steps">Next steps</h1>
<p>Thanks to these agents, I could develop 2 new functions that I wanted to develop for a long time:</p>

<h2 id="pdf-or-web-pages-to-social-graph">pdf or web pages to social graph</h2>

<p><a href="https://nocodefunctions.com/nergraph/nergraph.html">Try it there</a></p>

<p>Provide a pdf or a url, and the function will return the social graph of the persons mentioned in the document.</p>

<p>It works already pretty well. Here is the graph created from the phd of <a href="https://theses.hal.science/tel-00372263v1">my PhD dissertation</a>, that explored the relations between economics and biology in post-war US:</p>

<p>➡️ <a href="https://dev.nocodefunctions.com/user_created_files/vosviewer/index.html?json=public/vosviewer_5432624604758149090.json">interactive version available here</a></p>

<div style="display: flex; justify-content: center;">
    <img src="https://github.com/user-attachments/assets/bf1d31c1-b08d-4ab4-90f7-df9b52927e65" alt="example of my phd thesis turned into a social graph" style="max-width: 100%; width: 460px; height: auto;" />
</div>

<h2 id="wiki-social-graph">Wiki social graph</h2>

<p>Same, but with Wikipedia: pick a domain or provide a name, and the function will crawl wikipedia to return a social graph around this domain or name. <a href="https://nocodefunctions.com/wikinergraph/wikinergraph.html">Try it there</a>.</p>

<p>These 2 functions now need to be further tested and improved. Your feedback is welcome. I also have other ideas in store.</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="ai" /><category term="productivity" /><category term="coding" /><category term="development" /><category term="claude code" /><category term="gemini CLI" /><category term="signal" /><category term="devops" /><category term="debian" /><category term="SSH" /><summary type="html"><![CDATA[I document the rapid evolution of tooling for my web app, nocodefunctions.com. The previous steps are documented in From NetBeans to Claude Code (Jan 2026). In early January, I had left my coding environment in this configuration, which was great: one single Debian server for dev and prod Claude Code installed on it I connect on SSH to it, from my local Windows machine in the terminal (Putty), I “vibe code” the development of my web app I can also SSH to my server directly from my Android phone using ConnectBot: effectively coding while on a metro ride. 2 frustrations This setup served me well, but I hit some real limits: 1. Coding from the terminal on the phone is OK but not fantastic Sending instructions to Claude from a mobile with ConnectBot is not a great experience. The app connects to the server so this is a terminal interface, and on a mobile phone there are some keys (arrows, escapes, tabs…) that are not readily available, necessitating to install an app with a more advanced keyboard on the phone. In the end the experience is OK but not comfortable. Here is how it looks: 2. Claude: token rate limits every 5 hours and every week Vibe coding increases productivity for sure, and it comes with token spending. I became regularly blocked by the 5-hour token reset period imposed by Claude. The weekly limit on token consumption was also looming large. I am on the $20 monthly plan with Claude, and didn’t want to jump to the $90 or $200 plan. The situation became very frustrating. The solutions! ✨ 1. Adding Gemini CLI to the server! Google’s most visible product to compete with Cursor or Claude is AntiGravity and so I had missed that Google has released a CLI version of Gemini (since summer 2025 as per this Github repo). Anyway, if I am limited by Claude’s token limit, why not use the token allowance I have from my Gemini subscription?. Installing Gemini CLI on the server is straightforward. At first, I switched between Claude and Gemini : launching one when the other’s limit was reached. If you wonder, Gemini 3.1 pro is good enough to work with on code. It is at the same level as Claude sonnet or opus. Gemini’s other models are insufficient. But then I thought naturally… 2. Getting Claude and Gemini to coordinate their efforts! It is natural to try the next step: getting Claude, Gemini, and possibly other forthcoming CLI agents to coordinate their efforts on tasks I submit to them. To create this, I started a conversation with Gemini to devise a plan. My entire prompt was: On my debian server I installed in 2026 both Claude Code and Gemini CLI with flags to bypass human confirmation . I created scripts and md files so that they should coordinate work when I formulate a task to accomplish . works great. only issue is that when one is finished on a set of subtasks, it returns to the command line and wait for my instructions. there is no mechanism for it to detect that the other has written down new subtasks in the md file to be picked up now. how to solve that? i would love that I first give them both a general task, and then they remain active on it. they would also send their remarks, questions, progress reports... in a centralized place where I could then answer (to both at the same time) Gemini provided a simple plan, that I then asked my 2 agents (Claude and Gemini) on debian to implement. It works great now, mostly through a mix of shared .md files where both agents report their progress and pick up instructions to work on the next steps. 3. Using the web then Signal to improve my comfort as an orchestrator! Since I left the comfort of using an IDE like NetBeans (2010-2025) then Cursor (November-December 2025), working in the terminal with Claude and Gemini is not so bad, but is not entirely comfortable either. Especially, as I explained above, when connecting on the terminal from my phone, things get really tiny and typing messages is not super easy. First thing I did was asking the agents to create a web page interface: a page that I could double tap to edit it, so that I could monitor progress and add tasks directly in the text. They found a Python lib for that: Not bad at all. Then I remembered that levelsio / Pieter Levels had mentioned his use of Telegram to pilot his agents: ✨ A dream I had finally came true: I can now chat directly with my sites to build any feature or fix any bug just via TelegramI&#39;ve been playing with OpenClaw for 3 weeks now and it&#39;s great but I was always too scared to run it on any production serverAnd I was right a bit as… pic.twitter.com/pfQf6EMKOd&mdash; @levelsio (@levelsio) February 18, 2026 I don’t personally like or use Telegram, and I would have preferred WhatsApp or Signal. Turns out WhatsApp is not fit for this purpose, and Signal has a community-supported CLI that fits the need. Claude and Gemini implemented that in an hour or two. Done: I can now send instructions to my agents (Claude and Gemini) directly from Signal, either from my phone or from my Windows laptop (where Signal is installed as a desktop app). I can even attach pics to the message. Typically, screenshots of my web app to show them what I mean in terms of layout, when there is a defect or when I want an improvement. Using Signal compared to a terminal interface, the comfort is real: Money, money, money No extra money spent here. I continue with my existing $20 Claude and $20 Gemini monthly subscriptions. It’ just that their token allowances are better spent now. Next steps Thanks to these agents, I could develop 2 new functions that I wanted to develop for a long time: pdf or web pages to social graph Try it there Provide a pdf or a url, and the function will return the social graph of the persons mentioned in the document. It works already pretty well. Here is the graph created from the phd of my PhD dissertation, that explored the relations between economics and biology in post-war US: ➡️ interactive version available here Wiki social graph Same, but with Wikipedia: pick a domain or provide a name, and the function will crawl wikipedia to return a social graph around this domain or name. Try it there. These 2 functions now need to be further tested and improved. Your feedback is welcome. I also have other ideas in store. About Me I’m an academic and independent web app developer. I created nocode functions, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">From NetBeans to Claude Code</title><link href="https://nocodefunctions.com/blog/from-netbeans-to-claude-cursor/" rel="alternate" type="text/html" title="From NetBeans to Claude Code" /><published>2026-01-04T00:00:00+00:00</published><updated>2026-01-04T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/from-netbeans-to-claude-code</id><content type="html" xml:base="https://nocodefunctions.com/blog/from-netbeans-to-claude-cursor/"><![CDATA[<p>I document the rapid evolution of tooling for my web app, with a focus on Java. I highlight how changes in “tooling” co-occurred with an evolution of my tech stack and the wider development environment.</p>

<p>That’s the opening scene: my coding environment as a solo Java web developer over the last 15 years (look Ma, no JetBrains!).</p>

<h1 id="20102025-netbeans-all-the-way">2010–2025: NetBeans all the way</h1>
<ul>
  <li><strong>Code editor, refactoring, Git interface, debugger, Maven builds and executions</strong>: all from inside NetBeans</li>
  <li><strong>Frontend</strong>: JSF + PrimeFaces</li>
  <li><strong>Backend</strong>: Jakarta EE</li>
  <li><strong>Microservices</strong>: none at first, then Javalin since 2022</li>
  <li><strong>OS for dev</strong>: Windows</li>
  <li><strong>OS for prod</strong>: Debian</li>
  <li><strong>DevOps</strong>: PuTTY, <a href="https://winscp.net/eng/download.php">WinSCP</a> (and pushing to Git from NetBeans)</li>
  <li><strong>AI-assisted coding</strong>: since 2023, copy-pasting code into ChatGPT and Gemini</li>
</ul>

<h1 id="summer-and-fall-2025-removing-primefaces-jsf-and-jakarta-ee--htmx--javalin-all-the-way">Summer and Fall 2025: removing PrimeFaces, JSF, and Jakarta EE — htmx + Javalin all the way</h1>
<p>This happened through a series of logical steps (the first ones are retraced in a <a href="https://nocodefunctions.com/blog/jsf-primefaces-vs-htmx-alpine-tailwind/">previous post</a>):</p>

<ol>
  <li>I wanted to improve the UI of my app, but PrimeFaces makes CSS customization painful. What if I removed PrimeFaces and styled JSF components directly? ChatGPT would help a lot.</li>
  <li>But JSF components live in <code class="language-plaintext highlighter-rouge">.xhtml</code> files, which can’t be previewed in ChatGPT’s canvas. The constant back-and-forth-copy-pasting between NetBeans and ChatGPT, adapting XHTML to HTML and vice versa was a drag (and I did spend time doing it).</li>
  <li>Do I really need JSF components at all, or <a href="https://nocodefunctions.com/blog/jsf-primefaces-vs-htmx-alpine-tailwind/">could I just use native HTML with htmx to interact with Jakarta EE</a>? Probably yes. Let’s go htmx + Alpine on the frontend.</li>
  <li><strong>But if I don’t use JSF, do I still need Jakarta EE?</strong> Maybe <a href="https://jakarta.ee/specifications/mvc/">Jakarta MVC</a> would suffice? Let’s try the slimmer option.</li>
  <li>But wait: why keep Jakarta MVC at all? If it’s mainly for session management, does that justify an entire framework? I could learn via ChatGPT how to manage sessions directly in Javalin (CSRF and all).</li>
  <li>I ended up removing Jakarta EE entirely and using Javalin end-to-end for the backend.</li>
</ol>

<h1 id="november-2025-cursor-the-tipping-point">November 2025: Cursor, the tipping point</h1>
<p>At this stage, I was no longer relying on JSF or Jakarta EE: a break from 15 years of habits! I now depended heavily on copy-pasting code into ChatGPT or Gemini for advice, and for full rewrites from Jakarta EE logic to Javalin.</p>

<p>It became so impractical. I was zipping entire source folders just to give enough context to a conversational interface. <strong>It worked, but it was silly.</strong></p>

<p>The obvious alternative: what if an AI tool could edit my source files directly on my machine, exploring the context as needed, without browser copy-paste gymnastics?</p>

<p>I had heard of Cursor, but the $20/month made me hesitate. This is a side project with zero revenue, and I was already paying:</p>
<ul>
  <li>$20/month for Gemini</li>
  <li>$20/month for ChatGPT</li>
  <li>$50/month for server costs (yes, that’s a big server)</li>
</ul>

<p>I tried free alternatives: <a href="https://aider.chat/">aider</a> and <a href="https://zed.dev/ai">Zed</a>, and found them disappointing. Eventually, I caved and added another $20/month for Cursor.</p>

<p><strong>And… whoosh. Cursor is in a different category.</strong> You ask, it codes correctly, across the codebase. It just works. My recent re-architecture helped: htmx + Javalin is simple enough that models reason effectively over it.</p>

<p>My workflow changed radically in a few weeks:</p>
<ul>
  <li>giving instructions to Cursor</li>
  <li>keeping NetBeans open to check compiler errors, stop microservices, rebuild and relaunch</li>
  <li>copy-pasting error traces into Cursor and asking it to “fix it”</li>
  <li>virtually no hand coding 😮</li>
</ul>

<p>Yes, vibe coding. Did I miss manual coding? Not at all. I enjoy focusing on architecture and design decisions instead of minute implementation details.</p>

<p>But after a few weeks, another friction appeared: why manually copy error traces, or stop/restart services, if Cursor already has access to my machine?</p>

<h1 id="december-2025-claude-code">December 2025: Claude Code</h1>
<p>Yes, two tipping points in two months.</p>

<p>Just like for Cursor, I had seen very positive feedback about Claude Code. So I posted a <a href="https://news.ycombinator.com/item?id=46185230">question on Hacker News</a>, asking whether Claude Code was meaningfully different or better than Cursor. The replies were few but very positive, even with this direct comparison with Cursor.</p>

<p>So during the Christmas break, I spent another $20/month on Claude Code 😭. After the change I had lived with Cursor and that I thought were huge already, it forced me to change 15 years of habits:</p>

<ul>
  <li><strong>From Windows to Linux for development.</strong> I couldn’t get Claude Code working on Windows (my fault probably, and I can’t install WSL on my machine), so I installed it on my Debian server and effectively moved my codebase there. Psychologically difficult: I’m not an IT-trained developer, and “Windows for dev, Linux via PuTTY for prod” already felt geeky enough*. Going full Linux felt risky. But it worked out.</li>
  <li><strong>Not using NetBeans or an IDE to code</strong> I now <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh">connect over SSH with Cursor</a> to connect to Claude on the server. Cursor can show and edit files, but I rarely do manual edits.</li>
</ul>

<p>Claude Code delivers: with proper guidelines it can stop, rebuild, and restart my microservices; read logs and use them as context; navigate directories; grep, sed, push: whatever is needed. Contrary to Cursor it takes full advantage of having access to the file system and the command line. Friction is almost gone. I give instructions and they get executed. It writes tests (so does Cursor to be fair), which was a sore point in my practice.</p>

<h1 id="january-2026-the-third-tipping-point">January 2026: the third tipping point</h1>
<p>(Sorry for the exaggeration but it really felt like it.)</p>

<p>A few days ago, I remembered <a href="https://play.google.com/store/apps/details?id=org.connectbot">ConnectBot</a>, an Android SSH app I had installed years ago and never used. <strong>Could I “vibe code” on the go?</strong></p>

<p>Yes. Easily.</p>

<p>I now do it for real. The setup was trivial. I can test results of my feature additions directly on the browser of my phone by visiting the <a href="https://dev.nocodefunctions.com/">dev version of nocodefunctions.com</a> (ssl certificate warnings for now, add an exception). When something breaks, I report it to Claude, ask for a fix, and keep walking.</p>

<h1 id="money-money-money">Money, money, money</h1>
<p>Spending $80/month on AI-assisted coding is not sustainable for me:</p>
<ul>
  <li>I downgraded my ChatGPT subscription from the “Plus” plan (<span>$20</span>) to the “Go” plan (<span>$4</span>), which is sufficient since I no longer use it for coding.</li>
  <li>I cancelled Cursor.</li>
</ul>

<h1 id="next-steps">Next steps</h1>
<p>As I wrote earlier, switching tooling (even shiny AI tooling) is initially a <a href="https://nocodefunctions.com/blog/ai-coding-tool-productivity-paradox/">productivity drain</a>.</p>

<p>Since this summer, I’ve been in near-constant tooling transition, eating up the few weekly hours I have for this project.</p>

<p>So I hope <a href="https://antigravity.google/">Google’s antigravity</a> will flop and won’t justify another switch away from Claude Code :-) That way, I can finally focus on better UI, better UX, and new features for nocodefunctions.com.</p>

<p>* Thanks to <a href="https://bsky.app/profile/mgilbir.bsky.social">Miguel Biraud</a> for introducing me to PuTTY and Linux back then. Your help was transformative.</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="ai" /><category term="productivity" /><category term="coding" /><category term="development" /><category term="netbeans" /><category term="vibe coding" /><category term="cursor" /><category term="claude" /><category term="devops" /><category term="ide" /><summary type="html"><![CDATA[I document the rapid evolution of tooling for my web app, with a focus on Java. I highlight how changes in “tooling” co-occurred with an evolution of my tech stack and the wider development environment. That’s the opening scene: my coding environment as a solo Java web developer over the last 15 years (look Ma, no JetBrains!). 2010–2025: NetBeans all the way Code editor, refactoring, Git interface, debugger, Maven builds and executions: all from inside NetBeans Frontend: JSF + PrimeFaces Backend: Jakarta EE Microservices: none at first, then Javalin since 2022 OS for dev: Windows OS for prod: Debian DevOps: PuTTY, WinSCP (and pushing to Git from NetBeans) AI-assisted coding: since 2023, copy-pasting code into ChatGPT and Gemini Summer and Fall 2025: removing PrimeFaces, JSF, and Jakarta EE — htmx + Javalin all the way This happened through a series of logical steps (the first ones are retraced in a previous post): I wanted to improve the UI of my app, but PrimeFaces makes CSS customization painful. What if I removed PrimeFaces and styled JSF components directly? ChatGPT would help a lot. But JSF components live in .xhtml files, which can’t be previewed in ChatGPT’s canvas. The constant back-and-forth-copy-pasting between NetBeans and ChatGPT, adapting XHTML to HTML and vice versa was a drag (and I did spend time doing it). Do I really need JSF components at all, or could I just use native HTML with htmx to interact with Jakarta EE? Probably yes. Let’s go htmx + Alpine on the frontend. But if I don’t use JSF, do I still need Jakarta EE? Maybe Jakarta MVC would suffice? Let’s try the slimmer option. But wait: why keep Jakarta MVC at all? If it’s mainly for session management, does that justify an entire framework? I could learn via ChatGPT how to manage sessions directly in Javalin (CSRF and all). I ended up removing Jakarta EE entirely and using Javalin end-to-end for the backend. November 2025: Cursor, the tipping point At this stage, I was no longer relying on JSF or Jakarta EE: a break from 15 years of habits! I now depended heavily on copy-pasting code into ChatGPT or Gemini for advice, and for full rewrites from Jakarta EE logic to Javalin. It became so impractical. I was zipping entire source folders just to give enough context to a conversational interface. It worked, but it was silly. The obvious alternative: what if an AI tool could edit my source files directly on my machine, exploring the context as needed, without browser copy-paste gymnastics? I had heard of Cursor, but the $20/month made me hesitate. This is a side project with zero revenue, and I was already paying: $20/month for Gemini $20/month for ChatGPT $50/month for server costs (yes, that’s a big server) I tried free alternatives: aider and Zed, and found them disappointing. Eventually, I caved and added another $20/month for Cursor. And… whoosh. Cursor is in a different category. You ask, it codes correctly, across the codebase. It just works. My recent re-architecture helped: htmx + Javalin is simple enough that models reason effectively over it. My workflow changed radically in a few weeks: giving instructions to Cursor keeping NetBeans open to check compiler errors, stop microservices, rebuild and relaunch copy-pasting error traces into Cursor and asking it to “fix it” virtually no hand coding 😮 Yes, vibe coding. Did I miss manual coding? Not at all. I enjoy focusing on architecture and design decisions instead of minute implementation details. But after a few weeks, another friction appeared: why manually copy error traces, or stop/restart services, if Cursor already has access to my machine? December 2025: Claude Code Yes, two tipping points in two months. Just like for Cursor, I had seen very positive feedback about Claude Code. So I posted a question on Hacker News, asking whether Claude Code was meaningfully different or better than Cursor. The replies were few but very positive, even with this direct comparison with Cursor. So during the Christmas break, I spent another $20/month on Claude Code 😭. After the change I had lived with Cursor and that I thought were huge already, it forced me to change 15 years of habits: From Windows to Linux for development. I couldn’t get Claude Code working on Windows (my fault probably, and I can’t install WSL on my machine), so I installed it on my Debian server and effectively moved my codebase there. Psychologically difficult: I’m not an IT-trained developer, and “Windows for dev, Linux via PuTTY for prod” already felt geeky enough*. Going full Linux felt risky. But it worked out. Not using NetBeans or an IDE to code I now connect over SSH with Cursor to connect to Claude on the server. Cursor can show and edit files, but I rarely do manual edits. Claude Code delivers: with proper guidelines it can stop, rebuild, and restart my microservices; read logs and use them as context; navigate directories; grep, sed, push: whatever is needed. Contrary to Cursor it takes full advantage of having access to the file system and the command line. Friction is almost gone. I give instructions and they get executed. It writes tests (so does Cursor to be fair), which was a sore point in my practice. January 2026: the third tipping point (Sorry for the exaggeration but it really felt like it.) A few days ago, I remembered ConnectBot, an Android SSH app I had installed years ago and never used. Could I “vibe code” on the go? Yes. Easily. I now do it for real. The setup was trivial. I can test results of my feature additions directly on the browser of my phone by visiting the dev version of nocodefunctions.com (ssl certificate warnings for now, add an exception). When something breaks, I report it to Claude, ask for a fix, and keep walking. Money, money, money Spending $80/month on AI-assisted coding is not sustainable for me: I downgraded my ChatGPT subscription from the “Plus” plan ($20) to the “Go” plan ($4), which is sufficient since I no longer use it for coding. I cancelled Cursor. Next steps As I wrote earlier, switching tooling (even shiny AI tooling) is initially a productivity drain. Since this summer, I’ve been in near-constant tooling transition, eating up the few weekly hours I have for this project. So I hope Google’s antigravity will flop and won’t justify another switch away from Claude Code :-) That way, I can finally focus on better UI, better UX, and new features for nocodefunctions.com. * Thanks to Miguel Biraud for introducing me to PuTTY and Linux back then. Your help was transformative. About Me I’m an academic and independent web app developer. I created nocode functions, a point-and-click tool for exploring texts and networks. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">Productivity and AI: it’s the tool, not the model</title><link href="https://nocodefunctions.com/blog/ai-coding-tool-productivity-paradox/" rel="alternate" type="text/html" title="Productivity and AI: it’s the tool, not the model" /><published>2025-12-23T00:00:00+00:00</published><updated>2025-12-23T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/ai-productivity-race</id><content type="html" xml:base="https://nocodefunctions.com/blog/ai-coding-tool-productivity-paradox/"><![CDATA[<p>Every week, a new “SOTA” (State of the Art) model is announced, promising higher reasoning capabilities and (often) lower costs. We could be led to think that we are entering an era of infinite, frictionless productivity. But the reality is messier. While the models are getting smarter, the gap between “intelligence on tap” and “completing a task” is managed by our tools and right now, that tooling interface is becoming a major source of friction.</p>

<p>As we will see, this isn’t just a developer’s dilemma in the context of new AI assisted coding interfaces. It is a preview of the “retooling tax” that every professional domain must soon learn to navigate.</p>

<p>The paradox is simple: as models improve, productivity bottlenecks increasingly shift away from intelligence itself and toward the tools that mediate access to it.</p>

<h2 id="the-race-for-better-models">The race for better models</h2>
<p>This is the popular meme reflecting the merry-go-round of weekly improvements of AI models:</p>

<p><img alt="The endless cycle of improvement of AI models" src="https://github.com/user-attachments/assets/b67de1e8-941e-4bd1-a8b4-8d0510fd7e0c" style="max-width: 100%; width: 460px; height: auto;" /></p>

<p><em>(<a href="https://www.reddit.com/r/singularity/comments/1ks0jrb/the_cycle_never_ends/">source</a>. other versions of this meme do include Anthropic’s Claude, if you wonder)</em></p>

<p>LLMs become more capable, cheaper, and available on tap, to the point that the new best performing model can be indistinguishable from the previous one, simply because models are now so smart that the tasks we perform are not complex enough to clearly differentiate between “a great model” and an “even greater model”: both perform equally well on the tests.</p>

<p>This is the experience of <a href="https://simonwillison.net/2025/Nov/24/claude-opus/">Simon Willison</a> when testing a preview of Claude Opus 4.5 on November 24, 2025:</p>

<blockquote>
  <p>It’s clearly an excellent new model, but I did run into a catch. My preview expired at 8pm on Sunday when I still had a few remaining issues in the milestone for the alpha [of his coding project]. I switched back to Claude Sonnet 4.5 and… kept on working at the same pace I’d been achieving with the new model. With hindsight, production coding like this is a less effective way of evaluating the strengths of a new model than I had expected. I’m not saying the new model isn’t an improvement on Sonnet 4.5—but I can’t say with confidence that the challenges I posed it were able to identify a meaningful difference in capabilities between the two.</p>
</blockquote>

<p>This experience reflects that for some tasks, we have seemingly reached a plateau: models are already “clever enough”. Model providers continue the race the bottom for <a href="https://epoch.ai/data-insights/llm-inference-price-trends">costs</a> and <a href="https://github.com/vectara/hallucination-leaderboard">hallucination rates</a>, while constantly reaching new heights for <a href="https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/">task completion duration</a> and <a href="https://www.linkedin.com/posts/emollick_no-signs-of-an-end-to-rapid-gains-in-ai-ability-activity-7407157959958351873-9Y1h">overall performance</a>.</p>

<p>From the user’s perspective, however, the experience still falls short of the promise of effortless productivity: intelligence may be abundant, but friction remains pervasive. I will illustrate this with the case of coding tasks, before returning to the broader picture.</p>

<h2 id="the-tooling-paradox">The tooling paradox</h2>
<p>Making use of generative AI in a coding task is actually not as straightforward as just asking “solve this problem / respond to this difficult question” and then just collecting the answer.
Here are some essential milestones in the short history of tools that have been evolved to ease this process.</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Name</th>
      <th>Owning company</th>
      <th>First public release</th>
      <th>Interface type</th>
      <th>Key features (1 line)</th>
      <th>Cost model</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td><a href="https://en.wikipedia.org/wiki/GitHub_Copilot">GitHub Copilot</a></td>
      <td>GitHub (Microsoft)</td>
      <td>2021</td>
      <td>IDE extension (VS Code, JetBrains…)</td>
      <td>Inline code completion and chat powered by LLMs</td>
      <td>Subscription (individual / business)</td>
    </tr>
    <tr>
      <td>2</td>
      <td><a href="https://en.wikipedia.org/wiki/Cursor_(code_editor)">Cursor</a></td>
      <td>Anysphere</td>
      <td>2022</td>
      <td>Stand-alone IDE</td>
      <td>AI-native IDE with conversational editing across the codebase</td>
      <td>Freemium + subscription</td>
    </tr>
    <tr>
      <td>3</td>
      <td><a href="https://aider.chat/">Aider</a></td>
      <td>Open source (community)</td>
      <td>2023</td>
      <td>CLI</td>
      <td>Git-aware conversational code editing from the terminal</td>
      <td>Free (API usage paid separately)</td>
    </tr>
    <tr>
      <td>4</td>
      <td><a href="https://zed.dev/ai">Zed</a></td>
      <td>Zed Industries</td>
      <td>2024</td>
      <td>Stand-alone IDE</td>
      <td>High-performance collaborative editor with built-in AI agents</td>
      <td>Freemium + paid AI features</td>
    </tr>
    <tr>
      <td>5</td>
      <td><a href="https://openai.com/fr-FR/index/introducing-canvas">ChatGPT Canvas</a></td>
      <td>OpenAI</td>
      <td>2024</td>
      <td>Web UI (chat interface)</td>
      <td>Editable documents and live frontend rendering inside chat</td>
      <td>Freemium + ChatGPT Plus / Team</td>
    </tr>
    <tr>
      <td>6</td>
      <td><a href="https://blog.google/products/gemini/gemini-collaboration-features">Gemini Canvas</a></td>
      <td>Google</td>
      <td>2025</td>
      <td>Web UI (chat interface)</td>
      <td>Collaborative canvas with live code and document rendering</td>
      <td>Included in Gemini Advanced plans</td>
    </tr>
    <tr>
      <td>7</td>
      <td><a href="https://claude.com/product/claude-code">Claude Code</a></td>
      <td>Anthropic</td>
      <td>2025</td>
      <td>CLI</td>
      <td>Agent-based CLI introducing the notion of skills (Claude only)</td>
      <td>Paid (Anthropic API)</td>
    </tr>
    <tr>
      <td>8</td>
      <td><a href="https://openai.com/fr-FR/codex/">Codex (CLI)</a></td>
      <td>OpenAI</td>
      <td>2025</td>
      <td>CLI</td>
      <td>Autonomous coding agents for repo-level tasks (OpenAI only)</td>
      <td>Paid (usage-based)</td>
    </tr>
    <tr>
      <td>9</td>
      <td><a href="https://antigravity.google/">Antigravity</a></td>
      <td>Google</td>
      <td>2025 (November)</td>
      <td>Stand-alone IDE</td>
      <td>AI-native IDE with conversational editing across the codebase. Direct competitor to Cursor.</td>
      <td>Free for a limited period. Likely subscription (enterprise-oriented)</td>
    </tr>
  </tbody>
</table>

<p>Each of these tools come with various features, pricing models, degrees of vendor lock-in, and maturity. They all try to reduce the friction in AI assisted coding.</p>

<p>For the developer, the cognitive overhead of evaluating, adopting, and eventually abandoning these tools creates a ‘productivity tax’ that can temporarily outweigh the gains of the AI itself.</p>

<h2 id="exploration-and-adoption-of-ai-tools-a-cost-inducing-process">Exploration and adoption of AI tools: a cost inducing process</h2>

<p>My own journey using AI for coding is illustrative of the tortuous, time consuming process of exploration and learning costs associated with the adoption of new tools:</p>

<ul>
  <li>2010-2022: <a href="https://netbeans.apache.org/front/main/index.html">NetBeans</a> only. Very happy with it.</li>
  <li>2023: NetBeans + copy pasting of code snippets in Barde (now Gemini), Claude and ChatGPT. Feels weird and broken to resort to Ctrl+C and Ctrl +V but this is still very useful.</li>
  <li>2024: same as 2023. Weak attempts at exploring <a href="https://plugins.netbeans.apache.org/catalogue/?id=103">Jeddict</a>, a plugin for LLM assistance integrated in NetBeans. I did not adopt it because copy pasting to Claude, Gemini or ChatGPT is more flexible.</li>
  <li>2025
    <ol>
      <li>(Spring): still copy pasting code in Gemini, Claude and ChatGPT. Using the new canvas features of Gemini and ChatGPT to render / edit frontend files. This causes friction with my tech stack because it makes use of xhtml files, not html files. That obliges me to do some manual and AI assisted file edits between the two formats.</li>
      <li>(Summer): bored by the back and forth between .xhtml and .html formats, and by the copy pasting. I heard of Cursor of course but the 20$ monthly subscription makes me hesitate, as I already spend 20$ for OpenAI and 20$ for Gemini (plus my server costs etc). So I try  <a href="https://aider.chat/">Aider</a>, a free and open source solution to finally have in-place AI assisted editing of my files. Far from good enough, I don’t adopt it.</li>
      <li>(Fall): I try <a href="https://zed.dev/ai">Zed</a>, a kind of free and open source Cursor. The results are disappointing: slow and imprecise.</li>
      <li>(Fall): fed up with the broken process of previewing my xhtml files as html files in the canvases. <a href="https://nocodefunctions.com/blog/jsf-primefaces-vs-htmx-alpine-tailwind/">I change my tech stack</a> largely because of that. The copy pasting continues.</li>
      <li>(Fall): I finally have a try at <a href="https://en.wikipedia.org/wiki/Cursor_(code_editor)">Cursor</a>. Fantastic results. I virtually stop coding in NetBeans and use it only to launch services and test them in debugging mode. Big positive impact on my stack: I can remove a large framework (that I used for the last 10 years!) and I come back to a simpler code base.</li>
    </ol>
  </li>
  <li>2026: will try <a href="https://claude.com/product/claude-code">Claude Code</a>. Late 2025 I pushed Cursor to its limits by trying to make it interact with the services I launch: it can’t properly read their error logs and integrate them back in the conversation to iterate further. I’ve read that Claude Code does it very well. <a href="https://quesma.com/blog/claude-skills-not-antigravity/">Claude’s notion of ‘skills’ is also very promising</a>. The only issue is that Claude Code is not Windows friendly yet, so I must switch to a Linux based development environment to adopt it (<i><small>this switch to Linux is overdue of course but that’s a different story</small></i>).</li>
</ul>

<p>As can be seen from the above, I have changed from a 13-year period of complete stability in tool use to a year exploration and trial and error. The opportunity cost is real: because I spent 2025 chasing the ‘perfect’ workflow, feature development on my primary app (nocodefunctions.com) essentially froze. I traded immediate output for a total architectural and workflow refactor. A new version of the app is <a href="https://next.nocodefunction.com">slowly emerging</a>, derived from a completely renewed code base.</p>

<p>This is me as a solo developer, I can’t imagine what the process looks like at the scale of an organization which simply can’t pause, stop or refactor things in such a way. My guess is that:</p>

<ul>
  <li>in large organizations, teams will stick with their traditional IDE and just wait for it to evolve or for useful plugins for AI assistance to appear. Switching costs are just too high.</li>
  <li>in medium sized oganizations / startups, teams will switch to Cursor (many already have). Switching <em>again</em> to Claude Code is a bridge too far, and in any case Claude Code is too strong a vendor lock-in. They’ll wait a couple of months for Cursor to catch up to Claude Code.</li>
  <li>and companies that have a strong connivence with Anthropic, or the solo devs like myself who have very low switching costs, will try Claude Code.</li>
</ul>

<p>So the profusion of AI assisting tools gives this picture:</p>

<p><img alt="The endless cycle of improvement of AI tools for coding" src="https://github.com/user-attachments/assets/eec559d6-27a6-4d8c-ba97-54b8882b9793" style="max-width: 100%; width: 460px; height: auto;" /></p>

<p><em>(source: generated by the author with Gemini)</em></p>

<p>What looks like a tooling problem in software development is, in fact, an early signal of a much broader phenomenon.</p>

<h2 id="not-just-coding-the-broader-lesson-about-reskilling">Not just coding: the broader lesson about reskilling</h2>
<p>The story above shows that:</p>

<ol>
  <li>paradoxically, progress in AI can cause a temporary decrease in productivity because of the retooling it invites to do. Switching costs of all sorts are incurred and production has to slow or stop to make time for the exploration of these new tools. Discovery process, learning of the UI, evaluation…</li>
  <li>retooling has strong bandwagon effects. New tools are not just about a “better or lower performance”: they open new opportunities and have specific limits which invite to rethink the material that is worked on by the tool, and even aspects of the general environment where we are operating.</li>
  <li><strong>it is not just a story about coding. The same is happening in visual creation, for example. Look at this list of <a href="https://nocodefunctions.com/blog/list-of-ai-apps-for-visual-creation/">100+ tools for AI assisted visual creation</a> I maintain: it would be foolish to think that the potential of these tools is simply measurable in terms of “is the result better or worse, is productivity higher or lower?” Workflows, aesthetics, domains of expression, cost models, team work, methodologies, skillsets, pace of production, … in a word, the entire domain and industry is turned upside down.</strong></li>
</ol>

<h2 id="what-to-make-of-it">What to make of it?</h2>
<p>This is a pretty long blog post to arrive at this simple conclusion: the endless competition between AI models providers can give the false impression that as professionals, we can rest in our armchairs and just wait and benefit from this continuous stream of improvements. This is a very false sense of comfort.</p>

<p>We are moving from an era of <strong>tool mastery</strong> (learning one type of instrument: an investment to be repaid over decades) to an era of <strong>tool fluidity</strong> (accepting to unlearn and reinvest in fundamentally new instruments, regularly). The competitive advantage is no longer just knowing how to master a set of professional skills, but how quickly one can integrate these skills in new AI-native workflows without breaking momentum.</p>

<p>From the perspective of a professional in higher education, this means that the often repeated:</p>

<blockquote>
  <p>“we don’t train our students for a particular tool, we train them in fundamental skills”</p>
</blockquote>

<p>… has a renewed sense of relevance and urgency. Because in practice, we do tend to rely on the obvious workhorses of the trade. Just pick an IDE for coding, learn the Adobe Creative Cloud for visual creation, and choose Blender or Maya for 3D modelling - obviously, right? Well, it might be time for a rethink and train students in the art and craft of resetting their fundamental tooling suite on a regular basis.</p>

<p>In a world where tools now have a half-life measured in years, not decades, learning to retool quickly is no longer a support skill — it is a core professional competence.</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a free, point-and-click tool for exploring texts and networks. It’s <a href="https://github.com/seinecle/nocodefunctions">fully open source</a>. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="ai" /><category term="productivity" /><category term="cursor" /><category term="claude" /><category term="llm" /><category term="tools" /><category term="tooling" /><category term="antigravity" /><category term="netbeans" /><category term="ide" /><summary type="html"><![CDATA[Every week, a new “SOTA” (State of the Art) model is announced, promising higher reasoning capabilities and (often) lower costs. We could be led to think that we are entering an era of infinite, frictionless productivity. But the reality is messier. While the models are getting smarter, the gap between “intelligence on tap” and “completing a task” is managed by our tools and right now, that tooling interface is becoming a major source of friction. As we will see, this isn’t just a developer’s dilemma in the context of new AI assisted coding interfaces. It is a preview of the “retooling tax” that every professional domain must soon learn to navigate. The paradox is simple: as models improve, productivity bottlenecks increasingly shift away from intelligence itself and toward the tools that mediate access to it. The race for better models This is the popular meme reflecting the merry-go-round of weekly improvements of AI models: (source. other versions of this meme do include Anthropic’s Claude, if you wonder) LLMs become more capable, cheaper, and available on tap, to the point that the new best performing model can be indistinguishable from the previous one, simply because models are now so smart that the tasks we perform are not complex enough to clearly differentiate between “a great model” and an “even greater model”: both perform equally well on the tests. This is the experience of Simon Willison when testing a preview of Claude Opus 4.5 on November 24, 2025: It’s clearly an excellent new model, but I did run into a catch. My preview expired at 8pm on Sunday when I still had a few remaining issues in the milestone for the alpha [of his coding project]. I switched back to Claude Sonnet 4.5 and… kept on working at the same pace I’d been achieving with the new model. With hindsight, production coding like this is a less effective way of evaluating the strengths of a new model than I had expected. I’m not saying the new model isn’t an improvement on Sonnet 4.5—but I can’t say with confidence that the challenges I posed it were able to identify a meaningful difference in capabilities between the two. This experience reflects that for some tasks, we have seemingly reached a plateau: models are already “clever enough”. Model providers continue the race the bottom for costs and hallucination rates, while constantly reaching new heights for task completion duration and overall performance. From the user’s perspective, however, the experience still falls short of the promise of effortless productivity: intelligence may be abundant, but friction remains pervasive. I will illustrate this with the case of coding tasks, before returning to the broader picture. The tooling paradox Making use of generative AI in a coding task is actually not as straightforward as just asking “solve this problem / respond to this difficult question” and then just collecting the answer. Here are some essential milestones in the short history of tools that have been evolved to ease this process. # Name Owning company First public release Interface type Key features (1 line) Cost model 1 GitHub Copilot GitHub (Microsoft) 2021 IDE extension (VS Code, JetBrains…) Inline code completion and chat powered by LLMs Subscription (individual / business) 2 Cursor Anysphere 2022 Stand-alone IDE AI-native IDE with conversational editing across the codebase Freemium + subscription 3 Aider Open source (community) 2023 CLI Git-aware conversational code editing from the terminal Free (API usage paid separately) 4 Zed Zed Industries 2024 Stand-alone IDE High-performance collaborative editor with built-in AI agents Freemium + paid AI features 5 ChatGPT Canvas OpenAI 2024 Web UI (chat interface) Editable documents and live frontend rendering inside chat Freemium + ChatGPT Plus / Team 6 Gemini Canvas Google 2025 Web UI (chat interface) Collaborative canvas with live code and document rendering Included in Gemini Advanced plans 7 Claude Code Anthropic 2025 CLI Agent-based CLI introducing the notion of skills (Claude only) Paid (Anthropic API) 8 Codex (CLI) OpenAI 2025 CLI Autonomous coding agents for repo-level tasks (OpenAI only) Paid (usage-based) 9 Antigravity Google 2025 (November) Stand-alone IDE AI-native IDE with conversational editing across the codebase. Direct competitor to Cursor. Free for a limited period. Likely subscription (enterprise-oriented) Each of these tools come with various features, pricing models, degrees of vendor lock-in, and maturity. They all try to reduce the friction in AI assisted coding. For the developer, the cognitive overhead of evaluating, adopting, and eventually abandoning these tools creates a ‘productivity tax’ that can temporarily outweigh the gains of the AI itself. Exploration and adoption of AI tools: a cost inducing process My own journey using AI for coding is illustrative of the tortuous, time consuming process of exploration and learning costs associated with the adoption of new tools: 2010-2022: NetBeans only. Very happy with it. 2023: NetBeans + copy pasting of code snippets in Barde (now Gemini), Claude and ChatGPT. Feels weird and broken to resort to Ctrl+C and Ctrl +V but this is still very useful. 2024: same as 2023. Weak attempts at exploring Jeddict, a plugin for LLM assistance integrated in NetBeans. I did not adopt it because copy pasting to Claude, Gemini or ChatGPT is more flexible. 2025 (Spring): still copy pasting code in Gemini, Claude and ChatGPT. Using the new canvas features of Gemini and ChatGPT to render / edit frontend files. This causes friction with my tech stack because it makes use of xhtml files, not html files. That obliges me to do some manual and AI assisted file edits between the two formats. (Summer): bored by the back and forth between .xhtml and .html formats, and by the copy pasting. I heard of Cursor of course but the 20$ monthly subscription makes me hesitate, as I already spend 20$ for OpenAI and 20$ for Gemini (plus my server costs etc). So I try Aider, a free and open source solution to finally have in-place AI assisted editing of my files. Far from good enough, I don’t adopt it. (Fall): I try Zed, a kind of free and open source Cursor. The results are disappointing: slow and imprecise. (Fall): fed up with the broken process of previewing my xhtml files as html files in the canvases. I change my tech stack largely because of that. The copy pasting continues. (Fall): I finally have a try at Cursor. Fantastic results. I virtually stop coding in NetBeans and use it only to launch services and test them in debugging mode. Big positive impact on my stack: I can remove a large framework (that I used for the last 10 years!) and I come back to a simpler code base. 2026: will try Claude Code. Late 2025 I pushed Cursor to its limits by trying to make it interact with the services I launch: it can’t properly read their error logs and integrate them back in the conversation to iterate further. I’ve read that Claude Code does it very well. Claude’s notion of ‘skills’ is also very promising. The only issue is that Claude Code is not Windows friendly yet, so I must switch to a Linux based development environment to adopt it (this switch to Linux is overdue of course but that’s a different story). As can be seen from the above, I have changed from a 13-year period of complete stability in tool use to a year exploration and trial and error. The opportunity cost is real: because I spent 2025 chasing the ‘perfect’ workflow, feature development on my primary app (nocodefunctions.com) essentially froze. I traded immediate output for a total architectural and workflow refactor. A new version of the app is slowly emerging, derived from a completely renewed code base. This is me as a solo developer, I can’t imagine what the process looks like at the scale of an organization which simply can’t pause, stop or refactor things in such a way. My guess is that: in large organizations, teams will stick with their traditional IDE and just wait for it to evolve or for useful plugins for AI assistance to appear. Switching costs are just too high. in medium sized oganizations / startups, teams will switch to Cursor (many already have). Switching again to Claude Code is a bridge too far, and in any case Claude Code is too strong a vendor lock-in. They’ll wait a couple of months for Cursor to catch up to Claude Code. and companies that have a strong connivence with Anthropic, or the solo devs like myself who have very low switching costs, will try Claude Code. So the profusion of AI assisting tools gives this picture: (source: generated by the author with Gemini) What looks like a tooling problem in software development is, in fact, an early signal of a much broader phenomenon. Not just coding: the broader lesson about reskilling The story above shows that: paradoxically, progress in AI can cause a temporary decrease in productivity because of the retooling it invites to do. Switching costs of all sorts are incurred and production has to slow or stop to make time for the exploration of these new tools. Discovery process, learning of the UI, evaluation… retooling has strong bandwagon effects. New tools are not just about a “better or lower performance”: they open new opportunities and have specific limits which invite to rethink the material that is worked on by the tool, and even aspects of the general environment where we are operating. it is not just a story about coding. The same is happening in visual creation, for example. Look at this list of 100+ tools for AI assisted visual creation I maintain: it would be foolish to think that the potential of these tools is simply measurable in terms of “is the result better or worse, is productivity higher or lower?” Workflows, aesthetics, domains of expression, cost models, team work, methodologies, skillsets, pace of production, … in a word, the entire domain and industry is turned upside down. What to make of it? This is a pretty long blog post to arrive at this simple conclusion: the endless competition between AI models providers can give the false impression that as professionals, we can rest in our armchairs and just wait and benefit from this continuous stream of improvements. This is a very false sense of comfort. We are moving from an era of tool mastery (learning one type of instrument: an investment to be repaid over decades) to an era of tool fluidity (accepting to unlearn and reinvest in fundamentally new instruments, regularly). The competitive advantage is no longer just knowing how to master a set of professional skills, but how quickly one can integrate these skills in new AI-native workflows without breaking momentum. From the perspective of a professional in higher education, this means that the often repeated: “we don’t train our students for a particular tool, we train them in fundamental skills” … has a renewed sense of relevance and urgency. Because in practice, we do tend to rely on the obvious workhorses of the trade. Just pick an IDE for coding, learn the Adobe Creative Cloud for visual creation, and choose Blender or Maya for 3D modelling - obviously, right? Well, it might be time for a rethink and train students in the art and craft of resetting their fundamental tooling suite on a regular basis. In a world where tools now have a half-life measured in years, not decades, learning to retool quickly is no longer a support skill — it is a core professional competence. About Me I’m an academic and independent web app developer. I created nocode functions, a free, point-and-click tool for exploring texts and networks. It’s fully open source. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">Review of Empire of AI by Karen Hao</title><link href="https://nocodefunctions.com/blog/karen-hao-empire-of-ai/" rel="alternate" type="text/html" title="Review of Empire of AI by Karen Hao" /><published>2025-12-13T00:00:00+00:00</published><updated>2025-12-13T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/karen-hao-empire-of-ai</id><content type="html" xml:base="https://nocodefunctions.com/blog/karen-hao-empire-of-ai/"><![CDATA[<p>Published in May 2025, <a href="https://www.penguin.co.uk/books/460331/empire-of-ai-by-hao-karen/9780241678923"><em>Empire of AI</em></a> is a masterful piece of investigative reporting by <a href="https://karendhao.com/">Karen Hao</a>, a journalist who has been following the AI tech scene in the US for the last 15 years or so, with a special focus on OpenAI. The subtitle in my edition gives away the thesis defended in the book: <em>Inside the reckless race for total domination</em>.</p>

<p><img alt="Book cover of Karen Hao's Empire of AI" src="https://github.com/user-attachments/assets/94a8a9e3-ef5b-4d94-85ed-6ee0c3171e0b" style="max-width: 100%; width: 460px; height: auto;" /></p>

<h2 id="tldr">TL;DR</h2>
<p>I fully recommend this book. It is an example of rigorous investigative journalism. It documents several dimensions of the development of generative AI:</p>

<ul>
  <li>the exploitation of digital labor workers in Venezuela and Kenya, who help post-train AI models by labeling offensive / disturbing / frankly psychologically damaging content</li>
  <li>the exploitation of communities in the Global South for their resources in fresh (potable) water to cool data centers</li>
  <li>the birth of OpenAI, the creation of GPT, and the split that led to the creation of Anthropic</li>
  <li>the character of Sam Altman</li>
</ul>

<h2 id="the-thesis">The thesis</h2>
<p>The thesis defended by Karen Hao is that Sam Altman is building an empire with OpenAI in a ruthless way: extractive in nature, leading to a massive concentration of a new kind of wealth, and driven by an unlimited thirst for power.</p>

<p>To give some perspective, Hao draws on Daron Acemoglu and Simon Johnson’s <a href="https://shapingwork.mit.edu/power-and-progress/"><em>Power and Progress</em> (PublicAffairs, 2023)</a>: generative AI is one of those fundamental technologies (like the cotton gin) that can increase productivity to new levels and create immense new wealth in a given industry, but at tremendous social, political, and environmental costs. In the case of the cotton gin, it expanded and entrenched slavery-based cotton production in the US.</p>

<p>Through meticulous, decade-long reporting, Karen Hao documents the multiple dimensions of this empire-building activity. There are 40 pages of detailed endnotes that provide sources for all the assertions she makes in the book, including interviews with hundreds of actors who played a role in the development of OpenAI or were impacted by it.</p>

<h2 id="i-am-not-convinced-by">I am not convinced by…</h2>
<p>Karen Hao chooses to include and document Annie Altman’s life story, in an effort to fully document Sam Altman’s personality and worldview. No doubt it was a long-matured decision, and there are emerging directions in journalism that can justify this approach.</p>

<p>I was reminded, for example, of Elon Musk’s conflictual relationship with his father. At Elon Musk’s request, <a href="https://www.penguin.co.uk/books/419660/elon-musk-by-ashlee-vance/9780753555644">his first biographer</a> chose not to address this issue; in return, the author gained elevated access to Musk.</p>

<p><a href="https://www.simonandschuster.com/books/Elon-Musk/Walter-Isaacson/9781982181284">His second biographer</a> chose the opposite. Delving into* Musk’s relationship with his father became a central key to the psyche of his subject, and my impression is that the second biography provides deeper, more valuable insights into Musk’s trajectory.</p>

<p>* NB : yes I am in control of this sentence and this particular verb</p>

<p>But in the case of Sam Altman’s relationship with his sister, my personal impression is that it does not provide a missing key to his psyche, decisions, or trajectory. In consequence, it left me ill at ease. Discussing how individuals live and cope with close relatives who suffer mental health issues and then making broad, fragile inferences from it: it is a tough call.</p>

<p>Second, and more fundamentally, I am left uncertain by the overall framing. A critical viewpoint is necessary, and this 482-page critical history of OpenAI and generative AI is absolutely worth reading. “This book is not a corporate book,” the author states clearly in a preliminary note. But as it stands, the story could create the impression that generative AI only causes harm. Its benefits are left unmentioned, beyond mandatory and cursory nods.</p>

<p>I suppose there is a legitimate division of labor in reporting: one book is not supposed to be a kaleidoscope of all viewpoints on a given subject. Still, the imbalance is noticeable. I encourage everyone to read <a href="https://www.penguinrandomhouse.com/books/741805/co-intelligence-by-ethan-mollick/">Ethan Mollick’s <em>Co-Intelligence</em> (2024)</a> alongside Karen Hao’s book to develop that balance.</p>

<h2 id="last-impression">Last impression</h2>
<p>The creation and evolution of OpenAI; Sam Altman, Greg Brockman, Ilya Sutskever, and Mira Murati and their relationships; the watershed moment of ChatGPT on November 30, 2022; the ousting and reinstatement of Sam Altman; the split that led some OpenAI employees to create Anthropic; the electricity and water costs of new data centers built to train AI models; the theft of copyrighted material through unfiltered, blanket scraping of the web; and the exploitation of workers to fine-tune these models: this book provides fact-checked insider detail on all these crucial issues, with rigor and strong independence. For all these reasons, I strongly recommend reading it.</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a>, a free, point-and-click tool for exploring texts and networks. It’s <a href="https://github.com/seinecle/nocodefunctions">fully open source</a>. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a></li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a></li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="book" /><category term="review" /><summary type="html"><![CDATA[Published in May 2025, Empire of AI is a masterful piece of investigative reporting by Karen Hao, a journalist who has been following the AI tech scene in the US for the last 15 years or so, with a special focus on OpenAI. The subtitle in my edition gives away the thesis defended in the book: Inside the reckless race for total domination. TL;DR I fully recommend this book. It is an example of rigorous investigative journalism. It documents several dimensions of the development of generative AI: the exploitation of digital labor workers in Venezuela and Kenya, who help post-train AI models by labeling offensive / disturbing / frankly psychologically damaging content the exploitation of communities in the Global South for their resources in fresh (potable) water to cool data centers the birth of OpenAI, the creation of GPT, and the split that led to the creation of Anthropic the character of Sam Altman The thesis The thesis defended by Karen Hao is that Sam Altman is building an empire with OpenAI in a ruthless way: extractive in nature, leading to a massive concentration of a new kind of wealth, and driven by an unlimited thirst for power. To give some perspective, Hao draws on Daron Acemoglu and Simon Johnson’s Power and Progress (PublicAffairs, 2023): generative AI is one of those fundamental technologies (like the cotton gin) that can increase productivity to new levels and create immense new wealth in a given industry, but at tremendous social, political, and environmental costs. In the case of the cotton gin, it expanded and entrenched slavery-based cotton production in the US. Through meticulous, decade-long reporting, Karen Hao documents the multiple dimensions of this empire-building activity. There are 40 pages of detailed endnotes that provide sources for all the assertions she makes in the book, including interviews with hundreds of actors who played a role in the development of OpenAI or were impacted by it. I am not convinced by… Karen Hao chooses to include and document Annie Altman’s life story, in an effort to fully document Sam Altman’s personality and worldview. No doubt it was a long-matured decision, and there are emerging directions in journalism that can justify this approach. I was reminded, for example, of Elon Musk’s conflictual relationship with his father. At Elon Musk’s request, his first biographer chose not to address this issue; in return, the author gained elevated access to Musk. His second biographer chose the opposite. Delving into* Musk’s relationship with his father became a central key to the psyche of his subject, and my impression is that the second biography provides deeper, more valuable insights into Musk’s trajectory. * NB : yes I am in control of this sentence and this particular verb But in the case of Sam Altman’s relationship with his sister, my personal impression is that it does not provide a missing key to his psyche, decisions, or trajectory. In consequence, it left me ill at ease. Discussing how individuals live and cope with close relatives who suffer mental health issues and then making broad, fragile inferences from it: it is a tough call. Second, and more fundamentally, I am left uncertain by the overall framing. A critical viewpoint is necessary, and this 482-page critical history of OpenAI and generative AI is absolutely worth reading. “This book is not a corporate book,” the author states clearly in a preliminary note. But as it stands, the story could create the impression that generative AI only causes harm. Its benefits are left unmentioned, beyond mandatory and cursory nods. I suppose there is a legitimate division of labor in reporting: one book is not supposed to be a kaleidoscope of all viewpoints on a given subject. Still, the imbalance is noticeable. I encourage everyone to read Ethan Mollick’s Co-Intelligence (2024) alongside Karen Hao’s book to develop that balance. Last impression The creation and evolution of OpenAI; Sam Altman, Greg Brockman, Ilya Sutskever, and Mira Murati and their relationships; the watershed moment of ChatGPT on November 30, 2022; the ousting and reinstatement of Sam Altman; the split that led some OpenAI employees to create Anthropic; the electricity and water costs of new data centers built to train AI models; the theft of copyrighted material through unfiltered, blanket scraping of the web; and the exploitation of workers to fine-tune these models: this book provides fact-checked insider detail on all these crucial issues, with rigor and strong independence. For all these reasons, I strongly recommend reading it. About Me I’m an academic and independent web app developer. I created nocode functions, a free, point-and-click tool for exploring texts and networks. It’s fully open source. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com Bluesky: @seinecle Blog: Read more articles on app development and data exploration.]]></summary></entry><entry><title type="html">November 2025: China on my mind</title><link href="https://nocodefunctions.com/blog/china-on-my-mind/" rel="alternate" type="text/html" title="November 2025: China on my mind" /><published>2025-11-13T00:00:00+00:00</published><updated>2025-11-13T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/china-on-my-mind</id><content type="html" xml:base="https://nocodefunctions.com/blog/china-on-my-mind/"><![CDATA[<p>I feel a bit sorry for the gloomy tone of this post (at least from a European vantage point), but the developments below are worth pointing and discussing.</p>

<p>↗️ in increasing order of significance, with a tie for the last two:</p>

<ul>
  <li>november 05: <a href="https://www.lemonde.fr/en/france/article/2025/11/05/shein-opens-first-permanent-store-in-paris-amid-heavy-police-presence_6747136_7.html">Shein opens within BHV, a Parisian flagship store, triggers protests</a></li>
  <li>november 12: <a href="https://www.lemonde.fr/en/economy/article/2025/11/12/amid-shein-controversy-chinese-e-commerce-giant-jd-com-sets-sights-on-european-market_6747395_19.html">JD, broadly comparable to a B2B Amazon, takes an increased participation in European retail stores</a> - <a href="https://archive.is/kR6cn">archived version</a></li>
  <li>november 11: <a href="https://www.ft.com/content/9fe8f588-5383-4fde-b2f7-11fcbb206384">How the world’s biggest mining project is a win for China</a> - <a href="https://archive.is/bLAyv">archived version</a></li>
  <li>november 12: <a href="https://www.ft.com/content/239eed1b-a268-42ec-861e-fc3047f47c32">Can anything halt the decline of German industry?</a> - <a href="https://archive.is/v1zSg">archived version</a></li>
</ul>

<p>The decline of the German industry relative to the Chinese industry is not a surprise as it was decades in the making. This is still a shocking wake up call to see Germany suffering a trade deficit in manufacturing equipment with China for the first time, in 2025:</p>

<p><img width="737" height="608" alt="2025 - Germany having a trade deficit with China on capital goods for the first time" src="https://github.com/user-attachments/assets/74d02af8-adc1-4316-ba99-66f64dc22d4f" /></p>

<p>This has dire implications for Germany itself but also directly for Europe. Germany is the prime contributor to the EU budget which is an engine for redistribution, investment, research and education, cultural initiatives all across European countries.
If you live in Europe, you must be familiar with these signs on public buildings being renovated (schools, museums, infrastructures…), “EU participated to the funding of this equipment”.</p>

<p>If and as Germany’s welfare state shrinks because of the relative decline of their industries, Germany will reduce their participation to the EU budget. By the way all other EU countries are in the same situation as Germany relative to China, so that is going to be a general movement. It is just that Germany was anchored in everyone’s psyche as the “leader of the European and world industry and structural net exporter of machinery”. China was considered as playing catch up but still behind.</p>

<h1 id="what-to-make-of-it-in-the-coming-years">What to make of it in the coming years?</h1>

<ul>
  <li>in areas where EU investment matters (and name one where it doesn’t?), we should brace for more difficult times. Culture, education, research.</li>
  <li>increase in defense spending by Germany and other EU countries as a way to maintain their industry afloat. Not a reassuring playbook, if history is any guide.</li>
</ul>

<p>This particular consequence is explicitly mentioned <a href="https://archive.is/v1zSg">in the article above</a>:</p>

<blockquote>
  <p>“Some are holding out hope that demand for defence will help rescue Germany’s industrial sector”</p>
</blockquote>

<p>(and read the following paragraphs that substantiate the argument)</p>

<ul>
  <li>increased tensions between local and global powers in Africa. Also not reassuring.</li>
  <li><a href="https://nocodefunctions.com/blog/ai-robotics-china-development/#what-to-make-of-it-my-impressions">other broad consequences</a> I discussed in my blog post from last month</li>
</ul>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a> 🔎, a free, point-and-click tool for exploring texts and networks. It’s <a href="https://github.com/seinecle/nocodefunctions">fully open source</a>. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a> 📧</li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a> 📱</li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> 👓 on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="china" /><category term="eu" /><summary type="html"><![CDATA[I feel a bit sorry for the gloomy tone of this post (at least from a European vantage point), but the developments below are worth pointing and discussing. ↗️ in increasing order of significance, with a tie for the last two: november 05: Shein opens within BHV, a Parisian flagship store, triggers protests november 12: JD, broadly comparable to a B2B Amazon, takes an increased participation in European retail stores - archived version november 11: How the world’s biggest mining project is a win for China - archived version november 12: Can anything halt the decline of German industry? - archived version The decline of the German industry relative to the Chinese industry is not a surprise as it was decades in the making. This is still a shocking wake up call to see Germany suffering a trade deficit in manufacturing equipment with China for the first time, in 2025: This has dire implications for Germany itself but also directly for Europe. Germany is the prime contributor to the EU budget which is an engine for redistribution, investment, research and education, cultural initiatives all across European countries. If you live in Europe, you must be familiar with these signs on public buildings being renovated (schools, museums, infrastructures…), “EU participated to the funding of this equipment”. If and as Germany’s welfare state shrinks because of the relative decline of their industries, Germany will reduce their participation to the EU budget. By the way all other EU countries are in the same situation as Germany relative to China, so that is going to be a general movement. It is just that Germany was anchored in everyone’s psyche as the “leader of the European and world industry and structural net exporter of machinery”. China was considered as playing catch up but still behind. What to make of it in the coming years? in areas where EU investment matters (and name one where it doesn’t?), we should brace for more difficult times. Culture, education, research. increase in defense spending by Germany and other EU countries as a way to maintain their industry afloat. Not a reassuring playbook, if history is any guide. This particular consequence is explicitly mentioned in the article above: “Some are holding out hope that demand for defence will help rescue Germany’s industrial sector” (and read the following paragraphs that substantiate the argument) increased tensions between local and global powers in Africa. Also not reassuring. other broad consequences I discussed in my blog post from last month About Me I’m an academic and independent web app developer. I created nocode functions 🔎, a free, point-and-click tool for exploring texts and networks. It’s fully open source. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com 📧 Bluesky: @seinecle 📱 Blog: Read more articles 👓 on app development and data exploration.]]></summary></entry><entry><title type="html">Comparing JSF + PrimeFaces 🆚 HTMX + Alpine</title><link href="https://nocodefunctions.com/blog/jsf-primefaces-vs-htmx-alpine-tailwind/" rel="alternate" type="text/html" title="Comparing JSF + PrimeFaces 🆚 HTMX + Alpine" /><published>2025-10-23T00:00:00+00:00</published><updated>2025-10-23T00:00:00+00:00</updated><id>https://nocodefunctions.com/blog/JSF-primefaces-vs-htmx-alpine-tailwind</id><content type="html" xml:base="https://nocodefunctions.com/blog/jsf-primefaces-vs-htmx-alpine-tailwind/"><![CDATA[<h3 id="why-a-java-stack-for-the-front-end">Why a Java stack for the front-end?</h3>

<p>I’ve been developing <a href="https://nocodefunctions.com">nocodefunctions.com</a> since 2021. My skills (and, frankly, my taste) for the key technologies in front-end development (CSS and JS) are very limited:</p>

<p><img src="https://github.com/user-attachments/assets/5903b606-3238-4c91-9fad-f966476d269c" alt="css-is-awesome" /></p>

<p>For this reason, and because I enjoy developing in Java, my entire stack is Java: <a href="https://github.com/jakartaee/faces">JSF</a> + <a href="https://showcase.primefaces.org">Primefaces</a> for the front-end, integrated with the backend through <a href="https://jakarta.ee/learn/starter-guides/">JakartaEE</a> that manages both.</p>

<p><a href="https://nocodefunctions.com/blog/java-frontend-web-app/">This stack served me very well</a>: it did the job. The web app displays complex data tables, it includes an image cropper function so that a user can select a region on specific pdf pages … pretty advanced stuff for somebody who doesn’t want to touch Javascript even with a stick. It is even <a href="https://nocodefunctions.com/blog/translated-web-app-in-107-languages-i18n/">internationalized on 107 languages</a>, and is fully responsive.</p>

<p>As a solo developer with limited spare time for this side project, I managed all this while still developing and expanding the app’s core features. It has handled <a href="https://public.nocodefunctions.com/">hundreds or thousands of requests per month</a>.</p>

<h3 id="why-reconsider-my-java-stack">Why reconsider my Java stack?</h3>

<p>Today, I’m exploring whether I could achieve a better, more personal design for the website.</p>

<p>I tried first customizing the css of the pages with <a href="https://tailwindcss.com/">Tailwind</a> but quickly realized it conflicts with the css theme applied by default by Primefaces. There are ways to have Tailwind and Primefaces theming to work hand in hand but they involve to setup a dedicated scaffolding to manage it, which adds cognitive load and will be a burdeon to maintain in the long term.</p>

<p>I also use Gemini or ChatGPT’s canvases extensively to prototype this redesign. However these tools can’t render the XHTML files central to my current tech stack, while they render HTML + CSS + JS effortlessly.</p>

<p>So I came to wonder:</p>

<blockquote>
  <p>what if I made a different choice for my frontend stack, for a better experience as a developer? What would I loose, what would I gain?</p>
</blockquote>

<p>It’s easy to assume that ditching JSF and PrimeFaces would simplify things, but what exactly would I lose? And what new difficulties would appear?</p>

<p>Here is a comparison between my current stack (JSF + Primefaces) and the alternative I am considering (HTMX + Alpine.js + Tailwind)</p>

<blockquote>
  <p><strong>nota bene</strong> : I am well aware that JSF and Primefaces can work with Tailwind with no fuss, so one might find it unfair to pit JSF + Primefaces against a solution with Tailwind. But as I said above, making Tailwind work in coherence with Primefaces needs some extra tooling which I personally find too heavy, compared to “just add Tailwind” in the HTMX + Alpine solution.</p>
</blockquote>

<h3 id="comparison-from-the-point-of-view-of-jsf--primefaces-strengths">Comparison: from the point of view of JSF + Primefaces strengths</h3>

<table>
  <thead>
    <tr>
      <th> </th>
      <th><strong>JSF + PrimeFaces (strengths)</strong></th>
      <th><strong>HTMX + Alpine.js (cons)</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>No need to touch css or js, or very minimally</td>
      <td>it is all about adding html attributes, css classes and js (but a lot of complexity remains hidden)</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Complex components provided out of the box (data tables, image croppers, etc.)</td>
      <td>Lacks complex components — requires specific JS libraries and custom backend code</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Strong IDE integration: refactoring a backend method refactors the front end as well</td>
      <td>Logic is separated — no automatic synchronization between front and back</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Same programming language and framework on both sides (e.g., file upload easily integrated)</td>
      <td>Different languages/frameworks: file upload must be fully defined on both ends</td>
    </tr>
    <tr>
      <td>5</td>
      <td>User session management provided out of the box</td>
      <td>No session mechanism — must be implemented manually (cookies, tokens, etc.)</td>
    </tr>
    <tr>
      <td>6</td>
      <td>Security and accessibility built into the framework</td>
      <td>No built-in security or accessibility mechanisms</td>
    </tr>
    <tr>
      <td>7</td>
      <td>Easy internationalization (i18n) support</td>
      <td>No i18n provided by default</td>
    </tr>
    <tr>
      <td>8</td>
      <td>Coherent default styling with theme support</td>
      <td>Styling must be designed entirely from scratch</td>
    </tr>
    <tr>
      <td>9</td>
      <td>Proven, long-term ecosystem (20+ years, likely stable for 20 more)</td>
      <td>Younger frameworks — shorter historical lifespan and uncertain long-term support</td>
    </tr>
  </tbody>
</table>

<hr />

<h3 id="now-from-the-point-of-view-of-htmx--alpine--tailwind-strengths">Now from the point of view of HTMX + Alpine + Tailwind strengths…</h3>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th><strong>HTMX + Alpine.js + Tailwind (strengths)</strong></th>
      <th><strong>JSF + PrimeFaces (cons)</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Static HTML files (not server-generated): easy to host, patch, and reload; ensures fast loading</td>
      <td>XHTML pages are server-generated, requiring full app redeployment (including backend) for any small UI or CSS/JS change</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Simple Nginx setup: one route for static assets, one for each API endpoint</td>
      <td>Complex Nginx configuration required for JSF applications</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Transparent handling of Server-Sent Events (SSE), including through Nginx</td>
      <td>SSE handling is a “black box,” difficult to debug behind a proxy</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Manual styling = total creative freedom and perfect consistency between pages and components</td>
      <td>Default component styling is hard to override and align with custom page design</td>
    </tr>
    <tr>
      <td>5</td>
      <td>Excellent compatibility with LLMs (HTML/CSS/JS easily generated and previewed)</td>
      <td>LLMs cannot preview XHTML pages — breaks interactive design workflows</td>
    </tr>
    <tr>
      <td>6</td>
      <td>Strong and active open-source community (HTMX, Alpine, Tailwind)</td>
      <td>JSF and PrimeFaces communities are small and aging</td>
    </tr>
    <tr>
      <td>7</td>
      <td>Close to native HTML: lightweight, transparent, and easily replaceable if needed</td>
      <td>Heavy abstraction over HTML, with complex internal JS/CSS layers that obscure rendering and server interaction</td>
    </tr>
  </tbody>
</table>

<h2 id="-decision-after-comparison">🔀 Decision after comparison</h2>

<p>What made me tilt towards HTMX + Alpine + Tailwind is that LLMs can handle it for me, removing my biggest obstacle (“I hate css and js, they are too brittle”).</p>

<p>Don’t jump and shame me (“ohh he is fine with vibe coding and AI slop!”). By sticking to very simple frameworks like HTMX, Tailwind and Alpine,  I remain very close to the native HTML of the pages. This means the generated HTML, CSS classes and JS are not a black box I have to trust blindly. I’ll be able to debug, modify, and remove them if necessary, in a way that is much more transparent than I was in my current situation with JSF.</p>

<p>And the benefits of the switch are mouth-watering: I’ll finally be able to design pages in a more personal and distinctive way than the design I was stuck with until now.</p>

<p>Don’t get me wrong: I am grateful to JSF and Primefaces for providing the tools that allowed me to create a functional and (to my standards) successful web app without touching CSS and JS, which I dare anyone trying without these Java techs. But LLMs change the game. They reduce the need for such heavy frameworks. Coding closer to native HTML, CSS and JS is now a viable, even enjoyable option.</p>

<p>This new stack does come with trade-offs: some features will be dropped because they’re too time-consuming to rebuild. For instance, the complex UI with data tables and the “PDF region selector” using an image cropper. That is a trade-off I’m ready to make. Also, I will need to write the logic of user session management myself, which will be frankly boring and error-prone. That is what worries me the most about this refactoring.</p>

<h2 id="-results-lets-wait-for-the-refactoring">🎯 Results: let’s wait for the refactoring</h2>

<p>I am currently working at this refactoring. Visit <a href="https://nocodefunctions.com">nocodefunctions.com</a> to see how it looks with the current Java stack, and come back in a few months, realistically, to see how it has evolved.</p>

<p>[EDIT December 14, 2025 -&gt; visit <a href="https://next.nocodefunctions.com">next.nocodefunctions.com</a> for a live preview of the refactoring in progress]</p>

<hr />
<h1 id="about-me">About Me</h1>

<p>I’m an academic and independent web app developer. I created <a href="https://nocodefunctions.com">nocode functions</a> 🔎, a free, point-and-click tool for exploring texts and networks. It’s <a href="https://github.com/seinecle/nocodefunctions">fully open source</a>. Try it out and let me know what you think. I’d love your feedback!</p>

<ul>
  <li><strong>Email:</strong> <a href="mailto:analysis@exploreyourdata.com">analysis@exploreyourdata.com</a> 📧</li>
  <li><strong>Bluesky:</strong> <a href="https://bsky.app/profile/seinecle.bsky.social">@seinecle</a> 📱</li>
  <li><strong>Blog:</strong> <a href="https://nocodefunctions.com/blog">Read more articles</a> 👓 on app development and data exploration.</li>
</ul>]]></content><author><name></name></author><category term="frameworks" /><category term="web development" /><category term="java" /><category term="JSF" /><category term="primefaces" /><category term="htmx" /><category term="alpine" /><category term="tailwind" /><summary type="html"><![CDATA[Why a Java stack for the front-end? I’ve been developing nocodefunctions.com since 2021. My skills (and, frankly, my taste) for the key technologies in front-end development (CSS and JS) are very limited: For this reason, and because I enjoy developing in Java, my entire stack is Java: JSF + Primefaces for the front-end, integrated with the backend through JakartaEE that manages both. This stack served me very well: it did the job. The web app displays complex data tables, it includes an image cropper function so that a user can select a region on specific pdf pages … pretty advanced stuff for somebody who doesn’t want to touch Javascript even with a stick. It is even internationalized on 107 languages, and is fully responsive. As a solo developer with limited spare time for this side project, I managed all this while still developing and expanding the app’s core features. It has handled hundreds or thousands of requests per month. Why reconsider my Java stack? Today, I’m exploring whether I could achieve a better, more personal design for the website. I tried first customizing the css of the pages with Tailwind but quickly realized it conflicts with the css theme applied by default by Primefaces. There are ways to have Tailwind and Primefaces theming to work hand in hand but they involve to setup a dedicated scaffolding to manage it, which adds cognitive load and will be a burdeon to maintain in the long term. I also use Gemini or ChatGPT’s canvases extensively to prototype this redesign. However these tools can’t render the XHTML files central to my current tech stack, while they render HTML + CSS + JS effortlessly. So I came to wonder: what if I made a different choice for my frontend stack, for a better experience as a developer? What would I loose, what would I gain? It’s easy to assume that ditching JSF and PrimeFaces would simplify things, but what exactly would I lose? And what new difficulties would appear? Here is a comparison between my current stack (JSF + Primefaces) and the alternative I am considering (HTMX + Alpine.js + Tailwind) nota bene : I am well aware that JSF and Primefaces can work with Tailwind with no fuss, so one might find it unfair to pit JSF + Primefaces against a solution with Tailwind. But as I said above, making Tailwind work in coherence with Primefaces needs some extra tooling which I personally find too heavy, compared to “just add Tailwind” in the HTMX + Alpine solution. Comparison: from the point of view of JSF + Primefaces strengths   JSF + PrimeFaces (strengths) HTMX + Alpine.js (cons) 1 No need to touch css or js, or very minimally it is all about adding html attributes, css classes and js (but a lot of complexity remains hidden) 2 Complex components provided out of the box (data tables, image croppers, etc.) Lacks complex components — requires specific JS libraries and custom backend code 3 Strong IDE integration: refactoring a backend method refactors the front end as well Logic is separated — no automatic synchronization between front and back 4 Same programming language and framework on both sides (e.g., file upload easily integrated) Different languages/frameworks: file upload must be fully defined on both ends 5 User session management provided out of the box No session mechanism — must be implemented manually (cookies, tokens, etc.) 6 Security and accessibility built into the framework No built-in security or accessibility mechanisms 7 Easy internationalization (i18n) support No i18n provided by default 8 Coherent default styling with theme support Styling must be designed entirely from scratch 9 Proven, long-term ecosystem (20+ years, likely stable for 20 more) Younger frameworks — shorter historical lifespan and uncertain long-term support Now from the point of view of HTMX + Alpine + Tailwind strengths… # HTMX + Alpine.js + Tailwind (strengths) JSF + PrimeFaces (cons) 1 Static HTML files (not server-generated): easy to host, patch, and reload; ensures fast loading XHTML pages are server-generated, requiring full app redeployment (including backend) for any small UI or CSS/JS change 2 Simple Nginx setup: one route for static assets, one for each API endpoint Complex Nginx configuration required for JSF applications 3 Transparent handling of Server-Sent Events (SSE), including through Nginx SSE handling is a “black box,” difficult to debug behind a proxy 4 Manual styling = total creative freedom and perfect consistency between pages and components Default component styling is hard to override and align with custom page design 5 Excellent compatibility with LLMs (HTML/CSS/JS easily generated and previewed) LLMs cannot preview XHTML pages — breaks interactive design workflows 6 Strong and active open-source community (HTMX, Alpine, Tailwind) JSF and PrimeFaces communities are small and aging 7 Close to native HTML: lightweight, transparent, and easily replaceable if needed Heavy abstraction over HTML, with complex internal JS/CSS layers that obscure rendering and server interaction 🔀 Decision after comparison What made me tilt towards HTMX + Alpine + Tailwind is that LLMs can handle it for me, removing my biggest obstacle (“I hate css and js, they are too brittle”). Don’t jump and shame me (“ohh he is fine with vibe coding and AI slop!”). By sticking to very simple frameworks like HTMX, Tailwind and Alpine, I remain very close to the native HTML of the pages. This means the generated HTML, CSS classes and JS are not a black box I have to trust blindly. I’ll be able to debug, modify, and remove them if necessary, in a way that is much more transparent than I was in my current situation with JSF. And the benefits of the switch are mouth-watering: I’ll finally be able to design pages in a more personal and distinctive way than the design I was stuck with until now. Don’t get me wrong: I am grateful to JSF and Primefaces for providing the tools that allowed me to create a functional and (to my standards) successful web app without touching CSS and JS, which I dare anyone trying without these Java techs. But LLMs change the game. They reduce the need for such heavy frameworks. Coding closer to native HTML, CSS and JS is now a viable, even enjoyable option. This new stack does come with trade-offs: some features will be dropped because they’re too time-consuming to rebuild. For instance, the complex UI with data tables and the “PDF region selector” using an image cropper. That is a trade-off I’m ready to make. Also, I will need to write the logic of user session management myself, which will be frankly boring and error-prone. That is what worries me the most about this refactoring. 🎯 Results: let’s wait for the refactoring I am currently working at this refactoring. Visit nocodefunctions.com to see how it looks with the current Java stack, and come back in a few months, realistically, to see how it has evolved. [EDIT December 14, 2025 -&gt; visit next.nocodefunctions.com for a live preview of the refactoring in progress] About Me I’m an academic and independent web app developer. I created nocode functions 🔎, a free, point-and-click tool for exploring texts and networks. It’s fully open source. Try it out and let me know what you think. I’d love your feedback! Email: analysis@exploreyourdata.com 📧 Bluesky: @seinecle 📱 Blog: Read more articles 👓 on app development and data exploration.]]></summary></entry></feed>