Workshop · 2024-10-22

How to use Townie AI to create full-stack apps in minutes

Steve Krouse · · Val Town

Steve Krouse, founder of Val Town, is passionate about creating tools that empower people to work more effectively. With his expertise in programming languages and user interfaces, Steve has developed Val Town as a platform for "delightful serverless functions."I

In this live session, Steve will demo:

  • How to use Townie AI to generate code for full-stack applications
  • Leveraging Val Town to run the generated code efficiently
  • The underlying technology powering Townie, including Claude 3.5 Sonnet

You'll learn how to create complete web applications in minutes, combining the power of AI-generated code with the simplicity of serverless functions. This session is perfect for developers looking to streamline their workflow and explore new ways of building applications quickly.

Sign up below to catch this event. Recordings will be emailed to all those registered.

Summary

In this conversation, Amie and Ben discuss with Steve, the founder of Valtown, about the capabilities of Townie AI, a platform designed to help users quickly develop applications. Steve explains how Townie AI allows both programmers and non-programmers to create apps efficiently, showcasing its features through live demonstrations, including building a chat app and a Hacker News clone. The discussion also covers effective prompting techniques, debugging strategies, and upcoming integrations that aim to enhance user experience and functionality.


00:00 Introduction and Overview
00:25 Exploring Townie AI and Valtown
05:03 Building a Chat Application
10:06 AI Models and Prompt Caching
12:12 Real-World Applications of Townie AI
19:43 Creating a Hacker News Clone
26:50 Exploring New AI Tools and Their Impact
28:13 Evaluating AI Performance and Cost Efficiency
31:07 Understanding Valtown and Its Applications
34:16 Navigating the No-Code and Low-Code Landscape
36:49 Tips for Effective Prompt Structuring
39:11 Managing Code Changes and Version Control
48:36 Upcoming Integrations and Enhancements

Transcript

Ben (00:02.255)
Okay, yeah, we will just wait a few moments for folks to join And then we can get started And yet when I think Riverside's good enough now that the end of the call we can leave and you don't need to like I you used to have to like hang around on Riverside for your uploading to happen, but Doesn't happen anymore. So Yeah, all good

Ben (00:31.961)
Folks who are joining, can you say hi in the chat to let us know that you can hear us and see us, please?

Ben (00:46.071)
Maybe they can't, maybe they can, I'm being shy.

Ben (00:59.523)
And yeah, this will be recorded and then I'll edit it later today and then get it up and I'll send you the links and stuff Steve, Steve so can share it. Yeah, people who are joining, can you see us, hear us? Can you say in the chat, say hi, just so we know you're there.

Ben (01:27.983)
before they are but no one's saying hi hello hello hello okay people are here great okay so today i'm gonna let Amy do the session overview and then we can dive straight into it

Steve (01:32.505)
We got one.

Amie @ Ben's Bites (01:48.462)
Hi everyone, I'm Amy. I'm joining Ben on these workshops if you didn't catch me on the last one, so you'll be seeing more of me in the future. With us today we have Steve, who is the founder of Valtown and he is going to walk us through Townie AI, which in his opinion is the fastest way to go from idea to fully deployed app. So I don't know if that's true, but I think he'll show us today.

Steve (02:14.181)
Great, thank you, Amy. Very excited to be here and chat with you guys. I guess here, maybe can I share my screen? I guess before that, I'll tell you a bit about myself. I started Valtown two years ago. We're a small team of four people in New York City. And my background is in developer tools, tools for programmers. And that's what Valtown is. But.

particularly with our new AI thing, non-programmers can be really productive with what we've got. But it's also more powerful than a traditional no-code tool because it really is a coding platform. So that's a little bit about me. Here, let me share my screen.

Steve (03:08.805)
Cool. So this is Townie, is basically what this talk is about. I made this title screen for us in the minutes before this talk, just to give you a sense of the sort of things you make and how it works. It's a lot like ChachiBT or it...

The design of Townie was really copied from Claude Artifacts, which I imagine some of you have seen before. And a lot of ways, Townie is like exactly Claude Artifacts. It's like a direct clone, but with extra stuff. So Claude Artifacts is like very heavily sandboxed. It's only front end. Townie lets you build apps on the Valtown platform, which is our like secret sauce or our special stuff.

And so we also have backends in your creations, databases, user authentication, like there's a lot more you can do because of our full platform. So here, let me get out of this and just show you VowTown here. I'll log out for a second so you could see our homepage. So if you're a programmer, this will make sense to you. not, this might be a little obtuse. Because like I said, were like first and foremost a platform for programmers.

But the thing that's kind of funny that we got lucky about is we made a tool that's all text. It's all about code. I'm sure you guys have heard about no code platforms or low code platforms. Valtine is a just code platform. We try to reduce all the setup and configuration, point and click. So it's mostly just you get to focus on just the elegant code, which programmers love, and not worry about all the setup stuff that normal code platforms have.

But the fortunate coincidence for us is like, guess what else is really good at writing code? LLMs. So like by accident, we've made a tool that's like really great for programmers and also happens to be really great for people who don't know how to Okay. So VowelTown is a serverless hosting provider. So we run your code in the cloud. We can help you make front ends and back ends and you edit all the code in the browser.

