Dans notre épisode précédent, je vous avais décrit l’App Rage que j’avais programmée il y a une quinzaine d’années, et que je suis en train de mettre à jour en vibe coding avec l’aide de Claude AI, l’intelligence artificielle d’Anthropic.
Alors pour vous situer le contexte, quand j’ai programmé cette première App, je n’avais pratiquement aucune notion de programmation, et je me suis formé avec des livres et des cours YouTube dans le langage de programmation d’Apple de l’époque, l’Objective-C. Donc, bon évidemment, je me suis souvent retrouvé dans des forums à poser des questions sur des trucs que je n’arrivais pas à programmer, et ce qui était génial avec ces forums, c’est que tout le monde partageait ses connaissances avec une générosité incroyable (rien à voir avec le milieu artistique, dans lequel tout le monde vole des trucs à de pauvres artistes qui meurent de faim à cause de ça), donc j’ai pu progressivement construire ce qui à l’époque n’était qu’une simple application de livre en maitrisant tant bien que mal les bases de la programmation sur Xcode (l’application de programmation d’Apple), et en collant le code que de nombreux spécialistes m’avaient envoyé pour m’assister.
Avec Claude AI, on retrouve ces mêmes compétences et cette même générosité… en quelques secondes (ou en quelques minutes si le problème est complexe). Inutile d’attendre que quelqu’un me réponde, c’est presque immédiat ! Mieux encore, j’ai l’impression d’avoir à ma disposition à la fois un professeur et un assistant ! Après, cette rapidité est très relative, puisqu’elle dépend aussi de mon niveau d’abonnement, et que je n’ai choisi que le niveau minimum. Je n’ai droit qu’à une quantité limitée de jetons pour utiliser Claude AI, donc au bout d’un moment, il s’arrête, et je dois attendre quelques heures ou le lendemain avant de lancer une nouvelle conversation. J’ai quelques moyens de contourner le problème en lançant plusieurs conversations successives, mais ça revient à lui faire recommencer l’analyse du code (puisqu’il redécouvre en quelque sorte le code à chaque nouvelle conversation), et à user encore des jetons. Et ça ne fait que reculer l’inévitable : au bout d’un moment, Claude s’arrête, et là, on attend…
Donc, je me suis mis en tête de mettre à jour mon App de Rage pour le futur. Le meilleur moyen de procéder, c’était de ternir compte du nombre limité de jetons quotidiens, et de ne jamais oublier que malgré toute son intelligence Claude AI risque de se tromper. Souvent. Il risque de se tromper souvent. Quand on ne l’utilise pas en tant qu’agent, Claude AI n’a pas une visibilité sur tous vos fichiers, donc il faudra aussi lui envoyer des montages photo et des copies d’écran dans la fenêtre de Chat pour qu’il puisque consulter un visuel du résultat souhaité… et du résultat obtenu qui est souvent différent. Alors pas inexplicablement différent. Pour le moment, avec Claude, rien n’a été inexplicable, mais il faut trouver où ça bloque, sinon il va essayer de contourner le problème pour vous apporter une solution, et tout simplement tourner en boucle et faire n’importe quoi. Et dans ces cas là, c’est à vous de travailler, de comprendre le problème, l’analyser, et trouver où ça bloque , ce qui peut parfois prendre un certain temps (oui, dans ce cas là, c’est vous l’Intelligence, et quelque part, ce n’est pas normal).
Programmer une App de cette façon, c’est un tout nouvel exercice mental. On ne passe plus de nuits blanches à essayer de comprendre pourquoi le code ne marche pas, et à tester des solutions alors qu’on n’avait fait qu’une simple faute de frappe. Par contre, on perd son temps autrement, parce qu’il faut trouver des moyens d’expliquer à Claude AI exactement ce qu’on veut, et ça ne marche pas à tous les coups. Parfois, Claude AI peut bloquer pendant des jours sur un simple alignement d’objets pour une raison précise, mais qui n’est pas évidente à première vue.
Mais commençons par le commencement : après un premier essai non-concluant (j’ai pris Claude AI pour un magicien, je lui ai dit de tout reprogrammer par lots, et le résultat était à jeter), j’ai repris l’ancienne version de mon App, et je suis reparti de zéro. Donc, comme c’était une App en Objective-C et qu’il fallait la mettre à jour en Swift (vous suivez, là ? J’ai l’impression que vous suivez pas), je l’ai passé à la moulinette de l’App Swiftify (qui automatise le truc, genre, voilà quoi…) et j’ai demandé à mon nouveau cop.ain.ine de bien tout optimiser pour être sûr.
Ensuite, on est passé à la reprogrammation de l’App. Oui, vous avez bien lu, il y a effectivement un problème. Tout le code est là, mais il ne marche pas, et chaque vue est une vue générique en attente de… de quoi, heu… comment dire… en fait, il faut tout recommencer, étape par étape. Donc, bon ben, c’est ce que j’ai fait. Et on va essayer de détailler tout ce que j’ai fait dans la mesure du possible (parce que j’en ai fait beaucoup plus, mais ce texte un peu ésotérique pour les non initiés deviendrait vite un peu chiant pour les initiés, donc bon…)
Donc, dans cette App, il y a trois livres : le premier album de Rage, les premiers chapitres d’Arcanes et un portfolio. Je voulais que ces trois livres utilisent la même interface, donc, dans la logique, il aurait fallu créer un framework pour l’interface (un framework étant un cadre applicatif que les trois livres pourront invoquer pour avoir une interface commune). Donc, tout naturellement, je n’y ai pas pensé tout de suite… Après, des fois, je suis un peu con…
Dans un premier temps, j’ai voulu recréer le premier livre, et après de nombreux tâtonnements, notamment avec la barre de vignettes (qui permet de choisir quelle page afficher, et dont les effets spéciaux entraient en conflit), je suis arrivé à reproduire le fonctionnement du livre de l’App originale, pratiquement sans toucher à une ligne de code, ce qui était le but de l’expérience, mais en me prenant la tête en explications pour que Claude AI comprenne ce qui n’allait pas quand il se trompait, donc ça n’a pas été rapide.
Et là, j’ai décidé de passer à la création du second livre… et Claude l’a affiché avec une interface basique. C’est à ce moment là que j’ai pensé à créer un Framework. Donc j’ai demandé à Claude d’en créer un, et d’en faire une base pour ces deux livres. Et là, j’ai dû recommencer la moitié du travail sur le premier livre, ce qui revient à réexpliquer à Claude une bonne partie de ce que je lui avais déjà expliqué pour que les deux livres utilisent la même base applicative… Vous avez l’impression que ce paragraphe tourne en boucle (et c’est pour ça que vous l’avez relu) ? Malheureusement ,vous avez raison. De par mon expérience, c’est un peu ça, la programmation en vibe coding…
Et au bout d’un moment, on y est arrivé ! Les deux premiers livres étaient programmés sur la base du Framework dont j’avais malheureusement eu l’idée après la programmation du premier livre (vous avez l’impression que cette phrase est complexe, et c’est pour ça que vous l’avez relue plusieurs fois ? Bienvenue dans le monde merveilleux de la programmation. J’ai pas déjà écrit un truc similaire, dans cet article ? Pour en être sûr, relisez-le) !
Et là, je suis passé avec angoisse à la création du portfolio. Normalement, ça aurait dû marcher, puisque le Framework avait déjà été créé, et que le portfolio n’avait pas encore été recréé (j’ai envie d’ajouter une parenthèse là, mais je vais m’abstenir). C’était simple, il suffisait de demander à mon nouveau cop.ain.ine d’ajouter le framework de livre à la vue Portfolio, et hop, le tour était joué !
Hé bien contre toute attente, c’est exactement ce qu’il s’est passé ! Ouf !
La programmation des trois livres disponibles par défaut étant terminée, je suis passé avec la même angoisse au Rage Card Game, le jeu de cartes intégré à l’App Rage d’origine.
Hé ben là, j’avais raison de m’angoisser.
La suite au prochain numéro.
Pour conclure en changeant de sujet, mes livres ne sont toujours pas de retour sur Amazon, et restent donc complètement censurés à cause d’un crime abominable que le support technique de Kindle ne peut pas me révéler parce que c’est un secret. Tiens, ben ça me fait penser qu’il faut que je leur envoie une petite relance pour les emmerder un peu.
Allez, je vous laisse avec trois de mes livres qui ne sont pas Amazon-Approved. Pas la peine d’essayer de les acheter sur Amazon, ils se sont faits virer par la Police des Livres. Juste par souci d’exhaustivité, j’ai ajouté Hitman 18, avec la première apparition de Bueno Excellente, un personnage de l’équipe de super-héros Section 8 qui combat le crime avec le pouvoir de la sodomie. J’aurais bien aimé savoir ce que l’IA d’Amazon pense de ce personnage qui n’est pas présenté comme un héros, mais dont on peut quand même supposer par défaut qu’il en a le titre quand on prend tout au premier degré. Je n’en aurai pas l’occasion, déjà parce que le support technique de KDP ne me le dira pas, mais surtout parce que les comics édités par DC n’ont probablement pas été inclus aux paramètres de leur IA.
Et j’en profite pour ajouter ceci : « En tant que Partenaire Amazon, je réalise un bénéfice sur les achats remplissant les conditions requises ». Donc si vous avez envie d’acheter Hitman 18, mais que vous n’avez pas envie que je sois rémunéré en tant que Partenaire Amazon suite à votre achat, n’hésitez pas à vous connecter directement à Amazon et faire une recherche pour vous le procurer. C’est à cette adresse : https://www.amazon.fr



