back to indexThe Accidental AI Canvas - with Steve Ruiz of tldraw
Chapters
0:0 Introductions
1:2 Steve's Background In Fine Arts and Transition into Tech
8:22 The creation of tldraw and its open source origin
15:44 The Inception and Growth of tldraw
18:40 The Integration of AI with tldraw and Make It Real Feature
21:56 Discussion on Multimodal Prompting and Iterative Design
32:32 The Concept of Parallel Prompting in Design
34:11 Impact of AI on developer jobs
37:28 Additional Layers in Multimodal Prompting
45:18 Introduction of DrawFast and Lens Projects
50:3 tldraw 2.0 and the future of the project
55:41 The Competitive Landscape of Canvas Tools and tldraw's Unique Position
60:22 Advice for Founders: Following Your Interests and Desires
00:00:03.040 |
I'm very excited to have my good friend, Steve Ruiz, 00:00:13.760 |
I have had the good fortune of knowing you before you got famous 00:00:17.400 |
and actually hanging out in the precise office and studio 00:00:26.560 |
I think it's been something that's sort of years in the making, 00:00:29.320 |
but it's probably looks like overnight success to a lot of people. 00:00:41.960 |
Well, I like to people give you a little background on the person. 00:00:45.120 |
You don't have a lot of detail on LinkedIn, just like myself. 00:00:49.000 |
I just found out just before recording that you're also a late entrance into tech. 00:00:54.440 |
So maybe just like, you know, what's your background coming into something 00:00:59.320 |
What makes you so unique at doing sort of creative, collaborative experiences? 00:01:04.520 |
Like, you know, I know you and I've actually used TL Draw. 00:01:09.240 |
So I have some appreciation for how hard this thing is. 00:01:12.320 |
Like you said, I kind of came into this a little late 00:01:17.280 |
My background is actually in like fine art and studio art. 00:01:20.680 |
So I have my master's from University of Chicago in visual art 00:01:25.000 |
and would write about contemporary art and put together exhibitions 00:01:32.400 |
And that was back when I was living in Chicago. 00:01:39.560 |
kind of, you know, got a new studio, kept that going. 00:01:42.120 |
But when I turned 30, I kind of decided I should probably make some 00:01:45.840 |
make some money and kind of work with other people closer than I was at the time. 00:01:55.160 |
And I always had kind of like an analytical background or kind of side to me. 00:02:00.440 |
My day jobs were, you know, I was working for lawyers. 00:02:02.720 |
I was doing this writing, like magazines and stuff. 00:02:05.800 |
And so when I when I did that, kind of that switch back 00:02:11.720 |
eventually to to design and product design, it. 00:02:17.040 |
I was also able to use a little bit of like a tiny little bit of technical skill 00:02:22.040 |
that I had had just building like WordPress websites for myself 00:02:27.880 |
kind of take that and just some natural curiosity 00:02:30.840 |
around the way that the products work and kind of create a career direction 00:02:36.320 |
that was more around prototyping and like technical design and doing that 00:02:40.320 |
kind of like doing the design on the bits of a product 00:02:51.120 |
maybe more there's more questions about them. 00:02:56.520 |
There's no clear answer to terms of like, how should this work? 00:02:59.680 |
You know, in all those places, you kind of have to build something 00:03:02.680 |
in order to to figure out what you want to build. 00:03:05.600 |
It turns out, you know, to skip right to the end for a moment, like 00:03:10.080 |
canvas is just full of those types of problems. 00:03:14.400 |
It's like kind of an extreme form of the same problem. 00:03:21.840 |
And I used at the time a product called Framer. 00:03:26.600 |
That was back when it was more of like a more of like a code product 00:03:31.560 |
than than what it is now, which is more of like a visual 00:03:34.440 |
visual builder that is kind of backed by code. 00:03:43.280 |
No one knew how it worked. No one could use it. 00:03:45.120 |
So I got good at it and got a lot of advancement, early traction, 00:03:50.800 |
But it also, you know, taught me to code, taught me to think about, 00:03:54.520 |
you know, building things that other people are going to use. 00:04:00.320 |
kind of like the type of code that you write when you're in an exploratory phase 00:04:04.520 |
rather than like in a like execution, like production phase. 00:04:11.480 |
Kerry, I actually ended up working for Framer. 00:04:15.880 |
which is very different than the type of product design that I was doing before that. 00:04:18.680 |
I did a lot of video tutorials and writing and tweeting, 00:04:25.520 |
trying to figure out some way to make technical design content interesting, 00:04:31.240 |
you know, in little chunks that people could could consume. 00:04:34.920 |
And I joke that like they probably got less out of me 00:04:41.040 |
in that job than I got out of the job itself. 00:04:46.760 |
Not sure if I'd helped anyone really learn how to use Framer, 00:04:52.040 |
and learn how to record a good gif and learn how to talk into a microphone 00:04:59.760 |
And so in the next roles that I had, which were 00:05:02.720 |
I worked for a company called Play out in New York, who is also doing design tools. 00:05:06.680 |
And I really wanted to work in design tools after that. 00:05:09.480 |
Play's doing like a mobile, I guess, or now it's like just general iOS, Mac OS 00:05:14.680 |
platform specific design tools where you're you're using actual elements 00:05:19.240 |
from the kind of widgets from that that component or component collection. 00:05:24.400 |
I don't know in your designs and kind of bringing that a lot closer to the end product. 00:05:29.440 |
And at the same time, I started getting into open source. 00:05:34.080 |
I'd kind of done some popular open source before. 00:05:41.000 |
It was it was locked down. I had a little bit more time. 00:05:43.680 |
I also had a daughter, so not that much more time. 00:05:49.520 |
And yeah, I guess that open source that I started getting into 00:05:54.400 |
started swinging back toward some of my kind of artistic interests 00:05:58.000 |
or studio interests and kind of visual interests. 00:06:02.560 |
the problem space was was really underserved and really 00:06:05.920 |
it wasn't necessarily like technical problems that were really hard. 00:06:11.600 |
It was more subjective problems where I think the thing that was lacking 00:06:20.960 |
or the like the feeling for what good solutions were. 00:06:25.400 |
So the first kind of problem like this that I got into was arrows. 00:06:29.840 |
Like I had, you know, two boxes or two points arbitrarily placed. 00:06:34.160 |
I want a good looking arrow, like a quote, Mark, like good looking arrow between the two. 00:06:42.880 |
Maybe it involves some angles and linear geometry and vectors and all that. 00:06:46.680 |
But it's like the good looking part really was the 00:06:49.600 |
was just like my own taste and my own eye and like tons and tons of iterations. 00:06:57.520 |
And there's a million ways for this, you know, edge cases 00:07:00.120 |
when things are overlapping or things are too far away or too close and all this. 00:07:03.880 |
But I was working on this and I was working on this in public on Twitter, 00:07:08.120 |
recording GIFs of boxes and arrows kind of squishing together and all that. 00:07:15.320 |
And they liked kind of following me on this somewhat obsessive journey, 00:07:19.880 |
which was technical, but it wasn't like it wasn't like trying to crack an algorithm. 00:07:24.640 |
It was like trying to trying to figure out and identify the the rules 00:07:29.680 |
governing an aesthetic experience or an aesthetic, you know, 00:07:39.600 |
But the next one really is what what kind of broke my popularity 00:07:43.800 |
on Twitter or just in the space, and that was a project 00:07:47.680 |
that ended up being called Perfect Freehand. This is 00:07:53.960 |
If you've ever used like an iPad pencil or drew with like a stylus 00:07:57.960 |
and Photoshop or something like the harder you push, 00:08:02.000 |
the thicker the line gets and the lighter you push, the thinner the line gets. 00:08:13.920 |
But if you're doing it in a kind of a Photoshop style, like raster environment, 00:08:18.680 |
you know, the solution is pretty straightforward. 00:08:22.520 |
You interpolate like tons and tons of tons of whatever shape you're drawing 00:08:27.600 |
in between each point that you've actually moved your mouse to. 00:08:30.960 |
And you just change the size of that little stamp that you're making. 00:08:34.320 |
So it's like a little circle, slightly bigger circle, 00:08:36.960 |
slightly bigger circle, slightly bigger circle. 00:08:39.080 |
But they're all really tightly packed together. 00:08:42.600 |
a line that's changing its width as it moves. 00:08:54.320 |
I wanted to get a bunch of points in and then like a polygon 00:08:58.120 |
that sort of defined the outside of that shape coming out, 00:09:03.200 |
And it turned out that this was like an insanely hard problem 00:09:09.160 |
And if they have solved it, they certainly didn't open source it. 00:09:13.080 |
But I couldn't find any good example of a variable width line 00:09:19.920 |
consistent enough, et cetera, for for it to be digital ink. 00:09:24.560 |
And so, again, I did this in public, did this on Twitter, 00:09:31.760 |
but, you know, like slowly attracting more like getting closer to the solution, 00:09:36.480 |
attracting more people who had solved this problem or tried to do this 00:09:41.360 |
And let me tell you about, you know, how arcs work in this environment 00:09:52.160 |
people who had like we're experts on this or or something like it. 00:10:02.760 |
little library for for doing exactly what I wanted. 00:10:06.200 |
Like here are a bunch of mouse points or just arbitrary points. 00:10:09.560 |
Like, give me back a polygon that surrounds them. 00:10:11.600 |
And let me essentially draw a line around the edge of that polygon, 00:10:20.760 |
And that's now used in like Canva uses it like Draw.io uses it. 00:10:25.360 |
ExcalDraw uses it. We use it at Tealdraw all over the place. 00:10:27.920 |
Yeah, it's it's just like a significantly better 00:10:35.880 |
And there really wasn't even any known solution in that space. 00:10:39.280 |
So someday I'm going to be checking out at a hotel and see my own ink 00:10:42.320 |
and, you know, a little iPad or something like that. 00:10:49.920 |
just kind of finish the whole origin story or something. 00:10:53.400 |
But that's kind of led right into Tealdraw is that I had integrated my ink 00:10:58.280 |
into ExcalDraw and I spent time in that that code base. 00:11:08.640 |
build perfect freehand and visualize it and sort of, you know, 00:11:12.840 |
do my ink and pan and zoom in and program against this thing. 00:11:18.280 |
And so I had done including Globstuck design, which I won't necessarily talk about. 00:11:22.040 |
But it's a yeah, it's kind of like a weird experimental design tool. 00:11:28.080 |
But anyway, it was like as an infinite canvas. 00:11:30.400 |
It was very much like, you know, Framer, Figma, et cetera. 00:11:33.160 |
And after doing ExcalDraw and been working on these kind of projects 00:11:37.120 |
that were in the same area, I was like, you know, maybe there's 00:11:40.560 |
there's a market here for or not even a market. 00:11:44.440 |
It was just like, I think the thing that I want to work on next is 00:11:48.200 |
is like a general purpose, kind of like whiteboard like engine. 00:11:52.880 |
Mostly for myself, I built globs, but the only thing that you could put 00:11:59.880 |
So I had all this like code and these solutions that I was like hanging around. 00:12:08.560 |
And that was the next story that I was kind of telling on Twitter is that like, 00:12:12.360 |
OK, here's how selection works in something like Figma or or something like Miro 00:12:19.000 |
These these kind of like not heuristics, these sort of conventions 00:12:23.760 |
that are part of this really complicated thing called like the infinite canvas, 00:12:31.120 |
Flash and before then, you know, Adobe Illustrator and before then all the way back. 00:12:36.240 |
And they're all pretty consistent between products. 00:12:40.040 |
Like if you're making a canvas this way, you have to kind of do them all. 00:12:42.960 |
Like your undo, redo should work in a specific way. 00:12:45.200 |
Your selection should work in a specific way. 00:12:47.960 |
Like, you know, the camera position and how the camera moves 00:12:52.360 |
All the modifier like option drag to clone and then all of those 00:12:55.720 |
became their little vignettes of of how I was building this thing. 00:12:59.840 |
This was now like spring of twenty twenty one. 00:13:08.280 |
from any infinite canvas related creative product 00:13:12.960 |
kind of like in my inbox being like, hey, can you come work for us? 00:13:17.920 |
And so I was either going to go work for Figma or Adobe. 00:13:20.720 |
And I ended up going with Adobe in part because I think FigJam had just come out. 00:13:27.640 |
And the team at Figma were like, well, this this is competitive with with FigJam. 00:13:39.560 |
It's just me trying to get to 10,000 Twitter followers. 00:13:44.280 |
So, no. So I went with Adobe and I told but I told them, I'm like, 00:13:51.160 |
Like, this is actually a pretty fun project for me. 00:13:55.560 |
You know, let me start in January and just work on this. 00:14:04.680 |
and and said, I'm going to go work on this little open source thing for six months. 00:14:09.000 |
I have some, you know, contracting money in the bank. 00:14:12.120 |
Let's drain the company account and and do this. 00:14:16.480 |
The like I went full time from a Wednesday on Thursday. 00:14:22.920 |
I had a very large communications company say, hey, we're moving our 00:14:28.520 |
whiteboard that we've designed for specific touchscreen devices. 00:14:35.680 |
It turns out people want to use the whiteboard on their phones. 00:14:38.640 |
And on their laptops and all that, like like they do with Miro. 00:14:41.440 |
And so we need to make this thing that we wrote in C++ to be highly performant on these, 00:14:46.960 |
you know, kind of tiny microcomputers that were part of these interactive touchscreen TVs. 00:14:52.160 |
We have to make this work on the web and we don't think it's going to be good enough. 00:14:56.920 |
We don't have the team. Can we just build on what you're building? 00:15:01.040 |
It was just sort of but it was getting there. 00:15:04.760 |
Like, give me like seventy five thousand dollars. 00:15:08.160 |
Just, you know, don't I don't want to talk to you very often. 00:15:14.080 |
I never want to see your code, but you can look at mine. 00:15:19.280 |
And so I was, you know, funded for those those first six months. 00:15:22.640 |
And I got to work on this, you know, without having to feel bad about it. 00:15:27.520 |
And I'd also opened up, eventually opened up TealDRAW to be 00:15:32.960 |
like sponsorware that if you were sponsoring me on GitHub, 00:15:37.280 |
you could you could access it, you know, in its kind of primitive state on TealDRAW.com. 00:15:42.000 |
And it had like a couple hundred people join that way and sponsor me. 00:15:46.720 |
So at one point, like my sponsorship was, you know, over five thousand dollars a month, 00:15:51.600 |
which is not massive money, but it's like I wasn't doing anything different. 00:15:55.360 |
So it was pretty good as a kind of a passive thing. 00:15:57.440 |
Anyway, I shipped it at the end of November 2021, and it was very popular. 00:16:08.000 |
I was just like, you know, the TealDRAW.com app, the library, the canvas. 00:16:12.880 |
And, you know, I was organized in a certain way. 00:16:19.840 |
You know, let's just let's just throw this out into the world and see where it goes. 00:16:25.200 |
It was like number one on Hacker News for a while. 00:16:29.280 |
A lot of people like 40,000 people showed up at TealDRAW.com to use it on that launch date. 00:16:37.520 |
Like so far, this was all within my same narrative of, OK, this is cool. 00:16:41.600 |
I'll make this and then I'll go do something else afterwards. 00:16:43.680 |
The thing that really surprised me was how many teams wanted to build on this. 00:16:49.840 |
And they weren't like they weren't building whiteboards. 00:16:53.520 |
They weren't like Miro competitors or Figma competitors. 00:16:56.720 |
They were just like apps that you wouldn't expect to have infinite canvases inside of them. 00:17:04.240 |
But and they wouldn't have built it except that I had suddenly made this very easy. 00:17:10.000 |
And I had suddenly shrunk the development time of this like whiteboard like feature 00:17:15.360 |
in their product from like three years and three people to three weeks and one person. 00:17:24.160 |
Just like, you know, no new developers, no new team, no new graphics experts. 00:17:29.360 |
Like computational geometry guys like, you know, we can do this. 00:17:31.920 |
We the canvas itself is like React all the way down. 00:17:34.480 |
So even if you wanted to customize it, you'd just be writing React components and then 00:17:39.200 |
It got like I was totally overwhelmed by inbound from companies who were like, I want to build 00:17:44.720 |
this or I want to acquire you or I want to, you know, I want you to build something for 00:17:51.120 |
You know, how do you help me or how can I do this? 00:17:54.080 |
And and people were shipping things also like within two weeks, three weeks, like production 00:18:00.000 |
ready, like people had taken this and run with it. 00:18:02.400 |
And so the the story that I started to get around Tealdraw was that like, OK, well, this 00:18:08.240 |
is this is a cool little whiteboard, but it's also kind of like filling a gap that no one 00:18:15.120 |
knew was there, which was that like in the same way that like Mapbox or Google Maps, 00:18:22.640 |
you know, provide maps for apps that would definitely not build maps themselves. 00:18:26.400 |
Like maps are insanely hard, like your little local food delivery app like wouldn't just 00:18:30.800 |
wouldn't have a map in it, you know, like easy. 00:18:35.040 |
If they can have it in there, then absolutely it is a value add. 00:18:37.920 |
It's just completely impractical to do themselves. 00:18:40.800 |
And what I learned talking to folks was that like every PM had used Miro or used Figma 00:18:47.840 |
or used, you know, one of these other collaborative tools. 00:18:51.200 |
And every creative product person was like, well, this is fun. 00:18:59.040 |
Like, why don't we do why don't we why can't we put our information on, you know, why can't 00:19:03.920 |
we put our CRM on the canvas or why can't we do our sales stuff here? 00:19:07.520 |
Like we're already kind of using Miro for this. 00:19:09.360 |
Like, why don't we give why couldn't we give this to our customers as well? 00:19:12.640 |
Like, why don't we build a product around this? 00:19:14.160 |
And it was just a technical no until, you know, November 24th, 2021, when suddenly it 00:19:23.600 |
was like a technical maybe and yeah, there was there was absolutely demand. 00:19:29.760 |
So hence the, you know, I had to call Adobe and say, no, I'm not going to come in on Monday. 00:19:35.440 |
Like it turned out that the best possible outcome of this happened and there's actually 00:19:42.080 |
And then I went out and I raised a seed round from Lux in New York and Amplify in California 00:19:50.640 |
You know, on the story of, yeah, this is this is cool. 00:19:57.120 |
And, you know, by then I had had almost $200,000 of sponsorship, you know, and people were 00:20:02.080 |
just signing up and signing up because there was no way to even be a customer. 00:20:09.600 |
And but also, yeah, there's a massive 200, you're not saying 200k a month. 00:20:16.240 |
But like, I mean, I had had up to then, the amount of sponsorship that I had received 00:20:24.000 |
I think some of the recurring stuff was like, like 5,000 a month. 00:20:37.840 |
Certainly the but yeah, and just the amount of like kind of validation that had come in 00:20:44.640 |
around this was like more than more than usual. 00:20:48.080 |
So race company or race around, put together a team here in London, and basically had just 00:20:58.400 |
Since then, you know, we reconfigured the project around, okay, we're going to be building 00:21:02.480 |
this not necessarily for end users, but for teams to use as kind of an infrastructure 00:21:07.200 |
product, a developer product, something closer to Mapbox. 00:21:12.000 |
And, you know, we were making demos to kind of like show different ways that it could 00:21:16.640 |
Certainly the collaboration thing is a big one, but the fact that you could put anything 00:21:21.040 |
on the canvas that you can put on a website, just because it is a, it is a web, like all 00:21:33.840 |
And then I just raised like a 2 million extension for the company. 00:21:40.320 |
While I was on the final pitch for that, the Dev Day was happening at OpenAI. 00:21:47.520 |
And in the morning I woke up and I was getting all this kind of action on Twitter because 00:21:53.360 |
a developer at Figma had used teal draw to make this little demo where you could draw 00:21:58.480 |
a website, click a button and get back a big pop up that had your website in there. 00:22:05.840 |
It was like a prompt, like, you know, hey, you're a developer, you just got this wireframe 00:22:12.000 |
Can you give it back as a single page HTML file? 00:22:18.400 |
And then you could show that website to whoever is using the app. 00:22:22.480 |
And we took that and we're like, wow, you could do so much more with this, like with 00:22:28.640 |
teal draw, just like it's only scratching the surface of the type of integration that 00:22:38.720 |
It was kind of getting towards the end of the year. 00:22:40.240 |
I was like, all right, let's let's just take this and have some fun. 00:22:44.000 |
Maybe we'll get like 200 likes or something like that. 00:22:49.280 |
It was like, I think we're at like for this month, last 30 days, like 22 million views 00:22:59.360 |
It was really, really, really popular for a couple of days. 00:23:02.000 |
If you're on Twitter and at all technical, you might have just seen a ton of teal draw 00:23:06.320 |
stuff on your timeline or about two weeks ago, three weeks ago. 00:23:10.480 |
Well, so, yeah, that kind of brings us up almost to today. 00:23:15.200 |
You just released something two hours ago, which we'll talk about. 00:23:17.600 |
But maybe this is a good time to bring up the screens, you know, for those who. 00:23:30.080 |
You can jump over to the YouTube to see stuff. 00:23:32.720 |
But this is an inherently visual podcast, so we have to show stuff. 00:23:38.400 |
OK, the incremental thing I got from your blog post. 00:23:41.680 |
So you did do a write up, which thank you for that, because I actually didn't know that 00:23:57.200 |
Someone else had the idea and just made it without your permission or talking with you. 00:24:03.120 |
And then the idea could spread back to you and you could run with it. 00:24:07.040 |
And we had made a lot of the bits and pieces in place already based on, you know, I mean, 00:24:20.400 |
Yeah, and it's not, I mean, it's a big library as far as an open source library goes. 00:24:31.600 |
And once this thing got popular, like the first thing we did was create like a starter 00:24:39.280 |
kit so that someone could take it and like run with it. 00:24:42.160 |
So this is normal teal draw where, yeah, you can, you know, you can draw, you can whatever, 00:24:48.560 |
It works if you've used Figma, if you've used Miro, it's kind of familiar to that. 00:24:54.320 |
And you can put pretty much anything on this canvas that you want, like YouTube links, 00:25:02.720 |
Just because it is, I always have to remember to open YouTube in a incognito window so that 00:25:14.480 |
people don't see my embarrassing interests here. 00:25:18.000 |
So yeah, because this canvas is HTML and CSS and like divs and stuff all the way down, 00:25:23.920 |
you can put things like YouTube videos on there. 00:25:27.440 |
Because again, like anything you can do in a website, you can do on teal draws canvas. 00:25:33.600 |
What's fun is because it is a canvas all the way down, you can also like draw on top and 00:25:38.800 |
like do the kind of canvas manipulation stuff that you might do with normal shapes, but 00:25:46.400 |
So that ended up becoming like a big part of why Make It Real got kind of popular. 00:25:57.040 |
This was a hastily built layer on top of the kind of teal draw engine SDK that we sent 00:26:06.560 |
And the idea here is that you can make a wireframe and we're going to send it to 00:26:13.040 |
GPT-4 with vision with like a prompt like much like the original one that that Sawyer 00:26:18.320 |
Hood had come up with, which is you are a web developer. 00:26:21.520 |
You work with designers, they give you wireframes and notes and screenshots and all sorts of 00:26:28.800 |
Your job is to come back with a single page or a single HTML file that has all the styles 00:26:35.280 |
of the JavaScript, all the markup necessary in order to make a real working prototype 00:26:44.480 |
It also has slight emotional manipulation like you love your designers and you want 00:26:50.240 |
them to be happy and like the better your prototype is, the happier they are and all 00:27:01.840 |
But we do some other tricks that I'll like, for example, we'll have a second as I do this. 00:27:08.000 |
So you select something like this, you click the Make It Real button and you get back a 00:27:14.240 |
We've considered running ads or like in this waiting moment, but no, I don't know. 00:27:21.040 |
Maybe like a kind of Zelda style like tips, you know, tips and tricks like here's different 00:27:32.240 |
I mean, this is part of the joy of like a multimodal prompt is we send it the photo, 00:27:35.760 |
which kind of looks like the same as if you had done a copy and paste thing. 00:27:42.240 |
And you have all this functionality worked out, you know, like that's what I find so 00:27:52.160 |
Yeah, it's like it really I mean, it feels like we had gone off in this like this very, 00:27:58.960 |
you know, as collaboration and AI and stuff was going in one direction, we kind of just 00:28:02.960 |
went off in our own weird like, hey, the world is really going to need a whiteboard at some 00:28:06.640 |
point direction and then and then it just they kind of met us where we were at and then 00:28:12.720 |
we've been able to just be like show up like show up on day one of this new world of possibility 00:28:19.840 |
with like the thing that like if I hadn't spent the last two years building this, I 00:28:26.560 |
would spend the next two years building this like it is the right product for this type 00:28:33.520 |
So anyway, they give us back a HTML, we stick it into an iframe, put that onto the canvas, 00:28:38.240 |
just like we did with that YouTube link, and I can, I can interact with it. 00:28:41.840 |
So it should be going from orange to pink, orange to pink. 00:28:46.160 |
Hey, it's given us a hex code, I can click the hex code. 00:28:50.960 |
And it gives me, you know, YouTube links, etc. 00:28:55.760 |
Just because it is, I always have to remember to open this open YouTube in a way that in 00:29:04.560 |
something like v0 or some of these other kind of prompting environments, like the only way 00:29:12.880 |
Maybe you can do this with chat GPT or something and you could you could write like, oh, actually, 00:29:18.320 |
you know, instead of or like you missed the labels like it should say orange and pink, 00:29:26.880 |
So you could go back here and like, you know, make, make sure that this is whatever you 00:29:34.320 |
But because this is teal drawn, because you can draw on top of this stuff, you could also, 00:29:40.720 |
you know, right on top, like you could kind of modify this, and maybe even give it so 00:29:47.600 |
the same type of markup that you would give to a designer, you know, a designer or something 00:29:54.320 |
like that, you know, draw some arrows, or maybe paste in a screenshot and say, hey, 00:29:59.040 |
make it look more stylistically close to this other thing. 00:30:05.760 |
I'll say like full width for that, that button, and anything else that we, well, let's just 00:30:14.880 |
And then what you do is you select, you select the website that they gave you back the previous 00:30:28.400 |
And so that's going to give you something kind of like, yeah, it's going to give you 00:30:34.160 |
an image that looks like this that you've now sent. 00:30:36.240 |
But we've also kind of tweaked the prompt a little bit when you when you do include a 00:30:41.200 |
previous result and say like, hey, this, you know, the, the, the wireframes coming back 00:30:46.240 |
are annotations or markup based on, on what you sent before. 00:30:51.920 |
So now we have a new prompt that sure enough, the, the labels are there, you know, it still 00:30:58.080 |
works just like before the button is full width and, and, you know, it still works just 00:31:04.880 |
Again, we send it the image, we send it the text, the prompt. 00:31:11.600 |
We also send it all of the text items themselves separately, because ChetchiBT is not really 00:31:18.720 |
So we say like, oh, by the way, your vision's not so good. 00:31:21.120 |
So we've, we've ensured to have our copywriter, you know, list out all the, the copy that 00:31:26.480 |
I think we even send it back the HTML that they used for the, the, the previous result. 00:31:32.400 |
So we just dump like as much information as possible at this, the, the GPT-4 with vision. 00:31:39.200 |
And that's how you're able to, to get these sort of iterative results. 00:31:44.400 |
And the, it is, it is like legitimately good to, like, it feels like work. 00:31:55.600 |
It feels like, like you're actually doing stuff when you're iterating through this way 00:31:59.360 |
and, and slowly shaping and adding complexity and doing step-by-step, you know, as you're, 00:32:07.040 |
And when you're done, you can, you know, copy a link to that and, and open that in a new 00:32:12.640 |
tab, like we, we host it, it's there forever. 00:32:15.040 |
You can, you can bookmark this if, if you really just needed a slider between orange 00:32:19.920 |
Well, now you have one, you, you, you know, whether you could code it or not, or you maybe 00:32:24.720 |
not worth building or using a no code tool to build, but, you know, we just made that 00:32:29.680 |
If you are more on the coding side and you want to use this as a kind of a foundation 00:32:33.520 |
of, of a real project, or maybe just to like, see how it like, well, how did, how did, how 00:32:41.360 |
You can open it up in StackBlitz or CodeSandbox. 00:32:46.240 |
And yeah, see all the code, see what Chachapiti came up with and, and kind of use it or adapt 00:32:53.760 |
it or, you know, keep it going or do whatever you want with it. 00:32:57.200 |
But yeah, cause it is, it is like, it is real and yeah. 00:33:07.600 |
It's, it's interesting that you can also, I've seen some of your other demos. 00:33:11.120 |
It looks like you're, you're about to move us on to another. 00:33:14.880 |
I'm, I'm going to grab a couple of the, the ones that I have showed before. 00:33:18.560 |
This one's a really interesting one because it is. 00:33:26.320 |
So what's on the screen now just to, to kind of. 00:33:31.280 |
Describe it is, is I have a, I have a drawing of a stop, like a kitchen timer, you know, 00:33:38.640 |
where you can add a minute, add a second, you know, start or stop the timer or, or reset 00:33:43.520 |
And then next to it, I also have a state chart, like state machine describing the three states 00:33:49.840 |
of the timer starts or stopped running or complete. 00:33:54.320 |
And like what each one of those buttons could, should do in terms of transitions or changing 00:34:00.640 |
I think you can hand this to pretty much any designer or developer and get back a, you 00:34:06.560 |
Like it's fully, fully spec'd sort of, sort of. 00:34:12.480 |
I made a friend that did it, David Crofied might say. 00:34:14.800 |
Develop a state chart first and then, you know, plug it into it. 00:34:17.920 |
And what's cool this way is that you can, well, let's do a couple of things in parallel. 00:34:28.880 |
I am just going to make a box over here and I'm going to say, kitchen timer. 00:34:37.200 |
And, and this is going to be the only prompt that I'm going to, I'm going to give it. 00:34:41.760 |
I'm just going to click make real and just the, the kitchen timer box. 00:34:44.480 |
Sometimes you see with these multimodal prompting, like someone will draw a calculator, like 00:34:51.280 |
in, in a lot of complexity and, and say, you know, make this, make this real. 00:34:55.280 |
And sure enough, you get back like a really complex full calculator. 00:34:58.400 |
But if you did the same thing and you just said empty box, but just the word calculator, 00:35:04.160 |
it would give you back the same thing is that it knows what a calculator looks like 00:35:09.680 |
So next, let's also give it the, just the, the user interface, like without the state chart. 00:35:15.760 |
Well, we'll leave the state chart out, but we'll do just the user interface. 00:35:21.680 |
And then we'll do just the state chart, you know, and say, Hey, make this real. 00:35:28.720 |
And then we'll do both the state chart and the UI. 00:35:33.920 |
So we have four different prompts with four potential different results based on, you know, 00:35:47.120 |
So first off our kitchen timer, where all we did was we sent it a box with the word 00:35:53.680 |
It has, I don't know what this box is for, but we have a time. 00:36:07.600 |
This is the, if this, okay, well, if the number is there, yeah, then it'll, it'll stop. 00:36:21.280 |
The only weird thing is that it's, yeah, it has a, a number input field for the number 00:36:27.280 |
of seconds that I can, I can type out, but yeah, you know what, in a pinch, in a pinch, 00:36:32.320 |
I'll take it if I really needed just to count 60 seconds or something. 00:36:35.760 |
Next, we have the input where, or the result where the input was just my drawing of a kitchen 00:36:45.280 |
I didn't send it the words kitchen timer, and I didn't tell it how it should work, but 00:36:49.280 |
it did produce something that kind of looks the same. 00:36:54.560 |
So I'm going to click minute, second, start, reset. 00:36:58.240 |
So unfortunately, it did not make any working UI, although it did, you know, put the buttons 00:37:06.480 |
Maybe it over focuses on the UI because you, you told it, you just, that's all you gave 00:37:14.240 |
I mean, there is in the prompt kind of language around, like, you use what you know about 00:37:19.760 |
the way that applications work in order to sort of fill in the blanks here in terms of 00:37:27.120 |
This one is where we only sent it the state chart. 00:37:29.680 |
There's also something in the prompt that says like, if it's red, it's not part of the 00:37:34.640 |
Like if it's red, then like treat that as an annotation rather than like a, a thing 00:37:43.200 |
So this time it actually looks a lot like the previous one, uh, but it does have these, 00:37:54.080 |
It has plus and minus for minute, minute, seconds. 00:37:56.720 |
Uh, and it also has this like stop state written at the bottom. 00:38:01.760 |
So there's four buttons, you know, minus minute, minus second, plus minute, plus second, and 00:38:16.400 |
And if I press start, we're now in the running state. 00:38:18.800 |
Uh, unfortunately it's going up rather than down. 00:38:27.040 |
Uh, I'm just curious if I, if I do give it a, an additional prompt here and I say like, 00:38:39.200 |
Uh, and just kind of do an arrow towards the start button here. 00:38:42.320 |
Let me see if that, uh, that'll make a real one. 00:38:44.480 |
But, and then finally we look at the other example, which is where we sent the state 00:38:50.240 |
We get something that looks much, much more like our user interface. 00:39:05.440 |
Uh, and in this case, yeah, my, my, my, my feedback was accepted. 00:39:14.080 |
I went back to the one where I, I'd asked it to count down and not up and it all looks 00:39:20.240 |
So I think for folks, especially who have like, uh, who have worked in design and who 00:39:28.800 |
have worked in sort of like user experience design in particular, like this should feel 00:39:33.520 |
pretty familiar of, of kind of sketching out and trying to do your best to specify, like 00:39:38.160 |
what it is you want and see what you get back from your designers. 00:39:41.840 |
You can see what you get back from your developer. 00:39:43.520 |
Um, but having like a, an environment in which to have that, like game loop, that like iteration 00:39:50.480 |
cycle, uh, alone and in instantaneous and essentially free, uh, is really, really wild. 00:39:57.520 |
And, uh, you end up spending a lot of time kind of like, uh, not only getting into the 00:40:03.280 |
head of the, the AI and sort of being like, okay, well, why are they getting confused? 00:40:07.680 |
You know, what am I sending that is confusing? 00:40:09.440 |
How do I send more information in order to like produce a better result? 00:40:13.120 |
Uh, but also it really forces you to clarify your own expectations of like somewhere up 00:40:19.680 |
here, I have a, uh, uh, uh, drag and drop list, you know, where you can drag list items 00:40:25.920 |
between, and like, I started working on this and started specking it out. 00:40:29.040 |
I was like, man, this is like, actually like not only really hard to, um, like to produce 00:40:36.160 |
a good result, but it's also like just really hard to describe is that like the failure 00:40:40.000 |
was really on, on my end for just not knowing how to get the information in there because 00:40:44.320 |
I didn't actually know how this thing should work. 00:40:46.480 |
Um, but yeah, but you know, I could figure it out. 00:40:50.400 |
I have an environment in which to figure that out. 00:41:05.360 |
So this is, this is kind of like, uh, slightly obnoxious, but, uh, during this math, like, 00:41:11.120 |
cause this thing went massively popular on, on Twitter. 00:41:14.080 |
Uh, uh, yeah, like thousands of retweets type of level. 00:41:20.240 |
Um, and there, there were some folks who like were subtweeting it about like, you know, 00:41:25.920 |
It's just a wireframing or no code tool or something like that. 00:41:29.520 |
Uh, one guy did say like, you know, I prefer to, to wireframe like the old fashioned way 00:41:35.520 |
And, uh, I was like, oh yeah, no, that, that works too. 00:41:40.800 |
I can just take the screenshot here of, you know, that the, the dude posted of, of the, 00:41:45.520 |
uh, the, the drawing that he had made, you know, it's not even like a good photo. 00:41:50.880 |
There's a pen, you know, across one of the screens, et cetera. 00:41:53.760 |
But if you just give that with no other information, uh, to like, as a prompt, uh, you get back 00:42:02.000 |
a pretty good result, like it loading right now, but, uh, I've done this before and yeah, 00:42:08.960 |
like you get back, um, you know, just from this like photo of a, of a piece of paper 00:42:15.200 |
on the, the, the guy's desk, you know, you have a, um, like not, not completely arbitrary, 00:42:28.640 |
Um, that was, that was, that was inferred from just that picture with no other input, 00:42:34.800 |
And of course it's like responsive and all this stuff. 00:42:37.440 |
Uh, and so the idea of like, yeah, like our tools, yes, I've, I've worked really hard 00:42:43.760 |
to make all of our shapes, you know, really good in our arrows, obsessively good and all 00:42:50.080 |
But like the fun of the infinite canvas and teal draw in particular is that you could 00:42:55.760 |
just dump like whatever you want onto the canvas, screenshots, text, images, other websites, 00:43:06.320 |
And, uh, the, the, the model, even as something that was in preview, like the very, very first 00:43:12.480 |
sort of multimodal, um, model, uh, can do a really good job at just taking all that 00:43:20.160 |
And, um, and yeah, like, so we accidentally made a really, really good visual multimodal 00:43:26.880 |
prompting, uh, uh, application environments or, or user experience byron. 00:43:34.160 |
I'm not even sure what we're going to call this thing. 00:43:45.520 |
Is that basically just, uh, prompting and then moving on to something else? 00:43:50.480 |
That's kind of what we did up here with the, uh, the stopwatches, the fact that we could 00:43:53.840 |
get multiple prompts going at the same time and like arrange them spatially. 00:43:58.480 |
Uh, and, um, people have done this also with, with imagery, uh, to say, okay, well, here 00:44:06.320 |
are, we're going to use Dolly and we're going to kind of like make a tree of prompts as 00:44:13.200 |
you go, you know, different iterations based on, um, which, whatever you make for iterations, 00:44:19.680 |
you pick your favorite one, you keep going kind of like what you do in mid journey. 00:44:22.960 |
But to have that spatial and to have that like, uh, arranged on a canvas so that it 00:44:29.040 |
And you can kind of look back and follow it, follow forward that like, I don't know, like 00:44:33.760 |
whiteboards, infinite canvas stuff is just really good for a lot of things. 00:44:37.520 |
Um, and, uh, so organizing like a whole bunch of different content that is, uh, irregular 00:44:44.720 |
or ephemeral or, um, or, or has a kind of like ad hoc meaning configuration, like, you 00:44:54.640 |
know, things that are next to each other or things that are in a grid or in this case, 00:44:57.920 |
you know, uh, just even what we're, what we have here for what we did with the stopwatch, 00:45:03.360 |
like there's an implicit meaning of like, okay, the source is on the left, the result 00:45:07.920 |
is on the right and any further iterations are further on the right. 00:45:16.640 |
It doesn't actually, that meaning relationship doesn't really exist in any part of the product. 00:45:21.680 |
It just exists to us because we, we can make sense of it. 00:45:25.520 |
Um, and yeah, so for, for this type of thing, not only is it cool that now a model can make 00:45:33.920 |
sense of it as well, but, uh, but yeah, for, for organizing, uh, complex iterations of 00:45:41.680 |
imagery, complex iterations of, of, of outputs, et cetera. 00:45:45.600 |
Like, yeah, the canvas is a place I really do believe that. 00:45:52.720 |
Um, I mean, that's, that's, that's really incredible. 00:45:55.360 |
It's also, it's a little, you know, I think a few developers are kind of scared about, 00:46:02.400 |
you know, how much of this, uh, their jobs, uh, this does, obviously, uh, there's a lot 00:46:07.920 |
So the, the, will this take my job story is, is interesting. 00:46:12.960 |
I mean, I'm not actually concerned, but I think this augments, like, uh, my, actually 00:46:20.720 |
my concern as a developer is that this is good, but not good enough. 00:46:26.560 |
Um, but I, would I actually export the code and take that code? 00:46:32.240 |
Uh, it, it looks like, uh, your first MVP was just HTML files, which, you know, if it's 00:46:38.720 |
a single HTML file, it can, it can have some JS or some CSS. 00:46:41.760 |
I saw some problems with layout, uh, in there, which I don't know how good it is at layout. 00:46:47.920 |
Uh, it's, it looks like you could just prompt it for tailwind if you want tailwinds. 00:46:56.400 |
Well, there's, there's the limitations that are in that particular demo, which is that 00:47:01.120 |
like, well, it couldn't do react because it needs to just be a single compiled thing. 00:47:05.360 |
Uh, you can't do any multi-page stuff or, or anything like that, but that's more of 00:47:09.600 |
like how we're structuring the, uh, the project rather than like a specific requirement of, 00:47:17.600 |
The, I mean, we've talked about having, well, there's, there's two kinds of things. 00:47:23.520 |
There's one is like, how big is the input window and how big is the output window or 00:47:27.280 |
Uh, so in theory, you could have, uh, the input be, here's a entire full stack react 00:47:36.640 |
application, uh, together with all my UI and all this, all my components, et cetera. 00:47:41.200 |
And here is a screenshot that I took of the landing page where the menu, uh, is in the 00:47:50.000 |
wrong spot, you know, and I'm going to annotate that with some arrows and some text in order 00:47:55.280 |
to say like, here's what I, where I want it to be, or here's what I want, et cetera. 00:47:58.800 |
And for the output to be, um, you know, a diff that I can apply to my code base, like 00:48:06.720 |
produce the, the, the, the git, like basically like produce the commit, um, that would change 00:48:14.000 |
this and have that commit be against multiple files and et cetera. 00:48:19.600 |
Um, in order to, to have potentially like a solution that is just, uh, like ready to 00:48:26.640 |
go applicable, like a patch or a PR that you can make, um, there really isn't any, any 00:48:37.200 |
And we've seen with copilot, et cetera, the challenge is more on the input side than the 00:48:43.760 |
Like, like absolutely you could figure out a way for this thing to spit out like a working 00:48:50.960 |
Uh, the question is like, how do you tell it what you want and, and how do you iterate 00:48:57.360 |
And, and just doing zero shot, zero shot, zero shot. 00:49:02.640 |
Uh, but if you do have a way of, of iterating, if you do have a way of kind of like step 00:49:06.800 |
by step moving towards the, the solution that you want and kind of like, you know, getting 00:49:11.600 |
it into like, okay, well, this is good, but it's not great. 00:49:16.960 |
Um, that's, uh, that's how you actually make that type of complex output more practical 00:49:24.320 |
Um, is that you probably won't get ever get the prompt just right. 00:49:28.400 |
Even if you have like a really, really, really good, you know, three generations from now 00:49:33.040 |
agent, like you, you still have to put that information in. 00:49:36.000 |
Um, but you're never going to put the, all of the information in the first time you need 00:49:42.320 |
And so with visual stuff, uh, I feel like the canvas, like what we were looking at, 00:49:48.160 |
um, that's part of what it unlocks is that like space of iteration at space of, uh, um, 00:49:54.080 |
you have a way of marking up the result and using that as the new prompt. 00:50:03.520 |
Um, multi-modal prompting is such a brilliant concept that, uh, you know, I think it's, 00:50:10.080 |
uh, it's going to be a norm for, for, for some things. 00:50:12.720 |
Um, in my mind, you demonstrated, you know, coming from Photoshop, there's this concept 00:50:20.160 |
Um, you can, you can kind of simulate layers in, in TO draw. 00:50:24.000 |
And I see like emergent property of layers in, in this kind of prompting, which is there's 00:50:33.120 |
Um, and those two things seem like pretty useful in, in, uh, spec specifying a prompt. 00:50:39.600 |
I was just wondering if you've, if you thought a little bit about like other dimensions or 00:50:43.200 |
other layers that would be useful in multi-modal prompt. 00:50:47.840 |
So, uh, one thing that we've done is to bring in screenshots of other apps, like here's 00:50:57.280 |
stripe.com, like make it look like stripe, you know? 00:50:59.680 |
So that's sort of like, like, or like here's linear.com. 00:51:04.720 |
Like let's, let's do it this way, uh, you should just, you should just like give a design 00:51:14.160 |
and ask you to make pop instead of make real. 00:51:17.440 |
Make it, make it more, make it more, make more pop. 00:51:20.880 |
Uh, so there, there's the idea of like bringing in style as like a, as another, um, another 00:51:29.200 |
in like part of the input, uh, flow charts are absolutely useful. 00:51:34.240 |
Uh, I mean, this is, it really just boils down to like, what would you really give a 00:51:38.080 |
developer who you are working completely asynchronous with? 00:51:41.200 |
You know, if you had to, uh, spec out a project and put that printed out on paper and mail 00:51:51.200 |
it to a developer and they were going to mail back a disc with an HTML file on it, like 00:51:57.120 |
what would you send, uh, if you were sending this to the moon or something? 00:52:00.720 |
Uh, uh, so yeah, definitely like descriptions of how the state should operate and specs 00:52:11.200 |
We've done flow charts, we've done screenshots of other apps. 00:52:16.160 |
We've, uh, I think we've, we've even just pasted in code, like, like here's a whole 00:52:24.320 |
bunch of Jason that you can use, um, and have it just read that as the, as the input data. 00:52:31.280 |
Uh, we can, you can point it at specific endpoints. 00:52:34.960 |
You can say like, I want you to hit this endpoint and then display the results, you know, as, 00:52:40.560 |
uh, as cards or as items or something like that. 00:52:43.680 |
Uh, not, I mean, you don't even have to like wire this up. 00:52:47.120 |
It's not like retool or anything where you, you have to register that or, you know, it's 00:52:55.200 |
I'm trying to think of, uh, what a good demo endpoint would be. 00:52:59.040 |
We could, maybe we could do one more, uh, more test. 00:53:07.680 |
Um, I mean, this, this might be, this might be kind of like the box with the word calculator. 00:53:13.280 |
Like it might just know because it's probably been a bunch of tutorials. 00:53:18.740 |
Yeah, but, but, uh, you know what, we'll do it anyway. 00:53:21.680 |
We'll, uh, I'll, I'll share it and, uh, we'll, we'll try. 00:53:25.840 |
So for those who don't know, dog.co is, is one of those like, uh, demo APIs that, uh, 00:53:31.600 |
you just set up just because it's not offensive. 00:53:40.400 |
Um, I'll try and think if there's a, there's a more complicated endpoint that we could 00:53:45.600 |
Uh, maybe, maybe while I'm doing this, if you want, it gives me more ideas. 00:53:49.920 |
It gives me more ideas of what to promise and what, what can go in. 00:53:53.200 |
Uh, I definitely didn't think about hitting endpoints just because I, it's just not in 00:54:12.160 |
So that's going to be our, show me a dog button. 00:54:27.680 |
Uh, and, um, and then we'll, we'll do some annotations here. 00:54:42.240 |
Um, yeah, there's those perfect arrows coming in. 00:54:49.440 |
When clicked, get a new dog from dog from, I'll just paste in this, um, and put the result 00:55:01.680 |
So it's more of a, more of an instruction than you would normally, you know, I don't 00:55:08.720 |
One thing that it's going to have to guess is, uh, you know, the, the response format, 00:55:22.240 |
And let's see if it, if it actually hit it, hit the, uh, the right, um, the end point 00:55:35.280 |
It hit the right red endpoint, Jason dog image, uh, and then put it in. 00:55:41.600 |
Uh, you have yourself a, uh, JavaScript tutorial in a box ready to go. 00:55:48.560 |
And I think like, I mean, we probably wouldn't do this on camera, but like, you can say, 00:55:54.240 |
you know, like, like use the auth token, you know, whatever. 00:55:58.480 |
And like, you know, go like really get, you know, real data back from this thing. 00:56:04.800 |
Um, yeah, there's no reason why it wouldn't be able to do that. 00:56:08.080 |
Uh, so yeah, it's really the only, yeah, yeah. 00:56:14.080 |
Well, not really, because again, what inside of the prompt for this, we do give it like 00:56:21.440 |
an array of all the texts that you've put in. 00:56:24.400 |
We say like, look, I know your vision isn't so good, or you have a hard time reading texts 00:56:31.600 |
Uh, cause what are like the input that, that you get is pretty wild. 00:56:39.120 |
And then it like, um, I can't do this in teal draw, but it, it resizes it. 00:56:44.240 |
It squishes it into a 512 by 512 image or something like this. 00:56:50.320 |
And then, yeah, so it's like, um, it, the text especially can get kind of like chunked 00:56:58.800 |
So we, we send those strings separately, uh, so that it can kind of reassemble, um, anything 00:57:08.560 |
Yeah, it's, it's a weird future that we've, uh, we've found ourselves in pretty cool. 00:57:17.840 |
I mean, you know what, one layer I automatically think of is, is backend, right? 00:57:21.520 |
Like, uh, as someone who has, uh, works at AWS, um, I see a lot of systems diagrams, 00:57:28.640 |
like cloud diagrams, um, entity relationship diagrams for database schema. 00:57:32.320 |
So I wonder if like anyone's tackled extended in this to backend. 00:57:36.800 |
And then obviously the next level from that is, uh, full stack apps where you have backend 00:57:44.560 |
There's someone on Twitter that was using this to generate, um, yeah, like doing like 00:57:51.760 |
I'm not a backend guy, so I don't actually know exactly what the output was. 00:57:55.760 |
Um, but I, I believe it was like a, like a configuration script for AWS, um, that was 00:58:04.400 |
Like, I think he just copy and pasted, uh, a diagram that he had made in teal dry anyway, 00:58:10.560 |
and said, okay, well, let's throw this at this thing and see what it comes up with tweaking 00:58:14.800 |
the prompt to say like you, um, rather than building single page websites, you just return 00:58:21.520 |
the Jason, you know, description of this configuration or something like that, or return a script 00:58:28.560 |
Um, you could tweak it to say like, here are like, yeah, all the entity relationships 00:58:34.320 |
between, um, uh, different tables or items and tables, uh, and, and give me the, give 00:58:40.880 |
me back the SQL, you know, like, you know, initialization or something that said that 00:58:45.600 |
would make all these tables and, um, and set up these relationships. 00:58:49.440 |
Uh, yeah, it's just, again, like the hard part is getting that information in, but we 00:59:00.480 |
And yeah, if you can tell it that way, that works. 00:59:09.760 |
Um, you are also part of, uh, so you were one of two, one on what I think about, uh, 00:59:19.360 |
Uh, the other one also, you had to play a part to play in it, which is the local consistency 00:59:23.360 |
models, uh, trends, uh, where I think you worked with Phal. 00:59:29.360 |
So we, uh, and actually I do have something to show here. 00:59:32.800 |
We, we actually have a couple of things to show here. 00:59:35.120 |
Uh, we connected with Phal because they used, um, TealDRAW to, to create a demo for, uh, 00:59:50.980 |
Um, but we took that and we, we made a draw fast, uh, TealDRAW.com, which is, uh, basically 01:00:01.360 |
you get a, these like shapes, these little draw fast shapes. 01:00:06.000 |
Um, and it puts the result basically grabs that new image and puts it right next to it. 01:00:16.320 |
So as I'm moving things, you should see the image, um, updating as well. 01:00:21.200 |
Uh, and I think it, I think this was originally not a goat, you know, whatever, this is a, 01:00:36.000 |
I play this more with my, uh, my daughter than anything else. 01:00:39.760 |
I like what this looks like, you know, and, um, oh my gosh, she, she does. 01:00:45.920 |
And actually we had a lot of, uh, a lot of folks on, uh, Twitter, um, being like, this 01:00:55.840 |
Like, cause I had a video of whatever my, my daughter drawing. 01:00:58.640 |
And, you know, she made this awesome drawing of a mermaid and we turned it into like this 01:01:03.760 |
really anonymous crappy version of like an illustration of a mermaid. 01:01:08.880 |
And, uh, they're like, no, no, the children's drawing is much more interesting. 01:01:15.600 |
But I, this is, uh, you know, this is, this is fun. 01:01:22.320 |
Animations, like some kind of, like you could make, uh, some kind of, it's, it's, this is 01:01:31.440 |
I mean, we need to do more work on consistency, but like, this is getting there. 01:01:37.920 |
Yeah, uh, it is a car driving through a busy market marketplace. 01:01:45.920 |
Uh, the fun is that like, you end up, uh, after playing this with this for a little 01:01:51.120 |
while, you end up like, uh, getting really into the particularities of the input. 01:01:56.000 |
Like the, uh, like what can you do with a design tool? 01:02:01.040 |
I can grab some of these and move them around. 01:02:02.720 |
Um, and like, oh yeah, there's a highlighter here too. 01:02:06.960 |
So we could like, we could do some highlighting, you know, that'll, that'll do stuff. 01:02:10.640 |
Uh, and then you kind of like, we, we couldn't help ourselves. 01:02:17.520 |
So, uh, one thing you can do is kind of click this little button and that'll make the, the 01:02:22.720 |
drawing and the result kind of on top of each other. 01:02:26.080 |
All right, well then I'll move on to the other one that we, uh, that we released earlier 01:02:35.520 |
Uh, and again, this is probably not making a good podcast audio, but it is, uh, the image 01:02:42.720 |
updates as soon as possible based on what the input drawing is. 01:02:49.600 |
So the, uh, this one's a little riskier cause it's live. 01:02:53.520 |
So this, this is, uh, we took a project called together, which is a vertically scrolling 01:03:02.800 |
Uh, a little bit like a chat room as you're drawing, everything's just sort of moving 01:03:06.400 |
up and it just disappears off the top of the screen. 01:03:12.720 |
Um, by the way, one of the most magical chat experiences I ever had was with you. 01:03:17.440 |
Uh, I think you were like with your daughter or something and I was, I was, whatever, showing 01:03:21.520 |
off together and you started writing, I started writing and we had chat, uh, on together. 01:03:31.920 |
Like, you know, inevitably someone will write like, you know, where are you from? 01:03:35.520 |
And, uh, and everyone's like chiming in and talking about, yeah, you are like, this is 01:03:42.880 |
Um, so what I'll describe what's on the screen now, which is basically we've, we're taking 01:03:52.000 |
like a screenshot of the center, uh, like a square out of the center of this chaotic 01:03:58.160 |
vertically scrolling chat experience, and we're sending that to the, to the LCM and 01:04:03.280 |
putting back the image based on like a prompt, uh, like, you know, desert scene or busy marketplace 01:04:09.680 |
or, uh, futuristic cityscape or something like that. 01:04:13.200 |
And so it is updating like, you know, 10 times a second as, uh, as we go, but yeah, 01:04:19.280 |
I would say like it's updating surprisingly quickly, like 10 times, 10 frames per second. 01:04:25.360 |
Yeah, yeah, uh, no, I think it's now like to 32 milliseconds basically, uh, as you go. 01:04:32.240 |
And, um, so if I draw like a big orange thing down here, it's going to kind of show up into 01:04:40.320 |
Um, maybe I'll do a big black one so you can see better. 01:04:44.080 |
Uh, like it just sort of becomes part of the, the input to this prompt. 01:04:57.600 |
Um, this isn't live, so no one should come on here and say hello, Steve, or anything 01:05:02.400 |
like that, but it is, uh, it is, yeah, it's like this like slow moving, um, collaborative 01:05:11.600 |
kind of like hallucination experience and it just never ends. 01:05:15.920 |
I mean, yeah, I'm probably going to be funding fell completely for the next, uh, you know, 01:05:38.160 |
I have a healthy respect for like the amount of processing that must be going on behind 01:05:53.280 |
It looks like I can't really draw the way I normally draw on Teal Draw. 01:05:57.360 |
Yeah, it's, everything's a little bit bigger. 01:06:00.480 |
Um, when there's 36 people, uh, it's, it's kind of slow as well. 01:06:06.000 |
So, uh, yeah, we, um, what's funny is that like, yeah. 01:06:13.280 |
We're using the Cloudflare workers to do the, uh, the, the, the updates and the CRDTs to 01:06:19.200 |
do the collaboration and, you know, all this, like whatever LCM models to, to, to, to populate 01:06:27.920 |
But, um, there's also a laptop in my living room right now, uh, that is doing the actual 01:06:36.640 |
And so there's a big note that I had to write, you know, for my family to say, like, don't 01:06:41.440 |
turn off this laptop, don't close this laptop because, uh, this needs to be on in order 01:06:46.480 |
Uh, and yeah, so, you know, we'll, no matter how good our tech stack gets, we'll always 01:06:52.800 |
come back to, uh, some, some laptops stuck in the corner that can't possibly be turned 01:07:02.000 |
I've heard of major businesses being run that way. 01:07:06.960 |
Yeah, I, you know, it's weird because it's really funny because like, you know, you, 01:07:13.120 |
Uh, this is a fine art, you know, going back to your degree. 01:07:16.800 |
Um, it's just a definitely a, uh, you know, it's funny because like the output of this, 01:07:26.080 |
like, while it is like a visual output, the output like doesn't actually matter. 01:07:29.920 |
Like it's gone in 16 milliseconds and it's not coming back. 01:07:33.680 |
Uh, and I think with all this AI stuff right now, just where we are with it and just how 01:07:39.040 |
completely unknown it is in terms of like, where is this useful? 01:07:42.960 |
Uh, like the best thing that you can get out of this is like the experience. 01:07:48.800 |
Uh, and so I think of this much more as like, you know, the thing that people will walk 01:07:53.200 |
away from, from playing with like lens.tiltro.com, uh, should be more of like that experience 01:08:01.600 |
of, of having interacted with this thing or interacted with it, you know, among, with 01:08:05.840 |
others, uh, rather than like, oh, there's, it made my favorite image or something like 01:08:12.320 |
So I think the, uh, yeah, I don't know, as a, as a former image maker, like the idea 01:08:20.080 |
of having, having like an aesthetic experience where the image is, uh, a major part, but 01:08:27.600 |
it's, it's not necessarily like the, the important part, uh, or any one of these images 01:08:34.160 |
There's, there's some, like, there's some, uh, there's something, something new feeling 01:08:42.960 |
Certainly I wish I was, uh, could do a big critique with all the new media artists, people, 01:08:51.440 |
um, about this and about like, what, you know, where does this, where does this fit into 01:09:00.480 |
Well, that's, that's for them to write and, you know, for you to build. 01:09:03.760 |
Uh, and I think that's a, that's a, yeah, you know, I would encourage you to keep building 01:09:07.840 |
there because, uh, you're definitely not done exploring with your explorations. 01:09:15.680 |
Well, so I can kind of round it out by sort of looking towards the future. 01:09:19.520 |
Uh, you hinted a little bit, uh, you're working towards TL draw 2.0. 01:09:24.240 |
Um, so first of all, actually, so, uh, it seems like you're very focused on the core 01:09:31.520 |
Um, and the AI stuff is, is a side project for now. 01:09:36.400 |
Um, why, why not pursue it as like a full, why not pivot and like be an AI company? 01:09:42.160 |
Like that's, yeah, I guess a lot of those questions. 01:09:46.240 |
I mean, when you, when you get something as viral as, as Tiltraw got, like, I think I've 01:09:50.960 |
talked to everyone, um, certainly every, every investor, uh, and, um, okay. 01:09:59.600 |
So I guess the way that, the way that, yes, we, we probably could on for something like 01:10:04.800 |
together or that draw fast thing, uh, make a tiny little SaaS app, you know, give me 01:10:12.800 |
And, uh, you know, it could make it, make it good. 01:10:18.640 |
Um, there's not much of a moat around any of this stuff. 01:10:25.760 |
And we're seeing that just in, you know, I don't know, Gemini is going to come out in 01:10:32.960 |
Um, and if it's better than people are just going to use that until the next better thing 01:10:38.880 |
Like, it's not, there's not a lot of like unique, uh, it's not, there's nothing really 01:10:45.280 |
defensible about like, Hey, it's an, it's a drawing app plus an LCM like model, uh, 01:10:49.760 |
because there's going to be a lot of those models and there's going to be a lot of drawing 01:10:53.360 |
The, the thing that I think is really unique for teal draw, the thing that we have added 01:10:59.600 |
that is not easily created is the canvas itself. 01:11:04.080 |
Is that like this, uh, you know, web-based, uh, hackable, extendable, uh, super refined, 01:11:16.080 |
Like, you know, all the thousand table stakes features that drive people nuts when building 01:11:21.520 |
something like this, like they're all there, they're all good. 01:11:24.400 |
Day one, you could build a really great experience, uh, whether it's AI driven or not, like using 01:11:29.360 |
teal draw, um, in a way that it's just not practical to do if you're building it yourself. 01:11:34.240 |
And especially if you're not doing like graphic stuff, there's really not that much else out 01:11:38.000 |
there, uh, oriented towards, towards this type of thing. 01:11:41.280 |
Um, and I think in a world where like these types of experiences are going to, or not 01:11:47.920 |
these experiences, these types of AI driven capabilities are just going to keep coming 01:11:53.600 |
And like, you know, I don't know, next, next year is going to be wild. 01:11:58.080 |
Like every month there's going to be some new, uh, you know, capability or something. 01:12:02.800 |
The, the thing that I would want to see both just me as a, as a person and as me as having 01:12:12.160 |
built the business that I've built, uh, is for teal draw to sort of become the, the place 01:12:20.400 |
where some of this prompting, some of these ideas are explored. 01:12:23.280 |
Um, even if we decided to, okay, we're just going to close everything up. 01:12:28.080 |
We're going to build a product, but based on this, and maybe it's a great product, but 01:12:31.920 |
it's, it would only be one kind of one direction, one ray kind of into this infinite space of, 01:12:40.400 |
Uh, and that, that could be successful, good, but like the idea of building the, um, I mean, 01:12:49.200 |
we've built the, the sort of the direct manipulation manipulation core, but there are so many, 01:12:53.440 |
even like AI specific APIs that we could build around teal draw for having, you know, like 01:12:59.040 |
a virtual collaborator, uh, or, or, or working with images in a, in a more, more rich way. 01:13:04.560 |
Like there's just so much that we could build in order to make this the best possible place 01:13:09.680 |
to explore, not just one direction, but like, you know, many, many, many directions. 01:13:14.480 |
Um, and I think that, that narrative gets me out of bed in the morning in a much more, 01:13:23.360 |
Um, and I think we're also just like the team that we have and the, the, the tech that we 01:13:27.920 |
have and the skills that we have, we're more of the team to build that rather than like, 01:13:32.880 |
to, um, become like a SAS product, uh, company. 01:13:37.120 |
I'm not saying we'll never do like a, you know, a past 10 bucks a month and we can, 01:13:43.920 |
Um, but, uh, primarily my goal is to make, uh, to draw the, either the place to explore 01:13:53.200 |
these different models, or you might, you might think of it as like, um, the battleground 01:13:58.480 |
on which the winners will be kind of identified. 01:14:01.920 |
Um, like right now we're using open AI for the make real thing. 01:14:05.440 |
Um, maybe next week we'll be using a Gemini and now it's, now it's a question of, okay, 01:14:11.840 |
well now we have an environment in which to compare these two models, um, with the same 01:14:19.280 |
Uh, but yeah, like, let's see which one does better now. 01:14:23.040 |
Nothing would make me happier than to be at sort of like the, the, the battlefield, um, 01:14:27.280 |
for multimodal prompting and multimodal, uh, uh, AI experience. 01:14:30.640 |
I should also shout out Baklava as I want the open source, um, vision and, uh, multimodal 01:14:38.960 |
Um, yeah, I mean, like, uh, so, so I fully understand you want to, you want to own the 01:14:47.200 |
Uh, I think that that'll probably be the title of the episode. 01:14:49.840 |
Um, what's, uh, what's coming up for TealDRAW 2.0. 01:14:53.440 |
So really the TealDRAW that you are using now and that I'm using are, is basically 2.0. 01:15:03.200 |
Uh, really the only change that's going to happen once we launch it is, uh, we're going 01:15:09.120 |
Uh, so if you are using TealDRAW in a commercial product or if you want to, then, um, you know, 01:15:14.640 |
if it's, if you're funded or if you have revenue, then, you know, you'll buy a license and I'll, 01:15:20.640 |
um, add you to our, our special list of customers. 01:15:24.720 |
Um, so yeah, it's mostly just go to market and the necessary changes around there. 01:15:29.280 |
There will be some kind of fun changes, secret saucy changes that, that launch, but nothing 01:15:36.160 |
Uh, we've put a lot of effort in the last, like, it's crazy that we've only had an open 01:15:46.080 |
And yeah, it's, we've been very busy since then, but it is, uh, it's stable. 01:15:51.600 |
We put it through, you know, a lot of usage and caught a lot of the issues. 01:16:00.160 |
Um, but I have, uh, one or two conversations with my lawyer before we, uh, we turn, turn 01:16:06.400 |
over the license and start, start moving it that way. 01:16:10.400 |
Um, and then, uh, maybe, uh, I think if I could get your commentary, uh, before we close 01:16:14.960 |
on, on, um, just the, the competition out there, like, um, uh, so you are not, you are 01:16:22.000 |
I, I think I get now that I was going to ask about like Figma, FigJam, and they have some 01:16:30.960 |
Canvas also working on similar things, but they're all individual point solutions. 01:16:34.000 |
Whereas you're more of the open source, uh, uh, canvas to power all of them. 01:16:42.560 |
That's like the other alternative, uh, that remains. 01:16:46.480 |
I think Excalidraw, and I like Excalidraw a lot. 01:16:50.160 |
I, I contributed there and, you know, we, we retweet each other and tease each other 01:16:54.880 |
And, uh, early on I was copying features from them. 01:17:01.680 |
So I, uh, but no, it's, uh, it's like the collaboration space is so, has so many dominant 01:17:10.800 |
players like, um, that I, uh, I think me and Excalidraw are tiny within that. 01:17:22.720 |
One is that we made this very strange bet on using a kind of a web canvas that our canvas 01:17:31.360 |
is not like an HTML element or HTML canvas element. 01:17:34.800 |
It's like normal React components all the way down. 01:17:37.520 |
So if you wanted to add something interactive and have that participate in the sort of space 01:17:42.480 |
of the canvas, uh, the way that we were doing our, our, um, iframes and kind of like being 01:17:48.880 |
able to write on top of an iframe, you can't do that in Excalidraw. 01:17:54.560 |
Um, that is like a very strange tech choice that we made around, uh, Tealdraw that is, 01:18:01.040 |
you know, finding its home in, uh, in a few different ways. 01:18:04.080 |
Most of the people who pick Tealdraw and approach me like the inbound that I get are folks for 01:18:10.080 |
whom that's like the killer feature, um, to be able to, to put interactive widgets on 01:18:17.120 |
Uh, the, yeah, I, I was kind of repeat the same point that you, you, you kind of suggested, 01:18:25.200 |
which has said like, no matter how good Figma's, uh, like AI solution is, and I hope it's great 01:18:34.720 |
Um, it's not going to solve every possible problem in this space. 01:18:38.960 |
It's not even going to like touch, you know, like, like you can't like none of these things. 01:18:43.360 |
And I mean, I already had identified like, okay, uh, there was a point where like any 01:18:49.680 |
Kanban board was like, uh, uh, was Trello, right? 01:18:53.440 |
When you, when you talked about Kanban boards, you were talking about Trello. 01:18:56.480 |
Kanban boards are in every productivity app now. 01:18:59.360 |
Uh, I think the same thing is going to happen with collaborative whiteboards. 01:19:05.440 |
Uh, people are already doing it even without Tealdraw when it's hard. 01:19:10.480 |
Like, uh, like, yeah, that's going to become a kind of a commodity user experience and 01:19:15.920 |
Um, probably, you know, give me a diagram from a text prompt. 01:19:22.480 |
Like, yeah, that is probably going to be a commodity too. 01:19:26.960 |
Like, yeah, that's just going to be everywhere. 01:19:28.320 |
We're just going to assume that that's, you know, it's like adding a gift to a, to a chat 01:19:34.400 |
Um, I do hope that Figma has an amazing AI integration, but I think the thing that it 01:19:42.800 |
Um, like, like generating an image won't be super useful, but like generating it, uh, 01:19:51.280 |
extended and autocomplete this, uh, this, uh, design absolutely would be. 01:19:56.560 |
And, and I hope that they launch something amazing there. 01:19:59.520 |
Uh, but yeah, there's, uh, I, like I said, there's just a million different directions 01:20:11.840 |
It's, it allows a certain type of user experience. 01:20:15.040 |
Um, and that's certainly not limited to design. 01:20:19.040 |
It's not limited to collaboration or anything like that. 01:20:21.280 |
So, um, yeah, my hope is that there are those like kind of 10,000 products that, that could 01:20:34.400 |
And, uh, I, I see why you're so passionate about it. 01:20:38.560 |
Uh, uh, you know, a couple of lightning round questions. 01:20:41.520 |
Um, uh, one, which is like, if you had some AI capability that you would wish for that 01:20:52.880 |
Uh, helps people to do some research, I think probably related to, it's not quite a CRM, 01:21:04.240 |
but like a human, uh, just normal relationship management. 01:21:08.240 |
Um, this is something that I've never had a problem with until, uh, until I had a startup 01:21:14.160 |
actually, where there's just a lot more people involved in my life. 01:21:17.680 |
And it's, uh, um, it's hard to keep up with them all. 01:21:21.600 |
And I think this is probably something that like an EA like kind of does of saying like, 01:21:26.000 |
Hey, there's a birthday coming up or something like that. 01:21:28.400 |
Um, but also just, you know, identifying opportunities to, to work together, uh, to, 01:21:33.440 |
to connect or, you know, who's an expert on this thing that I'm working on. 01:21:40.080 |
Um, and I think there could be, I don't know. 01:21:45.200 |
I think the, the, the value of your network, um, that even if you're good at that, you're 01:21:51.760 |
probably only scratching the surface of like, you know, how, how you could be helping the 01:21:56.960 |
people around you and how they could be helping you based on like the specific context of 01:22:01.120 |
like what you're working on and the problems on your table today. 01:22:05.920 |
I've also wanted to build a CRM on top of Twitter, uh, because you have all the info 01:22:10.480 |
there, but what people are working on your past conversations with each other, um, and 01:22:14.880 |
your shared interests, you know, like it should be able to search, you should be like a bare 01:22:18.480 |
minimum to search it, but to proactively suggest is, uh, the next layer. 01:22:22.880 |
Um, and I guess AI chief of staff, AI executive assistant, you know, something like that. 01:22:31.440 |
Um, I think like some people are working on that, but the problem is so big that they're, 01:22:36.560 |
they're working on like the automation piece. 01:22:39.200 |
So like Lindy, I had at my conference, um, where they're, they're like, it's, it's, it's 01:22:44.080 |
a virtual assistant that you can trigger on your desktop or via email. 01:22:49.040 |
Um, and it's, it mostly deals with scheduling, um, but also it helps you do a little bit 01:22:54.160 |
Um, so that, yeah, I think the agents field will progress there. 01:23:02.160 |
And then, and then finally, um, uh, invite your founders, like what, what has helped 01:23:07.040 |
you the most, uh, as, as a founder, you know, you're two years into your journey. 01:23:12.560 |
I think the, uh, so this, this kind of comes a little bit out of, uh, like what you learn 01:23:23.040 |
Um, but yeah, uh, but one thing is that, that basically like when you're a studio artist 01:23:30.800 |
or you're in a studio or whatever, there's no external constraints. 01:23:33.520 |
You just kind of are running on, well, what do I feel like working on? 01:23:36.880 |
Uh, and the further you get away from like, what do I feel like working on kind of like 01:23:43.040 |
So having like a really good, uh, feeling for that sort of desire and being able to 01:23:48.960 |
respect and follow that, that desire as like, uh, um, because it's not arbitrary. 01:23:55.840 |
Is that like, if, if you really, really feel like working on, um, uh, on, on a thing, like 01:24:03.360 |
it, that might be the sort of the, the tip of a very complex, uh, iceberg of analysis 01:24:11.280 |
of like the field or like what people are talking about or, or something, uh, that you, 01:24:16.400 |
directions and market or something like that. 01:24:18.720 |
Like, I don't know, I think with, with Tealdraw and with, as, as a founder on this, um, the 01:24:25.040 |
thing that I've tried to do and I've tried to preserve is like the, uh, being able to 01:24:31.200 |
prioritize based on like, what is most interesting right now. 01:24:33.920 |
Uh, and that is, that is true for, uh, what code we write and like what features we work 01:24:40.240 |
That's true for like which partners we, you know, we spend time with in terms of who's 01:24:44.240 |
using Tealdraw, uh, the types of problems that we want to solve, like using your own 01:24:50.240 |
sort of sense of what's interesting as a filter, uh, and what you want to work on, like what 01:24:55.840 |
sounds like a fun thing to work on right now as a filter is not, it's not naive. 01:25:00.560 |
Um, and it can be kind of part of your, your secret sauce. 01:25:04.480 |
And I think it's, uh, I think a lot of early founders are encouraged against that and to, 01:25:10.000 |
to be working backwards from a certain outcome and all that. 01:25:13.120 |
Um, and yeah, you, you do have to have to do that. 01:25:15.440 |
You have to put that into the, um, into the mix as well, but, um, you know, be sure that 01:25:21.680 |
you're, you're picking the best parts, um, out of that mix. 01:25:24.960 |
I don't know the parts that you want to work on. 01:25:28.080 |
Well, I mean, what's the point of doing this if you don't have, uh, have some fun, indulge 01:25:32.720 |
The worst case you'll, you'll build something that you love. 01:25:39.200 |
Good things can absolutely come out of like, uh, you had an 8,000% increase in your followers 01:25:57.760 |
Uh, yeah, if you, if you're a, if you're a sub stack reader, the teal draw sub stack 72 01:26:02.880 |
hours into this big make real virality explosion, I, I sat down and wrote a blog post and I, 01:26:09.680 |
uh, I wanted to at least capture that, that vibe, um, of what it felt like in the middle 01:26:19.920 |
Uh, well, I'm sure it's not the last time we'll see you do something crazy viral. 01:26:25.360 |
Uh, I'm sure that a lot of people will be exploring to draw. 01:26:27.840 |
I hope a lot of people, honestly, um, one thing I'm thinking about is like embedding 01:26:35.120 |
Like why can't, I can't see our job be like, you know, part of the, the input. 01:26:39.680 |
Hey, I'm, I'm talking to, uh, the, the good folks over at open AI tomorrow. 01:26:45.200 |
Maybe we, uh, maybe we get it in, inside of a chat GPT or something. 01:26:50.800 |
I want to, I need to take a drawing or take a photo and then annotate it or like, you 01:27:15.840 |
Um, well, thank you for inspiring the rest of us. 01:27:20.160 |
And I'm sure we'll, we'll hear from more from you over the, over the next few years.