Steve (05:31.065)
That's like the short pitch for, for Valtown. And then Townie AI is our like AI assistant that will write your Valtown code for you.

Steve (05:41.317)
And then just like quick look at our docs to give you like the like high level rundown, like VAL10 is a JavaScript platform. You can import stuff. We happen to use the Dino runtime. And then there are four different kinds of VALs and then a couple of like standard library goodies that we have included in the platform. So today we're mostly going to do HTTP VALs, which are like

Website VALs, these are like mini servers. You can also schedule your code on VAL10 to run on a timer, or you can schedule it to, like, if you want a VAL to be triggered by receiving an email, you can do that too. And then in terms of like, the things we have that like, cloud artifacts don't, like the extra stuff built in, SQL, like database storage, blob storage, which is like another way to store data.

We give you free access to use OpenAI's API from your code. can send emails and this one I won't get into. I think that's, any other questions about like high level stuff about what BALTOWN is or like how Towny interacts?

Ben (06:52.259)
No, think all good. think I've seen actually on your landing page, you said if you're a developer, you'll get this. But it seems like obviously you want people who aren't developers to also sign up. A company I invested in, they've got a toggle on their page saying I'm a developer or not a developer and then it changes like the headline and stuff to explain it. So I'm sure you could build a valve for that.

Steve (06:57.348)
Yes.

Steve (07:06.021)
Mmm.

Steve (07:14.191)
Yeah, exactly. Yeah, we haven't really touched our homepage in a long time. Like it needs probably like a whole redesign, but that's a great idea. Okay, so back to what was the most recent thing I was on? it this? this we'll get to in a second. No. yeah, this was, whoa, that is big. Huh, that's funny. Okay, yeah, that's kind of how it looked. I was, yeah, this is the conversation.

that made this chat or made this title page. the way you work with Towny is like in this like conversational style where you ask it to make things for you and then it writes code. And so for this one, I almost haven't even looked at the code. I looked at it maybe once or twice with like 248 lines of front end. Mostly this is all mostly a front end project. Okay. So the first thing that I want to make with you guys is a chat app. So you guys can chat with me on

like a Valtown chat app. It's like a, you could use the chat that comes in the live stream, but I thought we'd make our own little custom chat app. Let's see. So I will go to Townie and I made a new, like a specific prompt for this. Make it look cool. So I'll like, as it's going, cause it might take like, I don't know, a minute or two, I'll just explain the prompt.

but I just wanted to get it off to the races. So anyways, yeah, it's going and writing the code, which is good. So the prompt, I'm asking it to make a chat app for this workshop so you guys can all chat with me in this other chat app. I asked it to add a QR code to the page. So you guys, that's like the easiest way to give you guys a URL. I guess now that I'm thinking about it, I could also paste the URL into the chat we already have. So I could do that.

And these instructions I got from another vowel I made. So there's this new pattern that I am experimenting with, which is when I make a helpful vowel and this one, vowels are like unit of code. So this vowel helps you add user authentication to your app. And normally I would explain to a human how to do it, but instead I wrote instructions for an LLM. So I just copied and pasted these.

Steve (09:38.725)
into my prompt. Okay, cool. It's done. So here, let me test the QR code, make sure it works. no, so the QR code doesn't work. And I had a feeling that would be the case because it's using this as the workshop URL, which is like not, this is like an example one. So there are a couple ways to do this. I could dynamically figure it out in here, but the easiest thing is like this, this is it. Like I happen to know what it is. So can just paste it in and then,

Hit preview and now hopefully the QR code will work. Let's see. Yeah, I think that worked. So if anyone wants to log in, they can. I'm gonna, here, I'm gonna open up a new page and while, and like before I log in, I'm just gonna say like make it look better.

Steve (10:33.157)
And then I'll take a screenshot of it and send it that and like have it, have it like work on making it look better while we use it. Okay, so I'm gonna log in with my email address.

So it's Google login. nice. Amy's in there. Hey. Cool. Ben's in there. Awesome. I'm not sure, but I have a feeling that it's not like polling for new messages. Like if new people, if other people are sending messages, I don't know if they'll come in. But that's like the sort of thing that I would ask kind of do.

Amie @ Ben's Bites (11:16.526)
you refresh the app it will reload with more messages.

Steve (11:22.179)
Yeah, yeah, yeah, exactly. But we could just ask it to fetch new messages every second in Townie.

Steve (11:31.169)
The main part, like the main annoying part of townie is like just waiting for it to finish, waiting for it work out. All right. So let's see, did it do a good job? wow. That looks a lot better. I think.

Ben (11:42.943)
Do you use... What do you use on the backend to create the code for this? Is it OpenAI? Is it Anthropic? Which models do use?

Steve (11:54.809)
This is Claude, Sonnet 3.5. And in my experience, there's broad consensus that it is the best model out there, period. And it's particularly the best model for programming, for writing code.

Yeah. Yeah, I can give you a lot more insider baseball on the models. just, I don't know if you guys have, if you guys know about prompt caching. It's.

