# 690: Steve Ruiz and tldraw

## Episode metadata
- Episode title: 690: Steve Ruiz and tldraw
- Show: ShopTalk
- Owner / Host: Chris Coyier & Dave Rupert
- Guests: [Steve Ruiz](https://share.snipd.com/person/73f553de-32e9-4c7a-a44f-864e415145ff)
- Episode publish date: 2025-11-10
- Episode AI description: Steve Ruiz, the founder of tldraw and a skilled developer/designer, delves into the innovative world of collaborative tooling and infinite canvases. He explains how tldraw functions as a versatile whiteboard and SDK, enhancing workflow through local data storage and synchronization. Steve also highlights the exciting potential of AI within tldraw, including smart suggestions and the transformative Make Real feature that converts sketches into functional prototypes. He discusses the unique challenges of creating an engaging UX on an infinite canvas and the platform's role in simplifying HCI experimentation.
- Duration: 01:12:58
- Episode URL: [Open in Snipd](https://share.snipd.com/episode/adb2dde0-d39c-46fc-a189-894da484bd60)
- Show URL: [Open in Snipd](https://share.snipd.com/show/6a683bc1-9328-4ca3-b4fe-a476f2a88404)
- Export date: 2026-02-17T23:32:21
## Snips
### [tldraw Is App Plus SDK](https://share.snipd.com/snip/7d9b1b52-8586-4e00-91fc-78926b0a7712)
π§ 03:41 - 04:39 (00:57)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/ef32976d-e6ab-4c90-8eb7-1ca30deb5036"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- tldraw is both a free collaborative whiteboard and an SDK for building infinite-canvas apps in React.
- The SDK lets each canvas shape be a React component so teams can build custom canvases without rebuilding core features.
#### π¬ Quote
> We make a product called tldraw, which is a very good free whiteboard. But that is also built with the tldraw SDK, which is a TypeScript and React library for building infinite Canvas apps in React.
> β Steve Ruiz
Steve Ruiz on tldraw's product and SDK
#### π Transcript
**Steve Ruiz:** Steve Ruiz. I'm the founder of a startup called Teal Draw, which grew out of an open source project of mine called TealDraw. And we make a product called TealDraw, which is a very good free whiteboard. But that is also built with the TealDraw SDK, which is a TypeScript and React library for building infinite Canvas apps in React. And that is the thing that we commercialize. So if you wanted to build something that kind of worked like Miro or worked like Figma, but you wanted to do it on the web and you wanted to do it in React, and I mean like all React, like every shape on the Canvas being a little React component, you could do that with Tealdraw. And it's very good. And if you're not a developer, you can totally use tealdraw.com. It's free, it's good, it's collaborative, and it should be, like you guys are saying, pretty lightweight.
---
### [Start From The Reference Implementation](https://share.snipd.com/snip/784c8386-d6fc-4e40-acfa-7dd93e7fc055)
π§ 05:30 - 06:00 (00:29)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/7a9d7d9e-c06c-4683-8cbb-17adf2eda9ce"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Use tldraw as a reference implementation when embedding a canvas into your app instead of building from scratch.
- Leverage its multiplayer, auth, and glue code as examples to speed development and avoid common pitfalls.
#### π¬ Quote
> It's like a good reference implementation, essentially.
> β Steve Ruiz
Steve Ruiz on tldraw.com serving as a demo and reference for developers
#### π Transcript
**Steve Ruiz:** It's like a good reference implementation, essentially. But it just happens to be also a very popular reference implementation. It's like a kind of a demo that's grown beyond being just a demo. I see that. Yeah, and it has like auth,
**Chris Coyier:** right? You don't get auth for free with it,
**Steve Ruiz:** right? Although you don't have to log in. You can still use it if you don't log in. Right. I don't care. Just don't reset your browser storage because that's where the drawing You'll lose
**Chris Coyier:** your diagrams. Oh,
**Steve Ruiz:** that's funny. What is it? Is it just local storage? Yeah,
---
### [Local And Remote Sync Use Same Design](https://share.snipd.com/snip/cbee168d-d33d-4dac-ae95-6ff6955865e5)
π§ 05:55 - 06:53 (00:58)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/8bc308b6-b3d9-40ec-9fda-92efc47bd34f"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- tldraw can persist documents locally with IndexedDB and sync across tabs via the Broadcast Channel API.
- The same multiplayer sync runs over WebSockets for real-time collaboration across machines.
#### π¬ Quote
> If you open tldraw without logging in, in two different tabs, the document will sync between the two different tabs... That's happening using browser messaging... The other is handling the messaging via WebSockets.
> β Steve Ruiz
Steve Ruiz explaining tldraw's cross-tab and remote sync approaches
#### π Transcript
**Steve Ruiz:** is. lose
**Chris Coyier:** your diagrams. Oh,
**Steve Ruiz:** that's funny. What is it? Is it just local storage? Yeah, indexed DB. Whoa! What's cool is if you open Tealdraw without logging in, in two different tabs, the document will sync between the two different tabs, which you kind of have to do in order to prevent these kind of stale document bugs from overwriting. Don't, I know it. That's all happening locally. That's happening using browser messaging. uh it's like a real it's one of the one of the many flexes the little detail flexes that i do when i'm demoing that is a heck of a flex people
**Chris Coyier:** listening you should be impressed by this because that's that means that you're using because you can also do it on a computer in another country and that's real time as well which means you have two different real-time implementations. It is the same system,
**Steve Ruiz:** believe it or not. It's just how the messaging is being handled.
---
### [Make Real Turned Sketches Into Code](https://share.snipd.com/snip/83a8135d-f3f7-47a0-b817-23512976860e)
π§ 15:30 - 16:56 (01:26)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/3c59c611-5bc1-4d52-9e61-13207f4aa556"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- The Make Real prototype used GPT-4 Vision to turn hand-drawn wireframes into working code prototypes.
- Steve showed it could create one-page TypeScript/Tailwind prototypes from a tldraw screenshot in one shot.
#### π¬ Quote
> Create a working prototype based on this wireframe. And it would. I mean, it could red code it back then.
> β Steve Ruiz
Steve Ruiz describing the Make Real demo using GPT-4 Vision to generate code
#### π Transcript
**Steve Ruiz:** was called Make Real. And this was the, you know, I would never say this, but it was described to me by one of the people at Lovable as the world's first vibe coding app. But, you know, I wouldn't claim it myself, but I'm just repeating what other people have said. Put it on LinkedIn,
**Dave Rupert:** but don't. And what
**Steve Ruiz:** it was is that the GPT-4 with Vision had just dropped. This is almost exactly two years ago. And that was the first time that developers could use a model that could see, essentially, that could work with images. There was a designer named Sawyer Hood who was actually working at Figma at the time, who built this prototype of using TealDraw as a place where you would draw a user interface or a wireframe, essentially, and click a button, and it would send that screenshot. It extract the screenshot from Tealdraw. You can do that in Tealdraw. And send it to the AI and say, hey, AI, you're a developer. You're a TypeScript or a Tailwind expert. You're a whatever. Create a working prototype based on this wireframe. And it would. I mean, it could red code it back then. Now it could see. And it would make a really pretty good one-pager, like, single file project based on what you had drawn.
---
### [DOM-Based Canvas Enables Iteration](https://share.snipd.com/snip/cd5c8bbc-c68e-4565-90af-72624dc47bb2)
π§ 17:23 - 18:53 (01:29)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/1a2e4d51-4528-464d-be77-312049ca9f68"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Because tldraw renders with DOM elements (not a single canvas), generated websites can be placed back on the canvas and re-annotated for iterative prompts.
- Iterating by drawing over generated results turned one-shot generation into an interactive workflow.
#### π¬ Quote
> Tldraw's canvas is like a normal website thing. There's no, like, canvas element... which means it also supported iframes, which means you could put the website that you just created back on the canvas.
> β Steve Ruiz
Steve Ruiz on tldraw's DOM-based rendering enabling iterative AI workflows
#### π Transcript
**Steve Ruiz:** There's no, like, canvas element. Like, it's participating in normal browser rendering, right? So you look at a diagram and it's like a whole bunch of SDGs and divs and stuff like that on the canvas, which means it also supported iframes, which means you could put the website that you just created back on the canvas. And that was already like really cool because now you could kind of have multiple generations in parallel and other things. And then we're like, what happens if you draw on top of the website and use that as the next prompt? Like if they gave me like if I drew like a login screen or whatever and, you know, it said on the top, it like, welcome back, you know, and then it had an input and a button, you know, for a username, password, whatever it continued. You could double click into that. You could use it, you know, it's a really working website here, right? It's just sitting inside of the canvas. But then if you took the pen or something and like crossed out the welcome back, the title, and then you use that as the next input, the AI would just treat that as like a markup of its previous work and treat that as like an annotation. And it would create another one that was the same code, but without the welcome back thing. And so suddenly it went from like being this like kind of one shot, like wow toy to being like oh, you could actually work with that. You could really iterate towards particular behaviors or add complexity.
---
### [Canvas As Directed AI Graph](https://share.snipd.com/snip/8bdf2248-303a-4b5d-9860-2f188eb24176)
π§ 21:34 - 24:27 (02:52)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/b341950d-f21f-4a78-9541-b6d3fc4733c1"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- tldraw Computer models computation as a directed graph of components where each node uses AI-based procedures on inputs.
- That lets users chain content-generation and even express state and looping, albeit inefficiently compared to normal code.
#### π¬ Quote
> Some of those things on the canvas are what we call components... Each one of them does a kind of a thing using AI... So it's kind of like a directed graph of these little components connected to each other.
> β Steve Ruiz
Steve Ruiz explaining tldraw Computer's component graph model
#### π Transcript
**Steve Ruiz:** This is, this is going to be hard on a, uh, uh, cause it's, it's, you know, these are all visual products, but if you can imagine, uh, blogging, we call it a whiteboard where you have different components that are connected with arrows and pretty loosely connected with arrows. So it's not like a patch programming type of thing where you have input and output values and you're wiring things up in particular ways. You're just like, this points to this, this points to this, this points to this. And some of those things on the canvas are what we call components, but whatever. They're just like blocks. Maybe we should call them blocks. And each one of them does a kind of a thing using AI, right? So you might have a thing that creates an image. And so it has a kind of an internal, what we call procedure that says, look at all of your inputs. So other components that are connected to you with an arrow that point towards you. And based on those inputs, create a prompt for like an image model, you know, and then run the image model prompt and then get the image back and put it inside of the block or inside the component. And whatever is pointing into like whatever those inputs are is going to going to determine the image that gets connected or created. And those inputs could be other images, it could be text, they could be, you know, entire website, could be anything, right? There's a kind of a shared interface for what these pieces of data can be, these inputs and outputs. And yeah, they could be other AI-powered components, right? Like it could be a different image that was also created based on its inputs, right? So it's kind of like a directed graph of these little components connected to each other. There are also block or whatever components named instructions where you type in a natural language thing that you want this thing to do based on its or produce based on its inputs. And the AI comes up with the procedure, right? You say write a poem and the AI is going to write a procedure like based on your inputs, you know, scan for thematic context and poetic valence and then write a poem and then export it as a text data object or whatever like that. And we thought this would be a cool way of like just generating content and like, you know, chaining all these like prompts together. But really quickly, we realized, oh, you could just do computer stuff with this. You could have a text thing that has JSON in it, like state is zero or count is zero. And with the right of instructions and arrows and stuff, you can have it, you know, make that number go up, right?
---
### [Use AI Graphs For Exploration Only](https://share.snipd.com/snip/2d701c44-f67b-4c3b-a1c7-9ef55c4bce06)
π§ 24:07 - 25:18 (01:10)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/45676184-3d43-4fa0-bee4-5e841f8e61d2"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Expect AI-driven canvas computations to be slower, costly, and less precise than normal code.
- Use them for exploration, prototyping, or workflows where flexible interpretation helps, not for performance-critical tasks.
#### π¬ Quote
> It is the world's most expensive and wasteful counter... And it's much slower than normal code.
> β Steve Ruiz
Steve Ruiz warning about performance and cost of AI-driven tldraw Computer computations
#### π Transcript
**Steve Ruiz:** But really quickly, we realized, oh, you could just do computer stuff with this. You could have a text thing that has JSON in it, like state is zero or count is zero. And with the kind of instructions and arrows and stuff, you can have it, you know, make that number go up, right? Because this thing can include cycles. So it'll just loop, you know, and take the state as the input, update the state that is one more in the output and go, go, go. And then we added a condition statements of like evaluate the statements. And, you know, the answer could be yes, no, or since we're using AI for everything here, it could also be maybe. And then now you have a branching system that will essentially have an exit condition. And there's really nothing that you can do with code that you couldn't do with this. It's just, A, it's not running, I mean, it is running code, but it's not like the code to process any of this. It's using AI to process anything. So it is the world's most expensive and wasteful counter or whatever. And it's much slower than normal code.
---
### [Fairies Demo Shows Agent Collaboration](https://share.snipd.com/snip/b6fbe12c-c10c-48c4-b756-b79dae735315)
π§ 38:16 - 42:35 (04:19)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/1e7f4bf0-2063-4eeb-8af5-705838674902"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Steve demoed spatial 'fairies'βagents placed on the canvas that create wireframes and assign tasks to each other.
- The fairies generated and reorganized notes, showing collaborative agent workflows in tldraw.
#### π¬ Quote
> These fairies are essentially agents that are spatially kind of aware... and based on those inputs, create a prompt... It created it. One, looking at the image. There's some issues. It overlapping.
> β Steve Ruiz
Steve Ruiz demoing the tldraw 'fairies' agent feature creating wireframes and tasks
#### π Transcript
**Steve Ruiz:** Have you seen the fairies stuff at all? I have no idea what you're about. All Let me see. Let me see. Let me share my screen. Like F-A Like, you know, like little floating flying uh okay got just making sure we're talking about like peter pan we're talking about peter pan tinkerbell tinkerbell you got it this is a video podcast as well right i'll try and yeah yeah
**Dave Rupert:** we have we have youtubes and we can not blog it so good
**Steve Ruiz:** i'll try and be as talky as possible for the benefit of the people listening. This normal Teal Draw, I've enabled fairies for myself, whatever. And in the bottom right corner, there's a little panel where you can talk to, grab these fairies. And these fairies are essentially agents that are spatially kind of like aware they're placed on the canvas and i can talk to it i can say uh uh hey make me um a uh um make me a task list uh for my app uh i'm making called Cat Delivery, where a person can order cats. If you need a couple of cats, you got it. All right. So this is, you could see
**Chris Coyier:** it thinking. the UI for CatList, but just a list of tasks.
**Steve Ruiz:** Just give me all the tasks, the things that I need to do. And now it's making the stuff on the canvas. Oh, wow. It looks a little... It's a little crowded here. I think they're overlapping. So we'll see if it recognizes that. So it should review its work, but no, there we go. Created it. One, looking at the image. There's some issues overlapping. little yeah so let's see if it can figure out the uh the fact that all of the notes are overlapping oh there we
**Chris Coyier:** go it's dealing in it's doing in coordinates oh gosh there's some self-awareness here oh that's a lot of tickets
**Steve Ruiz:** yeah wow it's quite a lot. We have to do some back-end stuff as well. Let me help you here. Yeah, watch
**Chris Coyier:** out, Notion. Look at that. Yeah. And now let me do the next one. Okay, cool. It's got its... I like that the fairy is flapping its wings. This is good. While it's doing that. Yes.
**Steve Ruiz:** Well, you know, this is the thing that the... Like I was saying, like we... One of the problems... I don't know if you guys use Cloud Code, but I'm like constantly running a bunch of Cloud Codes all at the same time. And I have such a hard time just remembering which ones are which, and so, or like, which ones are active, which ones are waiting on me, all that. And so I think, you know, like, here you can customize the fairy's hat. Which should help. It should help to differentiate the fairies. Because you can also have a bunch of fairies at the same time. So let me select all these guys. See,
**Chris Coyier:** this is what people want to see. Where's Maggie Appleton, right? She's always writing about, like, you need to start thinking about AI. It's not just a chatbot. It could be any kind of thing. And everybody's like, how about an input? You know, Steve's like, how about little fairies?
**Steve Ruiz:** She's a dear of the draw. She's a dear friend. Let me select this. This guy is the leader. Make the wireframes for my app. And so sometimes you need to put them all to work. Yeah. You want to have agents working together, right? I mean, this is a collaborative canvas. This should have the ability for not just the things to work with me, and they can see my stuff and I can see their stuff, but they should also be able to work with each other. So this is stuff that we're working on right now. This will probably be the next kind of marketing-driven, Twitter-driven development project that we work on where, yeah, I think they've split up the task into, here's the to-do list, where, yeah,
**Chris Coyier:** into the different staged wireframe. So of them makes a plan and then it starts giving them the other fairies jobs. Yes, exactly. This one's in boss mode.
**Steve Ruiz:** And so it's created the plan and distributed it the other fairies.
---
### [Aim To Be The Default Canvas Layer](https://share.snipd.com/snip/9f65b245-9e2c-45f0-b355-2941a1344d11)
π§ 47:17 - 47:45 (00:28)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/9ee07f19-a701-4da0-a59f-602f0b9791d8"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- tldraw's ideal outcome is to be the default canvas foundation embedded across apps that need visual interaction.
- Becoming the obvious choice means teams avoid rebuilding undifferentiated canvas features.
#### π¬ Quote
> If someone's building a Canvas thing or integrating a canvas... if it was impossible not to use tldraw... that would be good.
> β Steve Ruiz
Steve Ruiz on the best outcome for tldraw as a company
#### π Transcript
**Chris Coyier:** I think if we end up being the default choice
**Steve Ruiz:** for this kind of software, like if someone's building a Canvas thing or integrating a canvas or wants that type of feature, if like, if it was impossible not to use TealDraw or if like, or, you know, not that, but if it was, if it didn't make sense, if it never made any sense, couldn't make sense not to use TealDraw, then that, that would be good. That means we've done our job right. Right.
---
### [Invisible Basics Make Or Break UX](https://share.snipd.com/snip/805c8622-db57-4e87-9590-f39a511bc46a)
π§ 58:40 - 01:00:52 (02:12)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/b76f1255-cbe3-4b3a-998c-52b6af7b110a"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Polished core UX features (undo/redo, copy-paste, frames, clipping) are critical even if unnoticed by users.
- Inconsistent basic behaviors quickly break trust and take users out of creative flow.
#### π¬ Quote
> If copy and paste just kind of just works and no one notices it, no one questions it, it just works, well, then that's a job well done.
> β Steve Ruiz
Steve Ruiz stressing the importance of getting foundational canvas behaviors correct
#### π Transcript
**Steve Ruiz:** You're not going to vibe code Teal Draw, I'm afraid. It's a little complicated. Yeah, maybe give a couple of years before you try and but I don't I wouldn't put him past it I don't
**Dave Rupert:** know there's like a it's boxes how hard can I be you know but but then yeah like you're saying oh you sweet summer child that's the beginning of your naivety about the situation yeah it's just, I mean, I don't know. I'm messing with arrows right now. And, you know, and it's like, I can't do that. Or like, I can spend my whole life making arrows point to boxes and then like bending them and like dragging them around and fix it. You know, like, but you guys do it. And that's probably a lifetime of work for me. I've
**Steve Ruiz:** spent the better part of my 30s thinking about arrows and working on arrows. So, yeah. Yeah. There's no bottom. It just goes deeper and deeper, the things that we've had to do and that we continue to solve with the canvas. But I tell people, when I'm talking to teams and stuff, we're all developers. We tend to want to build things. That's our job. And so sometimes the communication on my side is like convincing people not to build something, which is kind of a harder thing to do. Oh, I suppose
**Chris Coyier:** it is your job kind of, right? Yeah. This part is already done. So could you just do something on top of it? Yeah. Exactly. I'm sure you could do this and that you would like, but there's
**Steve Ruiz:** a lot of stuff here that like you wouldn't do because you want to get to your cool features that matter for your customers or that they will notice. And if copy and paste just kind of just works and no one notices it, no one questions it, it just works, well, then that's a job well done. But that can take, like it took us and then this is our thing, man, but it still took us like a lot of time to get that right. And, uh, yeah.
---
### [License Source-Available For Businesses](https://share.snipd.com/snip/3aad5c96-779b-471d-ac59-819c17c18385)
π§ 01:01:20 - 01:01:58 (00:38)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/bc54267b-978e-44c4-b99e-d700649105a4"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Use source-available licensing and paid commercial licenses for production use to capture enterprise customers.
- Offer a free hobby license for noncommercial use and sell team licenses for businesses to ensure legal clarity.
#### π¬ Quote
> All of our code is on GitHub. You can contribute. But... if you do want to use it in production, like you need a license key... either a hobby one, which is free... or if you're a business you buy a license from us.
> β Steve Ruiz
Steve Ruiz describing tldraw's source-available model and commercial licensing
#### π Transcript
**Steve Ruiz:** All of our code is on GitHub. You can contribute. But, you know, you need to sign a CLA and you need to, if you do want to use it in production, like you need a license key, either a hobby one, which is free for non-commercial type of stuff, or if you're a business and you buy a license from us. Right. And it
**Chris Coyier:** goes right from, it goes right from, you know, like you're talking to businesses that are using it as a part of their core business thing. So it's not like 20 bucks, it's $6,000 a
**Steve Ruiz:** year, right? Yeah. For teams of under 10, it's $6,000 a year. But for larger teams, it's more than that. It's email us.
---
### [Market By Building Demonstrations](https://share.snipd.com/snip/8fd4d9f0-a822-435c-a94a-050496d48de0)
π§ 01:04:57 - 01:05:51 (00:53)
<iframe
src="https://share.snipd.com/embed/obsidian-player/snip/4fb24ccd-f0c7-4693-876c-e4986e701d7c"
width="100%"
height="100"
style="border: none; border-radius: 12px;"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-clipboard-write"
></iframe>
- Market developer tooling by building cool reference projects and content that pressure-test the SDK.
- Use open demos and examples to attract users because developer marketing relies on demonstrable, useful artifacts.
#### π¬ Quote
> Making content that β just making β like marketing to developers is tough. And you can only really do it by building stuff. And that stuff has to be kind of cool.
> β Steve Ruiz
Steve Ruiz on developer marketing and attracting users with demonstrable projects
#### π Transcript
**Steve Ruiz:** Making sure people know about your stuff is really hard. And that's true for any product. But it's also true for developer products. making content that β just making β like marketing to developers is tough. And you can only really do it by building stuff. And that stuff has to be kind of cool. Otherwise, no one will notice. I don't have the answers here. Like we're very much figuring it out for TealDraw. But probably something more than just putting an HEPL license on it and saying, I'll sell you the other license. Although that would be probably a place to start if someone wanted to get into this. It's just like saying, this Blackmail, sort of. Yeah. Well, I mean, it's not Blackmail. It's saying, these are the terms under which you can use this. And if those don't work for you, I'll sell you the other terms that will work.
---
Created with [Snipd](https://www.snipd.com) | Highlight & Take Notes from Podcasts