"Acho que preciso ir me deitar um pouco."
(twitter.com/multikev)- Impressões após testar a demo do Make Real, da TLDraw
- Ferramenta que usa IA para transformar desenhos em software funcional
- Usa o GPT-4V da OpenAI para converter imagens vetoriais em HTML/TailWind CSS e Javascript
1 comentários
Opiniões no Hacker News
Aqui é o Steve, da tldraw. Desculpem, isto é um projeto de brinquedo com padrões de segurança péssimos. Se quiserem rodar localmente ou ver o código-fonte, está aqui: https://github.com/tldraw/draw-a-ui
Outros exemplos podem ser vistos em https://twitter.com/tldraw. Posso responder perguntas sobre a tldraw ou este projeto. Não é algo que vá tirar o trabalho de alguém, mas é muito divertido de brincar, e há um exemplo mais complexo aqui: https://twitter.com/tldraw/status/1725083976392437894
Também tenho um servidor de licenças que acabei de publicar sob licença MIT. Foi escrito em Elixir e roda https://go.robocoder.app. Se precisar de ajuda para configurar, pode entrar em contato: https://github.com/emcmanus/robocoder-server/
Encontrei a resposta no README do GitHub. Ele diz que “para usar sua própria chave de API, você precisa ter acesso ao usage tier 1; confira seu tier atual e como aumentá-lo nas configurações da OpenAI”
O prompt de sistema no repositório é este:
Não sei bem por que "creative license" é mencionado aqui. Para cada geração, o prompt do usuário é o seguinte:
https://github.com/tldraw/draw-a-ui/blob/8a889bf36afc06fbb0c...
Parece simples o bastante para também rodar “em privado” tirando uma captura de tela de um canvas comum da tldraw e passando para a API junto com esse prompt
Testei com um modelo vindo de uma pergunta de entrevista do Facebook. Eram duas listas de checkboxes e dois botões para mover os itens marcados de uma para a outra, e ele conseguiu fazer direito: https://gist.github.com/milesrichardson/2a2f77d4bfb19c3b28dc...
toList.appendChild(item.closest('li'));movia o item. Aprende-se uma coisa nova todo diaSem qualquer anúncio, o usuário não consegue saber se algo realmente aconteceu ao apertar o botão. Página de teste: https://output.jsbin.com/jixoqur/quiet
Essas demos recentes mostram ao mesmo tempo o quanto os avanços recentes em machine learning/IA são impressionantes e o quanto milhões de desenvolvedores no mundo inteiro continuam reimplementando trabalhos repetitivos e pouco criativos.
Como a maioria das telas de UI pode ser descrita com precisão em um ou dois parágrafos, também não é surpreendente que elas possam ser representadas com bastante detalhe dentro de um vetor de embedding relativamente pequeno.
Profissionais não técnicos que ainda não usaram IA de forma intensa no trabalho são especialmente vulneráveis a isso. Quem vive isso no campo costuma enxergar de forma mais nuanceada. É extremamente útil, mas também erra bastante, e para obter resultados em nível de produção é preciso ajustar com cuidado. Mesmo como otimista em relação à IA, acho que o valor é real e as demos impressionantes mostram para onde estamos indo, mas ainda vai levar tempo até o resultado médio alcançar as expectativas infladas.
Nesta demo, são literalmente dois sliders ajustando duas propriedades CSS, então não há muita informação na especificação da UI. Se existisse uma linguagem adequada de especificação de UI, seriam três linhas de código. A dificuldade vem de ter que gerenciar o boilerplate de UI web.
O estranho é que, no HN, quando se fala de plataformas no-code tradicionais, as pessoas percebem facilmente os limites de escalabilidade e manutenção, mas quando entra IA parece que esses problemas de repente são resolvidos e não é mais preciso se preocupar com o espaguete cuspido por uma caixa-preta.
O que se queria de fato era separar funcionalidade e apresentação. Por coincidência, a web de HTML puro de 1996 era exatamente assim. Algo deu terrivelmente errado de uma forma absurdamente idiota, e ninguém melhorou. Em vez disso, ficamos com coisas como efeitos de sombra e flexbox interno.
Uma parte considerável do trabalho de escritório consiste em repetir as mesmas coisas, e muitas vezes pessoas diferentes, em empresas diferentes, repetem tarefas essencialmente iguais.
Isso parece uma ferramenta que faz designers de UI, e talvez product owners, parecerem inteligentes e competentes. Mas o trabalho de verdade vai continuar indo para os programadores, como hoje.
O designer de UI pode entregar uma “demo”, mas como essa funcionalidade básica vai se conectar ao restante do app? Não vai.
Mesmo antes do GPT, já havia o argumento de que protótipos muito iniciais ou mockups deveriam parecer visualmente pouco acabados, proporcionalmente ao nível de funcionalidade interna. Protótipos só de UI bonitos e aparentemente “funcionais” criam expectativas irreais mesmo quando explicados claramente, e aumentam a chance de proto-duction, quando o protótipo vira produção do jeito que está.
Já vi várias vezes projetos em que um design do Figma aprovado por algum executivo impôs restrições que empurraram uma arquitetura de sistema horrível para os engenheiros. Claro que organizações assim têm problemas maiores, mas mockups de alta fidelidade fáceis de fazer pioraram esse tipo de problema em comparação com wireframes.
Se quiser que ele faça melhor, é só acrescentar "it's very important for my career".
Desenvolvedores que fazem demos para aumentar e girar caixas agora estão prestes a perder o emprego.
Enquanto discutíamos com um cliente como integrar nosso software ao software dele, o cliente nos enviou um screenshot do formulário principal.
Coloquei esse screenshot no ChatGPT e pedi: “crie um formulário React desse tipo usando Bootstrap”. Depois de alguns ajustes, conectei meu software, e algumas horas depois o cliente ficou surpreso ao ver uma prova de conceito com o sistema integrado tão rapidamente. Quando tenho problemas de layout CSS em desenvolvimento web, costumo subir um screenshot para o ChatGPT e perguntar como resolver; a demo do tweet parece bem parecida.
Continuaram surgindo frameworks excelentes para casos de uso sofisticados, mas exagerados para tarefas comuns e básicas. Houve exceções de vez em quando, mas a maioria dos desenvolvedores web não gosta muito delas. Também não ficam impressionantes no currículo e, sinceramente, quem quer passar a carreira inteira fazendo formulários web?
No fim, são tartarugas sobre tartarugas :+)
Para programação, usei mais o ChatGPT para processar dados rapidamente com pipes de linha de comando ou scripts Bash do que para código em si. Se você fornece a saída de um comando e pede Bash para formatar, agrupar, ordenar ou extrair no formato desejado, fica mais fácil fazer coisas que normalmente não faria, como depuração ou verificação de hipóteses. Daria para fazer manualmente, mas é lento, e para lembrar opções e argumentos seria preciso pesquisar ou consultar páginas man. Para código, uso principalmente o GH Copilot.
Podem me chamar de cético, mas não acredito no futuro das soluções no-code. É preciso alinhar botões em resoluções de dispositivos pequenos, deixar margens para que fique bom em outros idiomas, e sempre há outros requisitos
No máximo, isso vai permitir criar apps mais rápido usando uma linguagem mais abstrata. Funciona para coisas extremamente básicas e comuns, como jogo da velha, mas não serve para trabalhos originais
Imagine dezenas de pessoas com um pouco de conhecimento técnico fazendo esboços e clicando em “faça de verdade” para adicionar funcionalidades. Cada uma gera centenas de linhas de código. No fim do dia, alguém precisa entender esse resultado, mas, como a saída é não determinística, é só isso que resta para nós
Ao mesmo tempo, pessoas novas que não aprenderam, ou não quiseram aprender, a cantar afinado criarão gêneros musicais totalmente novos e pop de massa com muito menos esforço. Os artesãos também o usarão ocasionalmente para reforçar alguns fluxos de trabalho, melhorar o acabamento e ganhar velocidade
Ferramentas como Canva e Figma provavelmente vão adotar esse tipo de recurso de forma agressiva e melhorar bastante wireframes de alta fidelidade e demos
Squarespace, Wix etc. já tomaram a parte inferior do mercado; se não fossem eles, o outsourcing para a Índia teria tomado
Isto é uma evolução natural do mesmo conceito. Se eu fosse gerente de produto de um construtor de sites, correria imediatamente atrás dessa integração de builders com IA. Isso jamais funcionará para trabalhos de negócio complexos e mal definidos, mas deve conseguir fazer bem algo como uma calculadora de custos para um negócio de fotografia
Software de workflow para processos de negócios é bastante popular. Há muitos apps em que as pessoas fazem coisas parecidas com drag-and-drop ou editores de widgets interativos, e que conseguem lidar com formulários complexos, relações pai-filho e transições de estado. Usando algo como GPT Vision, dá para pular o drag-and-drop de widgets e usar ferramentas de desenho mais livres ou esboços feitos à mão. O exemplo mais popular hoje talvez seja o Notion, e há exemplos bem mais complexos que existem há muito mais tempo
Agora me sinto velho. Décadas atrás, acho que já dava para fazer quase isso na mesma velocidade com VB ou Delphi. Só que o resultado era um pouco mais determinístico, em vez de a ferramenta inferir a partir do nome dos labels
Nós já tínhamos esse tipo de coisa, mas esquecemos que dava para fazê-la sem enfiar tudo no navegador e sem usar a computação enorme dos modelos de IA generativa. Sinto-me como um velho gritando para as nuvens
Claro que o código do Dreamweaver era feio e praticamente inutilizável, enquanto o código gerado por IA às vezes não é tão ruim. Ainda assim, parece que já tínhamos chegado bem perto do ponto em que estamos hoje
VB era uma ferramenta muito opinativa e só criava UIs no estilo nativo do Windows. Ninguém pegava um mockup arbitrário trazido por um designer, com look and feel totalmente customizado, e o replicava pixel a pixel no VB. Hoje, a GUI da maioria dos produtos faz parte da marca. Para o bem ou para o mal, toda empresa quer um look and feel e comportamentos de UI distintos. Por isso, as ferramentas para criar isso precisam ser muito mais complexas. Dá para recriar o VB no navegador, e muita gente de fato fez coisas parecidas, mas isso não é muito usado no desenvolvimento de produtos porque as empresas não querem UIs entediantes e genéricas
Basicamente, funciona enviando uma captura de tela de um diagrama para o GPT-4 e dizendo “implemente isto”
Dez anos depois, havia algo chamado Visix Vibe, que circulou por um ou dois anos oferecendo a mesma coisa para Java, que na época era uma linguagem relativamente nova. A cada poucos anos, mais ou menos a cada 4 ou 5 anos, ou 10, alguém quer fazer toda a complexidade desaparecer. Mas, no fim, eles acabam criando um sistema operacional
E, de fato, funciona corretamente, interage com o restante do toolkit da forma esperada, e internacionalização e acessibilidade também funcionam bem de modo consistente. Não há motivo para o HTML não fazer muito mais coisas só com o que vem por padrão, e isso economizaria uma quantidade enorme de tempo de desenvolvedores e frustração de usuários todos os anos. Mas simplesmente não fazemos isso