like a lot of models. I don't know why this is taking so long to load. Prompt caching is like something we just rolled out. like responses are like even faster and like 30 % cheaper for us. So that's really exciting. Yeah, I'm a big fan of Anthropic and like what's kind of fun is that Anthropic made tools like Towny possible. I think like this like rise in code gen over the last couple of weeks is due to

How good? Yeah, exactly. Ari made a good comment, which I'll get to in a second. But the only reason this is possible is because Cloud 3.5 is this good. And when Cloud 4 comes out, it'll be crazy. wow, rumors it's launching today. That'd be crazy. Anyways, Ari mentioned that if only caching lasted for more than five minutes. That's true, Cloud prompt caching only lasts five minutes.

So like this, this like, if you have a super long chat with Claude and you're like talking to it very actively, that costs us almost nothing. But if you leave for six minutes and then come back and send a new message, then it's very expensive for us. So it'd be nice if prompt caching lasted a little bit longer.

Steve (13:43.493)
okay, here, let me refresh the page, see if anyone else messes- Okay, nobody's messaging anyways, so I won't waste time, like, working on polling. I could just jump into some other examples, that I was thinking about doing. If that sounds good.

Amie @ Ben's Bites (13:58.582)
Yeah, let's do it.

Steve (14:00.621)
Okay, cool.

Steve (14:06.309)
This is the one. Okay, cool. So in my big presentation, I have a list of examples. All right, so this one is like, no, I don't wanna start with this one. For some reason, I wanna start with this one because I like used it very recently. We have, like, our building has a front door buzzer.

And when we have a party, it's like really annoying to have to buzz everybody in one by one. So I'm, I asked Hany to make me this buzzer where I can text this link to everyone before the party and then you can hit buzz me in and now the party's over. So it doesn't work because we don't want people to be able to get in when the party's over, but it would normally be like, yep, like the buzzer will, will go off in like two minutes and I can walk you through like the, there was like a bunch of code that I needed to write.

to work with Switchbot, to work with the robot we have. I'm a huge, own a bunch of these robots. They're really good at retrofitting. you have a space or a part of your life that wasn't built for robotics, like a light switch, they have a little robot that will press a button. Where?

was there? yeah, this was the original one. It's just like a super simple robot that just presses buttons and you can put it anywhere. I have it on our door and then I could hook it up to code and Tani was able to write this code. Any questions or comments about that one? it doesn't work on UK switches, I tried. Interesting, I wonder how UK switches look such that...

Ben (16:01.267)
They're slightly different. think you basically have to have more power to turn the switch because I bought two to try and do this a similar thing and they just don't work on the light switches and also I think the US ones are very easy to like pull because the robot obviously sticks to one pad and pulls it back out to turn it off, but you can't there's not enough power in it for UK

Steve (16:06.656)
that's so funny.

Steve (16:17.293)
Hmm. Yep. Yep. Yep.

Steve (16:22.383)
That's funny. That's funny. Bummer.

Ben (16:26.712)
Yeah.

Steve (16:28.709)
Okay, let's see. What's another? Okay, I can do this one. This one is kind of fun. I don't know if you guys know who Ayala girl is. She's like a Twitter, a weird influencer lady. She who like has like sex parties basically. She's a she's a she's fun, but she's like a programmer too. She's like a wonderful influencer. I think think of her as a modern day Marilyn Monroe.

because Marilyn Monroe was also like a mix of like a sex icon and also very smart. So she had an idea of like a custom meetup event, like a custom RSVP, like a part of full kind of app, which I very quickly made in Valtown. That's like track RSVPs. What's funny, I don't know. Yeah, I guess.

I recently had a dinner party and I actually made like a real one of these, which was very fun. You can like log in, log out, RSVP, see who's coming, that kind of thing. It was very fun.

Amie @ Ben's Bites (17:47.458)
So how does the database feature work in that instance? OK, RSVP, where does it go? And how does Tommy handle that?

Steve (17:50.671)
Mmm.

Steve (17:58.661)
Yeah, excellent question. So the quickest way here, like I could say, make me a SQLite dash.

Steve (18:14.447)
In a very meta way to answer your question, I'm going to ask Townie to make us a tool to inspect our database. If this doesn't work, or while this is working, can also...

Steve (18:30.361)
just like do it the way that I normally do it. There's a tool to like view all of your database tables. And these are all my database tables. Here, let's see. So the, sorry, to answer your question directly, every Valentine user gets their own SQLite database. And SQLite is a very popular database option for people. People like it because it's so simple. Like SQLite.

the whole database can be represented by a single file. And so you can just like send that file to someone else and then they'll have your database. There's no setup. It's like really simple kind of database. And so whenever, when you sign up to Valtown, we create a SQLite database for you and then you can make tables, send data to those tables, delete the tables, do whatever you want. Just by writing the SQL. You don't have to like do any database stuff. You just write the queries. And so Townie in our, look at that.

Here, like Townie wrote a little SQLite table explainer or like expander. And in theory, I can click on one of these tables and it'll like show me all the, yeah, all the stuff in the tables. Classic Townie.

So the most recent here, let's see.

Amie @ Ben's Bites (19:48.45)
So in theory, I could like build maybe an app and be like, create this app that uses this database as like to get started. Like let's say you build one app one and you want to use the same data as for app two. can like tell townie to like include that automatically.

