"Creo que voy a tener que ir a acostarme un rato."
(twitter.com/multikev)- Impresiones tras probar la demo de Make Real de TLDraw
- Una herramienta que usa IA para convertir dibujos en software funcional
- Convierte imágenes vectoriales a HTML/TailWind CSS y Javascript usando GPT-4V de OpenAI
1 comentarios
Opiniones de Hacker News
Soy Steve, de tldraw. Perdón, esto es un proyecto de juguete con patrones de seguridad pésimos. Si quieren ejecutarlo localmente o ver el código fuente, está aquí: https://github.com/tldraw/draw-a-ui
Pueden ver otros ejemplos en https://twitter.com/tldraw. Puedo responder preguntas sobre tldraw o sobre este proyecto. No es algo que vaya a quitarle el trabajo a alguien, pero es muy divertido para jugar, y hay un ejemplo más complejo aquí: https://twitter.com/tldraw/status/1725083976392437894
También tengo un servidor de licencias que acabo de publicar con licencia MIT. Está escrito en Elixir y ejecuta https://go.robocoder.app. Si necesitan ayuda con la configuración, pueden contactarme: https://github.com/emcmanus/robocoder-server/
Encontré la respuesta en el README de GitHub. Dice: “Para usar tu propia clave de API, necesitas acceso a usage tier 1; puedes revisar tu tier actual y cómo subirlo en la configuración de OpenAI”.
El prompt del sistema que está en el repositorio es este:
No estoy muy seguro de por qué se menciona "creative license" aquí. En cada generación, el prompt del usuario es el siguiente:
https://github.com/tldraw/draw-a-ui/blob/8a889bf36afc06fbb0c...
Parece lo bastante simple como para hacerlo correr “en privado” tomando una captura de un canvas común de tldraw y pasándola a la API junto con este prompt.
Probé meter un mockup de una pregunta de entrevista de Facebook. Tenía dos listas de checkboxes y dos botones para mover los elementos marcados de un lado al otro, y lo resolvió bien: https://gist.github.com/milesrichardson/2a2f77d4bfb19c3b28dc...
toList.appendChild(item.closest('li'));moviera el elemento. Todos los días se aprende algo.Sin ningún anuncio, el usuario no puede saber si realmente pasó algo al presionar el botón. Página de prueba: https://output.jsbin.com/jixoqur/quiet
Estas demos recientes muestran lo impresionante que ha sido el avance reciente del machine learning/IA, pero al mismo tiempo también muestran cuántos millones de desarrolladores en todo el mundo siguen reimplementando una y otra vez trabajo repetitivo y poco original.
La mayoría de las pantallas de UI se pueden describir con precisión en uno o dos párrafos, así que no sorprende que puedan representarse con bastante detalle dentro de un vector de embedding relativamente pequeño.
Los perfiles no técnicos que no han usado IA de forma intensiva en trabajo real son especialmente vulnerables a esto. Quienes la viven en la práctica suelen verla con más matices. Es tremendamente útil, pero también comete muchos errores, y para obtener resultados de nivel producción hay que ajustarla con cuidado. Incluso como optimista de la IA, creo que el valor es real y las demos impresionantes muestran hacia dónde vamos, pero todavía tomará tiempo que el resultado promedio alcance las expectativas infladas.
En esta demo son literalmente dos sliders que ajustan dos propiedades de CSS, así que la especificación de la UI no contiene mucha información. Con un lenguaje adecuado para especificar UI, habría sido código de tres líneas. La dificultad viene de tener que manejar todo el boilerplate de una UI web.
Lo raro es que en HN, cuando se habla de plataformas no-code tradicionales, todos detectan fácilmente sus límites de escalabilidad y mantenimiento, pero cuando se les agrega IA, de pronto parece que esos problemas se resolvieron y ya no hay que preocuparse por el espagueti que escupe una caja negra.
Lo que en realidad queríamos era separar funcionalidad y presentación. Casualmente, la web de HTML puro de 1996 era exactamente eso. Algo salió terriblemente mal de una forma inimaginablemente absurda, y nadie mejoró nada. En su lugar, nos quedamos con sombras y flexbox internos.
Una parte considerable del trabajo de oficina consiste en repetir las mismas tareas una y otra vez, y en muchas empresas distintas hay personas repitiendo trabajos que en esencia son los mismos.
Esto parece una herramienta para hacer que los diseñadores de UI, o quizá los product owners, parezcan inteligentes y competentes. Pero el trabajo real seguirá yendo a los programadores, como ahora.
El diseñador de UI podrá entregar una “demo”, pero ¿cómo se conectará esa funcionalidad básica con el resto de la app? No lo hará.
Desde antes de GPT ya existía el argumento de que los prototipos o mockups muy tempranos deberían verse visualmente tan poco terminados como corresponde al nivel de funcionalidad interna. Los prototipos bonitos y aparentemente “funcionales” pero solo de UI generan expectativas poco realistas aunque se expliquen claramente, y aumentan la probabilidad de la proto-ducción, donde el prototipo termina convirtiéndose tal cual en producción.
He visto varios proyectos donde, por las restricciones de un diseño de Figma aprobado por algún ejecutivo, se les terminó imponiendo a los ingenieros un diseño de sistema pésimo. Claro que esas organizaciones tienen problemas más grandes, pero los mockups de alta fidelidad fáciles de hacer empeoraron este problema más que los wireframes.
Si quieres que lo haga mejor, agrega también "it's very important for my career".
Los desarrolladores que hacen demos para agrandar y rotar cajas están a punto de quedarse sin trabajo.
Mientras hablábamos con un cliente sobre cómo integrar nuestro software con el suyo, el cliente nos envió una captura de pantalla de su formulario principal.
Metí esa captura en ChatGPT y le dije: “hazme un formulario de React con Bootstrap que se vea así”. Después de algunos ajustes, conecté mi software, y unas horas más tarde el cliente quedó sorprendido al ver una prueba de concepto integrada tan rápido. Cuando tengo problemas de layout con CSS en desarrollo web, suelo subir una captura a ChatGPT y preguntarle cómo resolverlos; la demo del tuit se ve bastante parecida.
Han seguido apareciendo frameworks excelentes para casos de uso sofisticados, pero excesivos para tareas comunes y básicas. Hubo algunas excepciones, pero a la mayoría de los desarrolladores web no les gustan. Tampoco se ven muy impresionantes en el currículum y, siendo honestos, ¿quién quiere pasarse toda la carrera haciendo formularios web?
Al final son tortugas sobre tortugas :+)
Para programar, he usado ChatGPT más para procesar datos rápidamente con pipes de línea de comandos o scripts de Bash que para código. Si le das la salida de un comando y le pides Bash para formatear, agrupar, ordenar o extraer lo que quieres, se vuelven fáciles cosas que antes quizá no habría hecho, como depurar o comprobar hipótesis. Podría hacerlo manualmente, pero sería lento y para recordar opciones y argumentos tendría que buscar o leer páginas man. Para código uso principalmente GH Copilot.
Pueden llamarme escéptico, pero no creo en el futuro de las soluciones no-code. Hay que alinear botones en resoluciones de dispositivos pequeños, dejar márgenes para que se vea bien en otros idiomas, y siempre siguen apareciendo otros requisitos.
Como mucho, servirá para crear apps más rápido con un lenguaje más abstracto. Eso funciona para cosas extremadamente básicas y comunes, como el ta-te-ti, pero no encaja con trabajos originales.
Imaginen a decenas de personas que saben apenas un poco de tecnología haciendo bocetos y presionando “hazlo de verdad” para agregar funciones. Cada una genera cientos de líneas de código. Al final del día, alguien tiene que entender ese resultado, y como la salida es no determinista, eso es lo único que nos queda.
Al mismo tiempo, nuevas personas que no aprendieron, o no quisieron aprender, a cantar afinadas crearán géneros musicales completamente nuevos y pop masivo con mucho menos esfuerzo. Los artesanos también lo usarán ocasionalmente para reforzar algunos flujos de trabajo, pulir el acabado y acelerar.
Creo que herramientas como Canva y Figma van a incorporar estas funciones con fuerza y mejorar mucho los wireframes y demos de alta fidelidad.
Squarespace, Wix y otros ya se quedaron con la parte baja del mercado; si no, lo habría hecho el outsourcing en India.
Esto es una evolución natural del mismo concepto. Si fuera product manager de un creador de sitios web, me lanzaría de inmediato a integrar este tipo de builder con IA. Nunca funcionará para tareas de negocio complejas y apenas definidas, pero sí podría crear bien algo como una calculadora de costos para un negocio de fotografía.
El software de flujos de trabajo para procesos de negocio es bastante popular. Hay muchas apps en las que la gente hace cosas similares con drag and drop o editores interactivos de widgets, y pueden manejar formularios complejos, relaciones padre-hijo y transiciones de estado. Con algo como GPT Vision, se podría saltar el drag and drop de widgets y usar herramientas de dibujo más libres o bocetos hechos a mano. El ejemplo más popular hoy probablemente sea Notion, y desde mucho antes ya existían ejemplos más complejos.
Ahora me siento viejo. Hace décadas, con VB o Delphi se podía hacer casi lo mismo a una velocidad parecida. Solo que, en vez de que la herramienta infiriera a partir de los nombres de las etiquetas, el resultado era un poco más determinista.
Ya teníamos cosas así, pero olvidamos que se podían hacer sin meter todo en el navegador ni usar la enorme computación de los modelos de IA generativa. Me siento como un viejo gritándole a una nube.
Claro, el código de Dreamweaver era feo y casi inutilizable, y el código generado por IA a veces no está tan mal. Aun así, creo que ya habíamos llegado bastante cerca de donde estamos hoy.
VB era una herramienta muy opinativa y solo creaba interfaces estilo Windows nativo. No se trataba de replicar en VB, píxel por píxel, cualquier mockup arbitrario traído por un diseñador, con un look and feel totalmente personalizado. Hoy la mayoría de las GUI de productos son parte de la marca. Para bien o para mal, todas las empresas quieren un look and feel y comportamientos de UI distintivos. Por eso las herramientas para construirlas tienen que ser mucho más complejas. En el navegador se puede recrear VB, y de hecho mucha gente ha hecho cosas parecidas, pero no se usa mucho para desarrollo de productos porque las empresas no quieren interfaces aburridas y genéricas.
Básicamente funciona enviando una captura de pantalla de un diagrama a GPT-4 y diciéndole “implementa esto”.
Diez años después, apareció por uno o dos años algo llamado Visix Vibe que ofrecía lo mismo para Java, que entonces era un lenguaje relativamente nuevo. Cada tantos años, más o menos cada 4 o 5 o cada 10, alguien quiere hacer desaparecer toda la complejidad. Pero al final terminan construyendo un sistema operativo.
Y de hecho funcionan bien, interactúan con el resto del toolkit de la forma esperada, y la internacionalización y la accesibilidad también funcionan de manera consistente. No hay razón para que HTML no pueda hacer mucho más de forma nativa, y eso ahorraría cada año una enorme cantidad de horas de desarrollo y frustración de usuarios. Pero simplemente no se hace.