„Ich glaube, ich muss mich erst mal hinlegen.“
(twitter.com/multikev)- Eindruck nach dem Ausprobieren der Make-Real-Demo von TLDraw
- Ein Tool, das mithilfe von AI Zeichnungen in funktionsfähige Software umwandelt
- Nutzt OpenAI's GPT-4V, um Vektorgrafiken in HTML/TailWind CSS und Javascript umzuwandeln
1 Kommentare
Hacker-News-Meinungen
Steve von tldraw hier. Sorry, das ist ein Spielzeugprojekt mit miserablen Sicherheitsmustern. Wenn ihr es lokal ausführen oder den Source ansehen wollt, findet ihr ihn hier: https://github.com/tldraw/draw-a-ui
Weitere Beispiele gibt es unter https://twitter.com/tldraw. Fragen zu tldraw oder diesem Projekt kann ich beantworten. Das ist nichts, was irgendjemandem die Arbeit wegnimmt, aber es macht wirklich Spaß, damit herumzuspielen; ein komplexeres Beispiel gibt es hier: https://twitter.com/tldraw/status/1725083976392437894
Es gibt auch einen Lizenzserver, den ich gerade unter MIT-Lizenz veröffentlicht habe. Er ist in Elixir geschrieben und betreibt https://go.robocoder.app. Wenn ihr Hilfe beim Einrichten braucht, könnt ihr euch melden: https://github.com/emcmanus/robocoder-server/
Die Antwort habe ich im GitHub-README gefunden. Dort steht, dass man für die Nutzung des eigenen API-Keys Zugriff auf usage tier 1 braucht und den aktuellen Tier sowie die Möglichkeit zum Hochstufen in den OpenAI-Einstellungen prüfen soll.
Der System-Prompt im Repository lautet so:
Ich bin mir nicht ganz sicher, warum hier „creative license“ erwähnt wird. Der User-Prompt lautet bei jeder Generierung wie folgt:
https://github.com/tldraw/draw-a-ui/blob/8a889bf36afc06fbb0c...
Es wirkt simpel genug, einfach einen Screenshot eines normalen tldraw-Canvas zu machen und ihn zusammen mit diesem Prompt an die API zu übergeben, um das „privat“ laufen zu lassen.
Ich habe eine Vorlage aus einer Facebook-Interviewfrage eingegeben. Sie bestand aus zwei Checklisten und zwei Buttons, mit denen man markierte Einträge hin- und herschiebt, und das hat es korrekt umgesetzt: https://gist.github.com/milesrichardson/2a2f77d4bfb19c3b28dc...
toList.appendChild(item.closest('li'));das Element verschiebt. Man lernt jeden Tag etwas dazu.Ohne irgendeine Ansage weiß der Nutzer nicht, ob beim Drücken des Buttons tatsächlich etwas passiert ist. Testseite: https://output.jsbin.com/jixoqur/quiet
Solche aktuellen Demos zeigen einerseits, wie beeindruckend die jüngsten Fortschritte bei Machine Learning/KI sind, und andererseits, wie viele sich wiederholende und wenig kreative Arbeiten Millionen von Entwicklern weltweit immer wieder neu implementieren.
Die meisten UI-Screens lassen sich mit ein oder zwei Absätzen präzise beschreiben; daher ist es auch nicht überraschend, dass sie sich in einem relativ kleinen Embedding-Vektor ziemlich detailliert darstellen lassen.
Besonders anfällig dafür sind nichttechnische Rollen, die KI in der echten Arbeit noch nicht intensiv eingesetzt haben. Leute, die es im Alltag erleben, sehen es meist differenzierter. Es ist enorm nützlich, macht aber auch viele Fehler, und um Ergebnisse auf Produktionsniveau zu bekommen, muss man sorgfältig nacharbeiten. Auch als KI-Optimist: Der Wert ist real, und beeindruckende Demos zeigen, wohin die Reise geht, aber es wird dauern, bis die durchschnittlichen Ergebnisse die überzogenen Erwartungen einholen.
In dieser Demo sind es buchstäblich zwei Slider, die zwei CSS-Eigenschaften anpassen; die Informationsmenge in der UI-Spezifikation ist also nicht groß. Mit einer geeigneten UI-Spezifikationssprache wären das drei Zeilen Code gewesen. Die Schwierigkeit entsteht dadurch, dass man Web-UI-Boilerplate verwalten muss.
Seltsam ist, dass HN bei klassischen No-Code-Plattformen Skalierungs- und Wartungsgrenzen sofort erkennt, aber sobald KI dazukommt, wirken diese Probleme plötzlich gelöst und man müsse sich keine Sorgen mehr um die Blackbox-Spaghetti machen, die ausgespuckt werden.
Was man eigentlich wollte, war die Trennung von Funktion und Darstellung. Zufälligerweise war genau das das reine HTML-Web von 1996. Irgendetwas ist auf unvorstellbar dumme Weise furchtbar schiefgelaufen, und niemand ist besser geworden. Stattdessen blieben Dinge wie Schatteneffekte und verschachtelte Flexbox übrig.
Ein erheblicher Teil der Büroarbeit besteht darin, immer wieder dasselbe zu tun, und oft wiederholen verschiedene Menschen in unterschiedlichen Unternehmen im Wesentlichen dieselben Aufgaben.
Das wirkt wie ein Tool, das UI-Designer und vielleicht Product Owner klug und kompetent aussehen lässt. Die eigentliche Arbeit wird aber wie bisher bei den Programmierern landen.
Ein UI-Designer kann vielleicht eine „Demo“ liefern, aber wie soll diese Grundfunktion mit dem Rest der App verbunden werden? Wird sie nicht.
Schon vor GPT gab es das Argument, dass sehr frühe Prototypen oder Mockups optisch genauso unfertig aussehen sollten, wie es ihrem internen Funktionsumfang entspricht. Hübsche, oberflächlich „funktionierende“ reine UI-Prototypen erzeugen selbst bei klarer Erklärung unrealistische Erwartungen und erhöhen die Wahrscheinlichkeit von Proto-duction, also dass der Prototyp direkt zur Produktion wird.
Ich habe mehrfach Projekte gesehen, in denen wegen der Einschränkungen eines von irgendeiner Führungskraft freigegebenen Figma-Designs ein miserables Systemdesign an die Engineers weitergereicht wurde. Natürlich haben solche Organisationen noch größere Probleme, aber leicht erstellbare High-Fidelity-Mockups haben diese Probleme stärker verschärft als Wireframes.
Wenn man es dazu bringen will, es besser zu machen, hängt man noch "it's very important for my career" dran.
Entwickler, die Demos bauen, in denen Boxen vergrößert und gedreht werden, stehen jetzt offenbar kurz davor, ihre Jobs zu verlieren.
Während wir mit einem Kunden besprachen, wie wir unsere Software in dessen Kundensoftware integrieren, schickte der Kunde einen Screenshot des Hauptformulars.
Ich habe diesen Screenshot in ChatGPT geladen und gesagt: „Erstelle mir ein React-Formular in diesem Stil mit Bootstrap.“ Nach ein paar Anpassungen habe ich meine Software angebunden, und ein paar Stunden später war der Kunde erstaunt über den Proof of Concept, in dem das System so schnell integriert war. Wenn ich bei der Webentwicklung CSS-Layoutprobleme habe, lade ich oft einen Screenshot in ChatGPT hoch und frage nach einer Lösung; die Demo aus dem Tweet wirkt ziemlich ähnlich.
Es kamen immer wieder Frameworks, die für ausgefallene Use Cases hervorragend sind, für häufige und grundlegende Aufgaben aber überdimensioniert. Es gab gelegentlich Ausnahmen, aber die meisten Webentwickler mögen so etwas nicht. Im Lebenslauf sieht es auch nicht toll aus, und ehrlich gesagt: Wer möchte schon seine ganze Karriere lang nur Webformulare bauen?
Am Ende sind es Schildkröten auf Schildkröten :+)
Beim Coding habe ich ChatGPT häufiger verwendet, um Daten schnell mit Kommandozeilen-Pipes oder Bash-Skripten zu verarbeiten, als für Code selbst. Wenn man Befehlsausgaben gibt und Bash für die gewünschte Formatierung, Zusammenfassung, Sortierung oder Extraktion anfordert, werden auch Dinge einfach, die man sonst nicht ausprobiert hätte, etwa Debugging oder Hypothesenchecks. Man könnte es auch manuell machen, aber das ist langsam, und um Optionen und Argumente zu erinnern, braucht man Suche oder Manpages. Für Code nutze ich hauptsächlich GH Copilot.
Man kann mich gern einen Skeptiker nennen, aber ich glaube nicht an die Zukunft von No-Code-Lösungen. Man muss Buttons auf kleinen Geräteauflösungen ausrichten, Abstände lassen, damit es auch in anderen Sprachen gut aussieht, und es gibt ständig weitere Anforderungen.
Bestenfalls wird es einem ermöglichen, Apps mit einer stärker abstrahierten Sprache schneller zu bauen. Das funktioniert bei extrem grundlegenden und verbreiteten Dingen wie Tic-Tac-Toe, passt aber nicht zu originären Arbeiten.
Man stelle sich vor, Dutzende Leute mit ein bisschen technischem Wissen machen Skizzen und drücken auf „Mach das wirklich“, um Features hinzuzufügen. Jeder erzeugt Hunderte Zeilen Code. Am Ende des Tages muss irgendjemand dieses Ergebnis verstehen, aber weil die Ausgabe nichtdeterministisch ist, bleibt uns nur genau das.
Gleichzeitig werden neue Leute, die nicht gelernt haben oder nicht lernen wollten, sauber zu singen, mit viel weniger Aufwand völlig neue Musikgenres und Mainstream-Pop schaffen. Auch die Handwerker werden es gelegentlich nutzen, um Teile ihres Workflows zu verstärken, die Qualität zu erhöhen und schneller zu werden.
Tools wie Canva und Figma werden solche Funktionen vermutlich offensiv integrieren und damit High-Fidelity-Wireframes und Demos deutlich verbessern.
Squarespace, Wix und ähnliche Anbieter haben bereits das untere Marktsegment übernommen; andernfalls hätte es Outsourcing nach Indien getan.
Das ist die natürliche Weiterentwicklung desselben Konzepts. Wenn ich Produktmanager eines Website-Builders wäre, würde ich mich sofort auf eine solche AI-Builder-Integration stürzen. Für kaum definierte, komplexe Geschäftsaufgaben wird das nie funktionieren, aber einen Kostenrechner für ein Fotografie-Geschäft wird es wohl gut bauen können.
Software für Business-Process-Workflows ist ziemlich beliebt. Es gibt viele Apps, in denen Leute per Drag-and-drop oder mit interaktiven Widget-Editoren Ähnliches tun, und sie können auch komplexe Formulare, Parent-Child-Beziehungen und Zustandsübergänge abbilden. Mit etwas wie GPT Vision kann man das Drag-and-drop von Widgets überspringen und freiere Zeichenwerkzeuge oder handgezeichnete Skizzen verwenden. Das heute populärste Beispiel ist vermutlich Notion, und deutlich ältere, komplexere Beispiele gab es schon lange davor.
Ich fühle mich jetzt alt. Schon vor Jahrzehnten konnte man das mit VB oder Delphi gefühlt fast genauso schnell machen. Nur war das Ergebnis etwas deterministischer, statt dass das Tool aus Label-Namen etwas ableitete.
Wir hatten so etwas bereits, und wir haben vergessen, dass es auch ging, ohne alles in den Browser zu zwängen und die enorme Rechenleistung generativer AI-Modelle zu nutzen. Ich fühle mich wie ein alter Mann, der Wolken anschreit.
Natürlich war Dreamweaver-Code hässlich und praktisch unbrauchbar, und AI-generierter Code ist manchmal gar nicht so schlecht. Trotzdem waren wir dem heutigen Stand meiner Meinung nach schon ziemlich nahe.
VB war ein sehr meinungsstarkes Tool und erzeugte nur native UIs im Windows-Stil. Man hat in VB keine beliebigen Mockups von Designern mit vollständig individuellem Look-and-feel pixelgenau nachgebaut. Heute ist die GUI der meisten Produkte Teil der Marke. Ob gut oder schlecht: Jedes Unternehmen will einen eigenen Look-and-feel und eigenes UI-Verhalten. Deshalb müssen die Tools dafür deutlich komplexer sein. Man kann VB auch im Browser nachbauen, und viele haben tatsächlich etwas Ähnliches gebaut, aber weil Unternehmen keine langweiligen, generischen UIs wollen, wird es in der Produktentwicklung kaum genutzt.
Im Grunde funktioniert es so, dass ein Screenshot eines Diagramms an GPT-4 geschickt wird mit der Bitte: „Implementiere das.“
Zehn Jahre später geisterte ein bis zwei Jahre lang etwas namens Visix Vibe herum, das dasselbe für Java bot, damals eine noch relativ neue Sprache. Alle paar Jahre, etwa alle 4–5 oder 10 Jahre, will irgendjemand sämtliche Komplexität verschwinden lassen. Am Ende bauen sie aber ein Betriebssystem.
Und sie funktionieren tatsächlich richtig, interagieren mit dem restlichen Toolkit wie erwartet, und Internationalisierung sowie Barrierefreiheit funktionieren konsistent gut. Es gibt keinen Grund, warum HTML nicht von Haus aus deutlich mehr leisten könnte; das würde jedes Jahr enorm viel Entwicklerzeit und Nutzerfrust sparen. Es wird nur nicht gemacht.