Steve (20:05.871)
Yeah, yeah, exactly. So let me go back to our messages app. Okay, so this is the messages app. I think what we tell Tani to do is to name the table after the vowel's name. this is the name. This will be the name. So I can like control F for balance Balenciaga.

Amie @ Ben's Bites (20:07.534)
Very cool.

Steve (20:34.115)
So if I click on this and then scroll up to where that table is, like there are messages. So like there are two different vowels, this vowel and this vowel, this vowel and this vowel are like able to get these messages data.

Amie @ Ben's Bites (20:50.018)
Very cool.

Steve (20:52.815)
Yeah. Like one thing that our users really want is the opposite thing. They want like, I want to make a project that has isolated data that no other Val on my account can touch, which is a very reasonable request. Cause sometimes you want, you know, encapsulation or like a protection kind of boundary around, around stuff. Right now, Val town, it's all very global. You can access anything from anywhere, which is convenient, but messier.

Okay, any other questions from anyone or should I just keep going through fun examples from me in the community?

Amie @ Ben's Bites (21:32.046)
Yeah, I saw that you built like a hacker news and in like a few minutes with Tony. Can you walk us through that by chance?

Steve (21:38.351)
Hello.

Do want me to make a Hacker News live or walk you through one that's already been made? I could do either.

Amie @ Ben's Bites (21:49.582)
Either one, maybe you'll walk us through live if it's not too much pressure.

Steve (21:54.563)
No, no. Yeah, happy to give it a go. That was actually, it's funny you asked that one, because that was our goal post. Like when we started this project, we were like, what is the demo that we want to show off when we're done? And the answer was like, make a hacker news clone, make a full hacker news clone. So I happen to know what to say to make it good, hopefully. It's been a while since I tried this.

Make a pixel perfect hacker news clone, including the styles and ability to post.

Steve (22:34.917)
and

Steve (22:38.578)
Yeah, the infinitely nested comments thing, sometimes it screws up, but we can give it a go. And then I'll throw in my authentication instructions. As you can tell, I'm using these a lot. We're considering putting them in our system prompt, but right now I'm still experimenting with them. And then in terms of the system, while that's going, I'll show you the system prompt, because I mentioned it.

I don't know if everyone saw that. So if you click the hamburger menu settings, you get the system prompt. And so we don't hide our system prompt. Here it is, like all of our secrets. And I'll go through it in a second. I just want to mention that you can customize it if you want it. It's more dangerous to do that because, you know, whatever, could screw it up, but you could just always switch back. The system prompt is fascinating. Like if you, like one way to think about system prompts,

is that it's like everything a human, like everything you would need to know to know how to make a Valtown app. Because this is all that Townie knows and it's able to make Valtown apps. I can.

Amie @ Ben's Bites (23:50.604)
How long did it take you to get to this is a good prompt and we'll roll with this?

Steve (23:56.473)
Yeah, yeah, great, great question. So we wrote a story, like we wrote a whole blog post about like getting to the first version of our prompt. And it took like two or three weeks for JP to like iterate to a prompt that worked well enough. But our prompt now versus then looks totally different. So we got something that was fine, but we just like keep, yeah, we keep iterating very quickly on the prompt.

Yeah, it seems like the sort of thing that like, they're diminishing returns, but like, I don't know if we've gotten to them yet. Like it seems like incremental effort yields better prompts over and over again. We recently rolled out evals, which your users might know about. It's kind of like automated tests for LLMs. I could talk about that if people are interested.

Okay. Ooh, all right. So we got a bug. and it's like, you could just hit the like ask how to fix it button. That's like totally fine. Me personally, like I'd want to like log in and see what's going on a little bit. what line is this on? Line 272. my gosh. 272. Ooh, first story. interesting. Yeah.

It

Steve (25:23.781)
I think it just needs that, stories.rose. So I can save us some time and just do that. That might work.

Okay, stories.map is not a function. Where is that?

Yeah. Okay. So, I think it just...

Steve (25:53.081)
here, let me undo that change.

Steve (26:06.245)
Yeah, okay. That might solve it. Okay, okay, we got a little closer. I don't know if you guys saw. It like loaded the homepage and then it aired out.

Steve (26:20.005)
31

okay, yeah, need to make that same change over here. So the errors and the reason I can be able to solve them pretty quickly is because I've seen this kind of error before. it like forgets how our SQLite library works sometimes. So, anywho, why don't I log in real quick to this app and see if I can like post a story, post a comment, post up votes. Cool. My post, you're out.

Submit, no. Okay, yeah, comments is not iterable. think, yeah, it just doesn't, for some reason it's confused about the way our SQL library works.

Steve (27:22.853)
Okay, so we're gonna try asking it to reply in diff, which is a risky thing to do because it's kind of well known that.

or it's well known in my world of code gen that like LLMs like are notoriously not great at writing diffs. Like as you can see, it failed. It wasn't able to do it. So I'll just ask it to like reply with full working code, which is much more foolproof. But now we have to wait for like 300 lines of code to generate. So while that's happening, I can talk about other things. If anyone has a question. Claude news. my goodness. Let's pull this up. What's going on? Whoa. Holy crap.

This is crazy. An upgraded 3.5 Sonnet and a new model 3.5 Haiku. Holy crap.

