« Je crois qu’il faut que j’aille m’allonger un peu. »
(twitter.com/multikev)- Impression après avoir testé la démo Make Real de TLDraw
- Un outil qui utilise l’IA pour transformer un dessin en logiciel fonctionnel
- Convertit des images vectorielles en HTML/TailWind CSS et Javascript à l’aide d’OpenAI's GPT-4V
1 commentaires
Avis sur Hacker News
Steve de tldraw ici. Désolé, c’est un projet jouet aux pratiques de sécurité exécrables. Si vous voulez l’exécuter en local ou consulter le code source, c’est ici : https://github.com/tldraw/draw-a-ui
Vous pouvez voir d’autres exemples sur https://twitter.com/tldraw. Je peux répondre aux questions sur tldraw ou sur ce projet. Ce n’est pas un truc qui va supprimer le travail de qui que ce soit, mais c’est vraiment amusant à bricoler, et il y a un exemple plus complexe ici : https://twitter.com/tldraw/status/1725083976392437894
Il y a aussi un serveur de licences que je viens de publier sous licence MIT. Il est écrit en Elixir et fait tourner https://go.robocoder.app. Si vous avez besoin d’aide pour la configuration, vous pouvez me contacter : https://github.com/emcmanus/robocoder-server/
J’ai trouvé la réponse dans le README GitHub. Il y est indiqué que « pour utiliser votre propre clé API, vous devez avoir accès au usage tier 1 ; consultez vos paramètres OpenAI pour voir votre tier actuel et comment l’augmenter »
Le prompt système dans le dépôt est le suivant :
Je ne sais pas très bien pourquoi il y est question de « creative license ». Pour chaque génération, le prompt utilisateur est le suivant :
https://github.com/tldraw/draw-a-ui/blob/8a889bf36afc06fbb0c...
Il semble assez simple de faire tourner ça « en privé » en prenant une capture d’écran d’un canevas tldraw normal et en l’envoyant à l’API avec ce prompt
J’ai essayé d’y mettre une maquette tirée d’une question d’entretien Facebook. Il y avait deux listes de cases à cocher et deux boutons permettant de déplacer les éléments cochés de l’une à l’autre, et il s’en est bien sorti : https://gist.github.com/milesrichardson/2a2f77d4bfb19c3b28dc...
toList.appendChild(item.closest('li'));déplaçait l’élément. On apprend quelque chose tous les joursSans aucune annonce, l’utilisateur ne peut pas savoir si quelque chose s’est réellement passé lorsqu’il a appuyé sur le bouton. Page de test : https://output.jsbin.com/jixoqur/quiet
Ces démos récentes montrent à la fois à quel point les progrès récents du machine learning/de l’IA sont impressionnants, et combien des millions de développeurs dans le monde continuent de réimplémenter des tâches répétitives et peu créatives.
La plupart des écrans d’UI peuvent être décrits précisément en un ou deux paragraphes ; il n’est donc pas étonnant qu’ils puissent être représentés assez finement dans un vecteur d’embedding relativement petit.
Les métiers non techniques qui n’ont pas beaucoup utilisé l’IA dans leur travail réel y sont particulièrement vulnérables. Ceux qui la pratiquent sur le terrain ont généralement une vision plus nuancée. C’est extrêmement utile, mais cela se trompe souvent, et il faut retoucher avec soin pour obtenir un résultat de niveau production. Même en tant qu’optimiste de l’IA, je pense que la valeur est réelle et que les démos impressionnantes montrent la direction que nous prenons, mais il faudra du temps avant que les résultats moyens rattrapent les attentes exagérées.
Dans cette démo, il s’agit littéralement de deux sliders qui ajustent deux propriétés CSS, donc la quantité d’information dans la spécification de l’UI n’est pas très élevée. Avec un langage de spécification d’UI approprié, cela tiendrait en trois lignes de code. La difficulté vient de la gestion du boilerplate des UI web.
Ce qui est étrange, c’est que sur HN, quand il est question des plateformes no-code traditionnelles, les gens repèrent facilement leurs limites de scalabilité et de maintenance ; mais dès qu’on ajoute de l’IA, on dirait que ces problèmes disparaissent soudainement et qu’il n’y a plus à s’inquiéter du spaghetti produit par une boîte noire.
Ce qu’on voulait vraiment, c’était séparer la fonctionnalité de la présentation. Par coïncidence, c’est exactement ce qu’était le Web en HTML pur de 1996. Quelque chose a horriblement mal tourné, d’une manière inimaginablement stupide, et personne n’a fait mieux. À la place, il nous reste des ombres portées et des flexbox internes.
Une grande partie du travail de bureau consiste à refaire sans cesse la même chose, souvent avec différentes personnes qui répètent essentiellement les mêmes tâches dans différentes entreprises.
Cela ressemble à un outil qui donne l’air intelligents et compétents aux designers UI, et peut-être aux product owners. Mais le vrai travail retombera sur les programmeurs, comme aujourd’hui.
Le designer UI pourra fournir une « démo », mais comment cette fonctionnalité de base s’intégrera-t-elle au reste de l’app ? Elle ne le fera pas.
Avant même GPT, certains défendaient l’idée que les prototypes très précoces ou les maquettes devaient avoir un rendu visuel aussi peu abouti que leur niveau de fonctionnalité interne. Les prototypes uniquement UI, jolis et qui « fonctionnent » en apparence, créent des attentes irréalistes même lorsqu’on les explique clairement, et augmentent le risque de proto-duction, où le prototype devient directement la production.
J’ai vu plusieurs projets où de mauvaises conceptions système ont été imposées aux ingénieurs à cause des contraintes d’un design Figma approuvé par un dirigeant. Bien sûr, ces organisations avaient aussi des problèmes plus profonds, mais les maquettes haute fidélité faciles à produire ont aggravé ce genre de situation par rapport aux wireframes.
Si vous voulez le rendre encore plus performant, ajoutez aussi "it's very important for my career".
Les développeurs qui font des démos pour agrandir et faire tourner des boîtes risquent maintenant de perdre leur emploi.
Pendant que nous discutions avec un client de la façon d’intégrer notre logiciel à son logiciel, il nous a envoyé une capture d’écran de son formulaire principal.
J’ai mis cette capture dans ChatGPT et demandé : « fais-moi un formulaire React de ce style avec Bootstrap ». Après quelques ajustements, j’y ai raccordé mon logiciel, et quelques heures plus tard le client a été surpris de voir une preuve de concept intégrée aussi rapidement. Quand j’ai des problèmes de mise en page CSS en développement web, il m’arrive de téléverser une capture d’écran dans ChatGPT et de demander comment les résoudre ; la démo du tweet semble assez similaire.
Des frameworks excellents pour des cas d’usage sophistiqués, mais excessifs pour des tâches courantes et basiques, n’ont cessé d’apparaître. Il y a parfois eu des exceptions, mais la plupart des développeurs web ne les aiment pas. Ce n’est pas très valorisant sur un CV et, franchement, qui a envie de ne faire que des formulaires web pendant toute sa carrière ?
Au final, ce sont des tortues sur des tortues :+)
Pour coder, je m’en suis davantage servi pour transformer rapidement des données avec des pipelines en ligne de commande ou des scripts Bash que pour autre chose. Donner la sortie d’une commande et demander du Bash pour le formatage, l’agrégation, le tri ou l’extraction voulus rend faciles des choses que je n’aurais normalement pas faites, comme du débogage ou la vérification d’hypothèses. On peut aussi le faire à la main, mais c’est lent, et il faut chercher ou consulter les pages man pour se souvenir des options et des arguments. Pour le code, j’utilise surtout GH Copilot.
Vous pouvez me traiter de sceptique, mais je ne crois pas à l’avenir des solutions no-code. Il faut aligner des boutons sur de petites résolutions d’appareils, prévoir des marges pour que ce soit joli dans d’autres langues, et il y a sans cesse d’autres exigences
Au mieux, cela permettra de créer des applis plus vite avec un langage plus abstrait. Ça fonctionne pour des choses extrêmement basiques et courantes comme le morpion, mais ce n’est pas adapté aux travaux originaux
Imaginez des dizaines de personnes ayant juste quelques notions techniques qui font des croquis et appuient sur « fais-le vraiment » pour ajouter des fonctionnalités. Chacune produit des centaines de lignes de code. À la fin de la journée, quelqu’un doit comprendre ce résultat, mais comme la sortie est non déterministe, c’est tout ce qu’il nous reste
En même temps, de nouveaux venus qui n’ont pas appris, ou n’ont pas voulu apprendre, à chanter juste créeront avec beaucoup moins d’efforts des genres musicaux entièrement nouveaux et de la pop grand public. Les artisans l’utiliseront aussi, plus rarement, pour renforcer certains workflows, améliorer la finition et aller plus vite
Je pense que des outils comme Canva ou Figma vont adopter activement ce type de fonctions et améliorer fortement les wireframes et démos haute fidélité
Squarespace, Wix, etc. ont déjà capté le bas du marché ; sinon, l’externalisation en Inde l’aurait fait
C’est l’évolution naturelle du même concept. Si j’étais chef de produit d’un constructeur de sites web, je me précipiterais sur ce type d’intégration de builder IA. Ça ne marchera absolument pas pour des tâches métier complexes et à peine définies, mais ça pourra très bien créer un calculateur de coûts pour une activité de photographe
Les logiciels de workflows de processus métier sont assez populaires. Il existe beaucoup d’apps où les gens font des choses similaires avec du glisser-déposer ou des éditeurs de widgets interactifs, et qui peuvent gérer des formulaires complexes, des relations parent-enfant et des transitions d’état. Avec quelque chose comme GPT Vision, on peut sauter l’étape du glisser-déposer de widgets et utiliser un outil de dessin plus libre ou des croquis faits à la main. L’exemple le plus populaire aujourd’hui est probablement Notion, et il existait déjà depuis bien plus longtemps des exemples plus complexes
Je me sens vieux maintenant. Il y a des décennies, on pouvait déjà faire à peu près ça à une vitesse similaire avec VB ou Delphi. Simplement, le résultat était un peu plus déterministe, au lieu que l’outil infère à partir du nom des labels
Nous avions déjà ce genre de choses, et nous avons oublié qu’on pouvait le faire sans tout pousser dans le navigateur ni utiliser l’énorme puissance de calcul des modèles d’IA générative. J’ai l’impression d’être le vieux qui crie sur les nuages
Bien sûr, le code de Dreamweaver était laid et pratiquement inutilisable, tandis que le code généré par l’IA n’est parfois pas si mauvais. Mais j’ai quand même l’impression qu’on était déjà assez proche de la situation actuelle
VB était un outil très opinionated, qui ne produisait que des UI natives de style Windows. On ne reproduisait pas au pixel près dans VB une maquette arbitraire apportée par un designer, avec une apparence entièrement personnalisée. Aujourd’hui, la plupart des GUI de produits font partie de la marque. Pour le meilleur ou pour le pire, chaque entreprise veut une apparence et un comportement d’UI distinctifs. Les outils qui les construisent doivent donc être beaucoup plus complexes. On peut recréer VB dans le navigateur, et beaucoup l’ont effectivement fait de manière similaire, mais les entreprises ne veulent pas d’UI ennuyeuses et génériques, donc ce n’est pas très utilisé pour le développement produit
En gros, cela fonctionne en envoyant une capture d’écran d’un diagramme à GPT-4 avec la consigne « implémente ça »
Dix ans plus tard, quelque chose appelé Visix Vibe, qui proposait la même chose pour Java, un langage alors relativement nouveau, a circulé pendant un an ou deux. Toutes les quelques années, grosso modo tous les 4 ou 5 ans, ou tous les 10 ans, quelqu’un veut faire disparaître toute la complexité. Mais au final, ils finissent par créer un système d’exploitation
Et en pratique, cela fonctionne correctement, interagit avec le reste du toolkit comme prévu, et l’internationalisation comme l’accessibilité fonctionnent aussi de manière cohérente. Il n’y a aucune raison pour que HTML ne puisse pas faire beaucoup plus de choses par défaut ; cela permettrait d’économiser chaque année une quantité énorme de temps développeur et de frustration utilisateur. Mais ce n’est tout simplement pas ce qui se passe