Steve (28:13.893)
What? What does this mean? Forget about what I was doing. We've got to look at this.

Steve (28:24.943)
What does mean, computer use?

Ben (28:28.399)
Yeah, I think this is that like foray into the agent space. Looks like that.

Steve (28:28.581)
Alright.

Steve (28:38.637)
Okay. my God. You give it access to your computer somehow? It's like an app?

Ben (28:44.003)
No, I don't know how it works yet. I mean, yeah, at you just saw it, so need to dive in.

Steve (28:49.719)
Yeah, I want to see like the button where it says like, give this tool access to your computer. That's what I am confused by. Amazing. That's very cool.

Steve (29:04.067)
Yeah, it looks like it's an app. That's so cool. Okay. So a Smarter3.5. Look at that. This is going to be crazy. no, it's not that much better. It's one, it's like one or 2 % better than Cloud3.5. All right. All right. I could use it. I could use 2 % Smarter. I know, I know. And then let's look at, okay. So.

Amie @ Ben's Bites (29:25.678)
We're already spoiled.

Steve (29:33.445)
my goodness, it already outperforms the original Cloud 3.5 Sonda, this Haiku model. my God, that's crazy. this is, for those who don't know, is a super cheap model, right? Like what's the Cloud API pricing? This is crazy. It's game changing kind of stuff for me. Whoa. Yeah, like our business just got like 10 % cheaper. That's crazy.

We, as soon as this calls over, I am, I'm to be running some evals. So I guess now's a good time to talk about evals. So we use this company called Brain Trust, which it's like, makes, lets you do automated testing for LLMs. Like, you know, for example, this Hacker News thing, like it's, it's screwed up. look, it's there. I can add, can I add a vote? Maybe not. Can I comment? Hi. Comment.

Amie @ Ben's Bites (30:06.936)
you

Steve (30:30.447)
Yay! Can I nest my comments? Nested. That always gets me. When you can do infinitely nested comments, I think you can.

It's like, yeah, I don't know if it's infinitely nested.

I think it might just be nested one dimension deep. yeah. You can get it to do infinitely nested comments, which always gets me. But anyways, way eval's work is, like let's say we wanted to make sure that any changes to our system prompt didn't make it worse at making this Hacker News app. We could...

The problem with LLMs is that they're non-deterministic. So you can't like give it the same prompt and expect the same answer every time. It's going to give it with like all sorts of subtle changes. So how do you, like you can't do it by hand. Like you need some way to automate it. And luckily there are all sorts of techniques. One of the most common techniques is you just ask a different LLM to evaluate the response of your LLM. So you, you like, you ask an LLM to give you, to write some code for you. And then you ask a different LLM.

to grade it on a rubric. And the LM's are actually pretty good at grading each other. It's like a reasonably, it's a reasonable way to go about it. So anyways, we have on BrainTrust like a list of like a couple dozen evals. You can just think of them as benchmarks. And so what we'll do is run our exact same evals, but on the new 3.5 Haiku. And we'll compare that to

Steve (32:12.485)
Cloud35's on it. And if the results are pretty freaking similar, we'll just downgrade everybody to, we'll downgrade maybe some subset of users, maybe free users to Haiku and like save 10%, you know, 90 % because it's so much cheaper. Right now we're spending like, I don't know, 50, $100 a day on Cloud for users. And we were like getting to the point where we needed to start charging our users for Cloud. But if we can switch everyone to Haiku,

We won't have to charge users because all of a sudden, like, our margins make sense. Like, that's how game-changing this is. Could be for us. Intelligence too cheap to meter, what they call it.

Amie @ Ben's Bites (32:50.296)
Very cool.

Someone asked in the chat if Valtown apps are only like an end result as a web page that you can't deploy them to like iOS or Android stores, correct?

Steve (33:06.553)
This is a good question and the short answer is yes. It's just web apps and mobile apps. I think just for, I haven't explored this but a friend of mine did make me a mobile iOS web app that's designed to look and feel as native as possible with no like, with a.

Steve (33:35.973)
with like no head bar installed as a app. I don't know what it's called, but there's a way...

Steve (33:47.919)
There's a way to like in iOS, like install a mobile website and it looks on your home screen like an app. When you press on it, it opens and looks like an app and there's no URL bar. Like everything about it's an app except for the fact that it wasn't gotten from the app store.

Ben (34:03.257)
it a PWA?

Steve (34:05.463)
Yeah, yeah, yeah, yeah, that sounds about right.

Amie @ Ben's Bites (34:05.91)
Yeah, yeah.

Steve (34:11.333)
yeah, so like here it like added a, maybe like an app icon, but yeah, but maybe we need to, maybe a progressive web app is like the keyword I missed, but we'll see what it does. I see. Is this a PWA?

Steve (34:36.421)
Thank you.

Steve (34:39.851)
Cool. So anyways, I'll put the link to this in the chat so people can try.

Steve (34:53.997)
Yeah, and I'm excited for one day someone to make a a Valtown app in the App Store. Well, so far people have made regular apps for the App Store and then called out to Valtown APIs for like various things. Like you could think about Valtown in the same way that you think about Firebase. I know that Firebase is a common like mobile app devs love Firebase.

experience. So some people are using us like a Firebase alternative for like your backend and auth and database. So in theory, I don't have an iPhone. So in theory, but in theory, if someone has an iPhone wants to try to install this and like see what it works, how if it works, that'd be neat. Here, I can also share a link to the VAL. So like core to the VAL town philosophy is like that like your code is right as long as here I'll make it public. As long as it's public.

Your code is right there. Someone can fork it, like it, leave comments. It's like a very collaborative place to be working on code.

Steve (36:05.039)
Whoa, so exciting. Cool. Should I, I can build some more things. I can show you some more examples. here, let's look at what Garoff has to say about what he made on Valtown.

Steve (36:20.238)
an info from a webpage using HTTP and browserless. Nice. Browserless is really cool if folks don't know browserless. It's a way to run Chrome in the cloud. It's a way for a robot to load webpages and click on things and get data. Sometimes when you, I guess, know CAPTCHAs and how they're trying to make sure you're not a robot.

Sometimes when you want automate a script, then you're a robot and you have to get around all that stuff. so browserless is a platform that helps you do it. My friend Paul just created a new startup called BrowserBase, which is like a browserless competitor. It's kind of the same kind of thing, but more modern. So I recommend both of them.

The new HTTP wrapper made me go back into making it. interesting, yeah. Garves mentioning that we just yesterday discontinued like an old runtime of how we used to servers on Valtown that only affected like percent of a percent of users. like a subtle thing about how VALS work changed yesterday, but.

We shipped it yesterday, we discontinued the old kind and I haven't heard of any user reports of anything going wrong. So that went pretty well. Anyways, I can get into that if people want. But it sounds like Artor tested the Progressive Web App and it worked, which is awesome. That is super cool.

Amie @ Ben's Bites (38:03.356)
do you have any like suggestions for someone that's more closer to the no code side of things on how to structure prompts to get like the best output from the beginning?

Steve (38:16.379)
That's a good question.

Amie @ Ben's Bites (38:18.7)
Or is it really just trial and error? I mean, I kind of just do trial and error, feel like. But if there's any insider tips on how to approach it from a more developer mindset, I would love to hear it.

Steve (38:29.123)
Yeah, yeah, it's a great question. I have a lot of tips.

Steve (38:37.901)
So I guess maybe from the developer mindset, the first tip would be to start small. Like, I guess I have a couple of points. One is that like LLMs really like specificity. And so in some ways, like as LLMs get better and better at programming, it's turning all everybody, including programmers into like product managers where like your job is to be like really clear about what it is that you actually want. And the clearer you are, the better the results.

But on the other hand, programmers, I think the best programmers know that the way to build something is to build like the smallest possible thing and then add the smallest possible improvement to that thing. And you go as iteratively as possible and at every point have like a working thing that kind of makes sense and to go in the small steps. So it's kind of at odds with like the first message being like really complicated and having every detail because

that'll lead the LLM to try to do everything all at once. And then if something breaks, it's harder to debug because it could be from anywhere. So that's one tip to go in smaller increments. You could give the LLM broad context of where you wanna go, but then tell it to go in smaller increments. I guess in general, debugging, like,

The ways that programmers do debugging is another good skill for any human, but especially someone doing this to know about classic debugging practices such as isolation or reproducibility, which I can get into if that's interesting to folks. The way I think about it now is that it really is a partnership. There are some people who use Valtown.

in a different way. Like there are people who don't know how to code and come to Valtown and they just like tell it what they want. And if it's not right, they tell it again. If there's an error, they hit the like fix the error button and they never look at the code. And they're just like committed to being dumb about it. Like they're committed to like not ever learning anything about code. And they're committed to like the AI figures it out when the AI figures it out, which is, I never would have guessed that that people would do that.

Steve (41:00.035)
And it works, it just takes a long time. And in theory, all those people have to do is just be patient for the models to get better and then that strategy will like pay off. But I think today, the returns to getting incrementally better at programming are really high. Like if you just get a little bit better at debugging, a little bit better understanding what the code's doing, you'll be like way ahead. So that'd be, that's.

Amie @ Ben's Bites (41:26.094)
It's like sometimes when I approach the coding, like an app or something, if I go too broad and then it's like just absolutely not what I wanted. then it, whoa, that's great. There we go. That's all right.

Steve (41:33.742)
nope.

Steve (41:38.725)
Sorry, I wanted to put you in the, over here so I'm not looking from the side of my eye.

Amie @ Ben's Bites (41:44.018)
no worries. but sometimes it just like reiterates and it's like a completely different app. And then it just becomes like, wait, wait, wait, go back like two versions and, only fix this one little thing. Like, do you have any, is there any like tips or tricks on how to like fix code without completely like redesigning like the app, if that makes sense.

Steve (42:05.741)
Yeah, yeah. This, I think this is like the hardest part about it. Like you've like, you've focused on exactly the hardest thing and we're working as a software tool to like solve your problem at the platform level because I think that's ultimately what you need. and there are a couple of things I think you need. One, you need like a better interface for like quickly exploring different versions. quickly rolling back quickly, like

Like, you you just need like right at hand, like a way to like go back to a prior version. Another thing you probably need is a way to see what prior versions look like without switching to them just like quickly. Cause otherwise it's like, was it two versions ago or three versions ago? Was it working? So we're thinking about like after every townie generation, taking a screenshot of the app and then saving that. So then you can quickly just like look with your eyes, you know, if you read the code, you can just like see what it looks like. Or if you wanted to like explore previous versions without switching to them.

That's something we're thinking about. So anyways, and then another one is branches. Like let's say you're like, hmm, I want to take this in like three directions. I'm not sure which one you could like tentatively branch in three directions and have it generate all the code for three directions at the same time and then choose. That'd be awesome. So there's a lot we could do as a platform to help you manage that complexity. Cause right now to do a lot of things I'm talking about, like the way I do it or.

are used to doing it. like they'll write down like version three was good or they'll like hit the fork button and then do an exploration over on the fork. But it's just a little bit more manual than I would like. And then to your other point about like it'll like overwrite its own work and like redo a bunch of stuff. Super annoying. And it also bugs me because it takes so long. It's like, I just want you to change one little thing. Like why are you doing the whole rewrite? We're trying to get around that with diffs as you saw, but

LLMs aren't good at that. I'm really optimistic that the LLM providers will solve that over time. I don't know if you guys, I'm sure Ben remembers, probably you too, Amy, like a year or two ago, it was all about like, how do we get LLMs to respond with JSON? It's like, there are all these techniques and then eventually the providers themselves were like, boom, like here's JSON mode. Like we're just solving this problem for you. And I'm really hopeful that they're going to do the same with diffs.

Steve (44:33.749)
like boom, here's the solution, like fast diffs. Like the amount of time you should wait should be proportional to the change, not proportional to the full output. Yeah.

Amie @ Ben's Bites (44:43.98)
Yeah, to your point, I think what I do a lot is like if I like about getting into the code and not like having blinders on it's like if I like something that it does, I try and find like what where the code is that's driving that and then I copy it into like replit or something. Although now they changed their pricing. So now it's kind of expensive to do that. But but basically I would try and like just copy the code blocks that like I wanted and then try and like kind of piece together the code from the various versions of Claude. But I think all of your

Steve (44:56.644)
Hmm.

Steve (45:12.707)
Mmm.

Amie @ Ben's Bites (45:13.496)
Suggestions would be really helpful like the screenshots and like just making it a little bit easier to navigate the versions like if you could generate three versions that would be amazing because then you can see the kind of impact of your prompting and like what whether you're being clear on certain things, but

Steve (45:16.943)
Mm-hmm.

Steve (45:28.686)
Yeah.

Totally. Yeah, I can show you one of the prototypes that we made was kind of like that. Here, let me see if I could find it.

Steve (45:43.088)
Yeah, so you can see in this article where it's all about making Hacker News clones, like I was saying. Okay, so this one, here. I guess I, I don't know if I can make it bigger. Here, I'll just zoom in. Yes, okay, cool. So, we're on an infinite canvas. So it's like townie, but on an infinite canvas. So like over here, he says make a Hacker News clone, and it's like off to the races. And then over here, he's like asking for a different app.

And then boom, that's the Hello World app that's being written. And then while that's going, Hacker News is done. And he's like interacting with it and it totally works. Then, and you can open it in its own page and it works. Okay. Whatever. He's showing you Hacker News. I don't need to show you that. The part that I want to show you is that he is like, he's like asking for 10 sample stories, but like on the canvas, he's like,

now asking for a branch of this one. yeah, sorry, I missed it right here. So he's saying, add some crazy styles. And then he's like pressing a keyboard shortcut to generate three different crazy style versions. And so now they're all happening in parallel four. So they're all happening in parallel and they're loading, which is awesome. And they all look slightly different, all like different, different explorations. Yeah.

Amie @ Ben's Bites (47:05.155)
Thank you.

Steve (47:11.491)
Yeah. Another thing that I was going to say about like how I plan to solve or like how we're trying to solve the, diff problem, or you could think about it as the like, don't edit the parts that are working problem is, it's really a problem of like composability and encapsulation. The problem is that, like, so a vowel, one of the best things about it is that it's just like one super long file. like all very understandable and self-contained, but then there aren't clear

separate components. So you kind of have to like edit the whole thing. We're going to add multi-val projects to a ValTown. So you'll be able to split your app up into like five or 10 or whatever, a hundred different vals. And then when you ask LLM to make a change, it'll only change the relevant vals and leave everything else the same. I think that'd be great.

Amie @ Ben's Bites (48:01.484)
Yeah, that sounds super helpful.

Steve (48:03.715)
And then just because you brought up Replet, I could mention the distinction between Valentine and Replet because we're very similar product. I could pull up Replet for anyone who doesn't.

They also have an AI thing, Replet Agents. I'm a big fan, Replet's great. They're big pioneers in the space. The main ways that we're different from Replet is that Replet supports a bunch of languages, Python, JavaScript, Haskell. That was kind of their special sauce in the beginning, is how many different languages they support. But I guess the downside of that is that they're a very...

Steve (48:44.291)
like serverful platform, like kind of an old school servers. so that, so it's unsustainable for them to run everybody's websites because they have to be actually running a bunch of different computers. So that's why they had to change their pricing recently. ValTown is specialized in JavaScript, the JavaScript ecosystem. So we're like, we're, we don't have any other languages, but hopefully we're better at JavaScript than other folks. And then, and because of that,

We have a serverless architecture specialized to JavaScript. So when your code isn't running, it costs us nothing. And when your code is running, it costs us a fraction of a fraction of a penny. So it's very easy for us to have a very generous free tier for forever. Because when your code isn't running, it doesn't cost us anything. And then if your code's running all the time, then you'll have to pay us. But that's no problem. It's very easy for us to give you a lot of free sites. And then if your site succeeds, then you'll have to pay us. But that's more aligned.

Amie @ Ben's Bites (49:38.528)
interesting. I also like what you said about Tawny being like you kind of don't bog down the user and like the setup, which I feel like some of those like older, old school type of apps like make you go through. And as like someone that's more towards the low code, no code world, I'm like, I have no idea what that like what's going on with that. So I like that you kind of ease us into it with Val Tawny.

Steve (49:53.765)
you

Steve (49:58.183)
Totally.

Steve (50:03.013)
Totally, yeah, I'm very allergic to like setup. And yeah, it's always upset me that that's like a part of programming.

Amie @ Ben's Bites (50:12.096)
Yeah, we're coming up on the hour, but we do have one more question. Any fun, cool integrations coming to Val in near future?

Steve (50:25.263)
Sure, sure, I can give everyone listening a preview of something that hopefully will launch this week. I don't know exactly when. It's private, except for the fact that it's in a public GitHub repo, so anyone who's stealthy could have figured this out, so I feel like it's fine to share. We're working with Fall here. So this is the blog post we haven't published yet. Fall is a...

Kind of like Mid Journey, they have an API for making really high quality fast images. And we're working on a partnership here. I'll just show you like a quick demo.

I'm flying car with a hat. don't I don't know why that was the first thing that came to mind. Great. And so this is like a new, what I'm excited about is like at very end of this blog post, I talk about how this to me is the beginnings of the Valentine marketplace where eight, where API providers can bring their, their API to Valentine users without any setups. Like that's your point about like getting rid of the setup.

Normally, it's like go to fall, click the sign up button. whoa, they're down. That's great. We took them down. The flying car with the hat took them down. That's crazy. Anyways, so normally you go to fall.ai and hit the sign up button.

Amie @ Ben's Bites (51:48.136)
Yeah, one too many people.

Steve (52:03.817)
and get an API key and copy the API key back into your account and blah, blah. But I'm a believer in no setup. And so the way this app works is it does the authentication through Valtown. anybody, anyone listening to this could come in here. I could put the link in here. Anyone could come in and hit the fork button and then go to their Val and type in a request and it will just work.

no API key necessary, we handle the authentication on the backend. It's a lot like the SQLite integration that we have, but we don't own the integration, Fall owns integration, which is a lot more scalable, so people can add their own integrations.

Amie @ Ben's Bites (52:49.036)
Interesting. Yeah, I saw on Twitter you said you were doing the Lord's work when it comes to authentication. So I see what you mean.

Steve (52:55.685)
Thank you. Yeah, yeah, I you did your homework that for that one I meant about the Google login because I think Like if you have an app working Valentine app and you copy and paste this into townie in 30 seconds You'll have a lock in with Google and that like nobody in I think the history of computing has made user authentication Adding users to an app that easy 30 seconds copy and paste

Amie @ Ben's Bites (53:03.181)
Okay.

Amie @ Ben's Bites (53:24.832)
Agreed. It's hard to do.

Steve (53:24.943)
So I'm proud of that.

Yeah, that's, so yeah, fall's coming soon in terms of new integrations. Anything else that I could think of? We're probably gonna move the SQLite integration into the same data center as our other computation, which will mean, like right now, to make a SQLite query takes like 70 milliseconds, but hopefully soon it'll take like one millisecond. So like you'll get like.

database with like zero latency cost so your apps will load really fast. This is one of my popular apps. have this alternative dating website that I made to find a girlfriend. I have a girlfriend. I didn't find her through this. But all the profiles are stored in SQLite and so it just takes a little bit longer to load this page than it does to load this page. But after we move our database into the same data center, this page will load instantly just like this page does.

Amie @ Ben's Bites (54:26.156)
Very cool. Well, I'm excited to see not only all this stuff, whatever happens with the news around Claude and how that impacts Val.

Steve (54:33.537)
Yes, so exciting. Yeah, I got upstaged by by Anthropic.

Amie @ Ben's Bites (54:39.758)
Awesome. Well, thank you so much for your time and sharing a little bit more about Val and I'm excited actually to play around with it. So, yeah. And do you have any questions? Are we good?

Steve (54:50.565)
Thank you. Thank you. This has been fun.

Ben (54:56.279)
Yeah, all good. Yeah. Yeah, thanks for joining us, Steve, and thanks everyone for joining. Yeah, I'll get this edited and up on the site soon.

Amie @ Ben's Bites (54:56.654)
All right.

Steve (55:04.591)
Thanks guys.

Amie @ Ben's Bites (55:04.97)
Awesome. Thanks, everyone.

‍