640

July 14th, 2023 × #serverless#coding#education

Supper Club × val.town with Steve Krouse

Steve Krause introduces val.town, a social platform for writing and running code snippets. He discusses the inspiration behind val.town, using Deno and Render for the backend, common use cases like IoT and webhooks, recommendations for learning coding, and building an engaged community.

or
Topic 0 00:00

Transcript

Wes Bos

Welcome to Syntax.

Wes Bos

Today, we have Steve Krause on today, from A lot of things, but, specifically, we're having him on to talk about this project he has called val. Town, which, quite honestly, Is I I checked this out a couple months ago or or not, like, a couple weeks ago. I was like, oh, this seems cool.

Topic 1 00:39

This episode talks Supper Club × val.town with Steve Krause

Wes Bos

And then it popped up again. Somebody tagged me In a tweet, and I was like, alright, I'll I'll check this out. And I went through it, and I used it. I was like, This is really cool. Like, this is really neat. I have not seen anything like this in a while.

Wes Bos

And as somebody who writes lots of little scripts and lots of little demos and stuff like that, I was like, this is This is actually pretty sick.

Wes Bos

So we are welcome, Steve. Thanks so much for coming on. Yeah. Thanks. Really excited to be here. Let's Start by giving us a quick rundown of, who you are and what you do, and then we'll get into what is Val Town. Now that I just said it, it's really cool.

Topic 2 01:27

Introduction of guest Steve Krause and val.town platform

Guest 2

Thank you. Let's see. So my background, I guess, I've been programming for maybe 20 years now, since I was a kid. So I guess that's kinda where my story starts. I went to this really cool after school program that taught me to code.

Guest 2

And, ever since then, I've been obsessed with programming languages And and developer tools, and let's see. Yeah. I worked at a couple startups, and, then I I started my own company, that was an after school program teaching kids to code inspired by the one I went to as a kid.

Guest 2

Yeah. It's called the coding space. We taught kids here in New York City, after school, at people's houses, and I got Yeah. It it was a wonderful experience. As as you know well, like, teaching programming is a really wonderful way to Get all close and personal with all the bad things, in programming languages, all the ways that people get confused that we forget about because we do it every day. Yeah. They got it got me even more passionate about, programming languages and building tools for making, you know, people less confused and less frustrated. The coding space seems really cool. I I just put some notes with maybe we'll talk about that later on in the episode because,

Wes Bos

I got my start Teaching not kids, but, I got my start with something called ladies learning code.

Wes Bos

And it's just it's incredibly rewarding, and I I really like it. Maybe that's why you built this Val Town thing, and I really like it as we both have a bit of a a teaching background.

Wes Bos

So give us the rundown. What is Valtown? Why did you build it? Valtown is a social website to write and run code.

Topic 3 03:16

Val town is social website to write and run code

Guest 2

It's in some ways, it's hard to describe what Valten is because it's so generic, and it can do so many different things.

Guest 2

But at the end of the day, It's a in browser IDE and runtime.

Guest 2

So in that in that sense, it's a lot like.

Guest 2

It's also A lot like AWS Lambda. So maybe somewhere in between those 2 things.

Guest 2

On our our website, we have a poem.

Guest 2

If, GitHub gifts Could run. And if AWS Lambda were fun, and we're trying to triangulate basically what we do somewhere

Scott Tolinski

in that. So is it mostly For demos and hobby projects, are people running

Guest 2

real real production things on it? Great. Yeah. That's a really good question. So In the long term or in the even in the medium term, we do want people to be doing to running production things on it.

Guest 2

Today, it's A lot it's hobby projects. It's demo projects. And, another use case that we're getting pretty good at is Zapier for developers. So if you have one off little scripts or cron jobs or integrations that accept webhooks and send them to other services, Valetown really should be the best at those sorts of things if you're a programmer, and you don't wanna mess with Zapier's interface.

Guest 2

But but over time, we do wanna Start, taking up some of the use cases that you'd normally send to AWS Lambda, or any other code code execution platform. Today, Our scalability is, like, no and reliability is nowhere near those. So if you, like, have a have a true production workflow, we're not the right place for that today, But, we wanna get there one day. I I said I was showing Scott this right before the the podcast, and I was like, it's this is kind of like if this, then that

Wes Bos

for coding, where it's like I guess it's not I guess it could be event based and whatnot. But like you said, it was Zapier is probably even better example.

Wes Bos

So to give people some context into, like, what it is, I quickly, before this podcast, created a Val.

Wes Bos

And a Val is just a function that can run when somebody hits it.

Topic 4 05:17

val is function that runs when hit

Wes Bos

And I I wrote a little guest book. So what it does is it it pulls a list of entries from an array, loops over them, And puts them out on the page. So within probably 5 minutes, probably 2 seconds, you could do one is you can write A little serverless function, I'm gonna call it.

Wes Bos

And when somebody immediately, it's gonna give you API endpoint URLs That you can just start visiting and start posting data to and and start hitting the URL.

Wes Bos

And there's no, like, build process. There's no uploading. There's no like, the the, like, hello world To AWS Lambda, you they literally make you upload a zip file, which blows my mind.

Wes Bos

And this is awesome. Like, you literally just I I was looking for the Edit button.

Wes Bos

And there is no edit button. You just you just start editing the code that is inside of it. And I was trying to rename it, and there is no rename. It it just Figures out the name from the variable or the function that you have. And and then I realized you can share values between vowels.

Wes Bos

So one of my vows is is a guestbook array. One of my vows is literally a variable that's a number for hits, and then the other val is the one that displays and and puts a form there.

Wes Bos

And, it's so cool that you can just, like, interact with the different vowels between each other. And and then I noticed there's other people who have published public vows, and I can, like, use their vows. And

Guest 2

It's it's so neat. Thank you. Wow. You really you really got the whole thing, this morning. I love it.

Wes Bos

Yeah. I think there's a YouTube video on the, like, the home page, and I I didn't even watch the whole thing. I watched probably the first half of it, and I kinda I was like, okay. I I understand what this is. If you need to run a piece of code on the Internet quickly, You can create a val, and you can import npm packages. We'll talk about all the features of it in just a second. But The 0 to deployed on the Internet is it can be just seconds. Yeah. Yeah. In that way, we, we were

Guest 2

heavily inspired by Twitter, in that, like, just any human, like, even even, like, the really stupid people in the world, like, People who run countries can get on their phones and on the Twitter app and just type in a text box and and press the tweet button, then boom. It's live on the Internet, and then they have a URL.

Topic 5 08:00

val town inspired by simplicity of Twitter

Guest 2

And then and it and it's infinitely composable. Like, tweets can be shown on CNN tweets can be embedded in websites. Tweets can be retweeted and commented and liked, and, oh, I think you get analytics for them all, just from a text box and a button, and then boom, you're live on the Internet, and you have all the Internet properties of an Internet web primitive. And and that's the kind of what we're going for in Vowel town. We want Vows to be Web primitives, the way that tweet is or that a GitHub repo is or GitHub gist is, we want them to be like, there's a URL. It has all these properties, and it's like a live object on the Internet that other people can interact with in in a lot of ways.

Scott Tolinski

Yeah. I mean, it it it's so neat about this, and and it's Not not a surprise that you've taken inspiration from Twitter in so many regards because the whole thing feels like a a very, like, social Coding platform in a way that, you know, GitHub has always been described as a social coding platform, but it to me, it never felt like truly like a social Network of kind. But this feels like an actual code social network where you're having access to everyone's, code and being able to, like you said, compose them, use them, and and things like that.

Scott Tolinski

Did the inspiration come from from being able to access anybody's little snippets?

Topic 6 09:18

val town research into programming languages

Guest 2

Yeah. That that's a great question. So, part of my backstory that I skipped over, was, I so after I left the after school program, I got really into the this problem of building dev tools.

Guest 2

So first, I wanted to build better dev tools for kids, and then it turned out that kids don't want better dev tools. Kids want to do adult programming, And they just want that to be good. And so it turns out, that I that it's it's it's better for everyone if there's, like, better businesses to be built and and, like, the tools that kids wanna use are just Adult dev tools that are just better. Sorry. So I kinda switched gears from building tools for for kids to just building dev tools. And then In trying to build better dev tools, I started building prototypes and doing research, and I kept getting stuck, Like, reimplementing and, like, going down paths that people had already gone down, like, decades ago. And so I I kinda switched gears into doing research.

Guest 2

At the end of the day, I did almost 3 years of reading papers, making prototypes. I have my own podcast called the Future of Coding, And, we and there's, like, an online community around the future of coding.

Guest 2

So, to answer to go back to your question of, like, where did the inspiration for this come from? Basically, 3 years of research, into programming languages.

Guest 2

Specifically, this question of being able to reference anyone else's vows in a global name space, That probably, if I were to pick 1 place, is most directly a Unison idea, the Unison programming language, which is, like, a Haskell inspired functional language, which is which is quite cool.

Guest 2

But, yeah, I guess, to be honest, like, a lot of this cut the idea of just a global name space really comes from the Internet.

Scott Tolinski

It's a very interesting idea. I've never seen this Unison before, a new approach to distributed programming.

Guest 2

That looks kinda neat in itself. Yeah. Yeah. Unison is very cool. And one of their one One of maybe their, like, their core cool idea is that the names of variables or or values, functions, anything, the names are just metadata.

Guest 2

Like, code is represented by an ID. In Unison, it's like the hash of the contents of the value. So So it's, like, hash based, like IPFS style identification of code, and the names are just superficial Metadata. And so you can like, I can have a different name for function than you have because it's just like a a skin kind of on top. And and a rename is It's like an instant o one operation because the ID stay the same.

Guest 2

So is similar in that valves are Represented as things in a database, and names are, like, an o of 1 kind of operation, but, it I I I, like, kind of foisted some of these cool futuristic ideas onto an existing language as opposed to building a new language on top of them.

Topic 7 12:09

Val town code runs on Deno

Scott Tolinski

Probably a Smart call there.

Wes Bos

In in many ways, this kind of reminds me of, like, like, early Early web, because, like, early web, everyone, it was just sort of, like, building their own things. And, like, I could imagine, Like kids or friends using Vowel and then sharing, like, I don't know, sharing their latest status update. And you could literally import all of your friends' status updates and put them in your top 5 or, like, their profile photo, you know. And It's really cool that you don't have to there's no NPM published to any of this. There's there's hardly even a safe, you know? And then you just have access to to So this type of stuff. So I think, like, the the bar to this kind of stuff is is really low, and it's really neat that it's code first as well. Like, did you did you ever go down any of these, like, low code, no code, WYSIWYG things instead of this? Definitely. Yeah. So

Guest 2

in my research, where I originally started was much more no code or low code.

Guest 2

And I still am inspired by those folks and, think there's a lot of potential there.

Guest 2

But at the end of the day, coding is is still really A great platform.

Guest 2

One of the best and most influential essays I read was, in this book called, A Small Matter of Programming by Bonnie Nardi. I think it's the 1st chapter of that book where she does a deep dive on how syntax actually isn't that hard to learn. It's like a miss, misconception that that, like, syntax is what's holding people back.

Guest 2

Mhmm. And so a big inspiration for me is spreadsheet. Spreadsheets are kind of like this programming environment, this, like, IDE for programming, and nobody really complains about learning Excel or learning VBA, like like, the Excel syntax language. You just you figure it out.

Guest 2

Yeah.

Guest 2

And Valtown is trying to go after that. We're And we're trying to make JavaScript into a little kind of query language almost, or, like, we want the feel of it to be Like, in Excel, you have a whole sheet of data and formulas that are just working. And at any given time, you're just editing one cell. And if there are errors in that 1 cell, it's all very isolated. Everything else continues to work. In a normal programming project, you know, 1 index error, the whole thing breaks, nothing runs, And and you have to, like, do all these steps to get to build and running your machine. But in Vowel town, we think we can get the best of both worlds where it's a A world of these valves that are all kind of running and there's data flowing through the system. And then at any given time, you're editing 1 and that valve might have an error, and you're working through that. You're not breaking the whole system. When you get that working, boom, it's live and running everywhere all at once. So in that sense, yeah, Val Town is very coding first, but we want it to, At the end of the day, feel more like a spreadsheet than, an IDE.

Wes Bos

And what's the idea behind simply making Every Vowel be one thing. Like, if you try to put 2 variables in a Vowel, it wraps it in a iffy. Right? And there's no there's no, like, export or import, is there? It's simply just variables are globally available?

Guest 2

There there are a number of choices. Like, I can tell you why I did that initially, but there are a number of choices including that one that we're, leaning towards revisiting. So that one, there are a number of things about Vows that that aren't web standards either at the time that I made the decision, there was no standard and now there is, or maybe I just didn't know by the standard at the time. But, that's one that we're looking at changing. We're look so right now, a val is a value, and so it's either, like, let x equals 5 or it's a IFFE, which, an immediately executed Function expression, which contains a number of statements.

Scott Tolinski

But in the future, Val10 will Vows will probably be modules, And then you can have multiple statements, and you can explicitly export and import things. But that's it it might be a bit of a long road before we get there. Say one thing I really like for for new users out there who Who might hear a tool like this and think, is this right for me to start exploring with? Or is this too high level? I think One thing to ease some of those concerns if you have those would be that, Val town does a really good job of providing, Like inspiration. So for instance, I told it that I wanted inspiration, and it gave me a function that returns, the board activity from the board activity API. And that's just like a cute little thing to show me how to use it in an interactive way, But it's also also practical.

Scott Tolinski

Have you have you spent a lot of time coming up with these little inspiration demos? Is that is that tough to do, or is it, just come natural to you from working at a teaching.

Guest 2

No. I I think it's one of the biggest challenges for an open ended platform is that it Like, a big part of our job is inspiring people. It it ValTown is a two sided marketplace in the sense that, At a certain point, Val Town users will inspire other Val Town users, and then we're off to the races.

Guest 2

But to be, like, kinda kick started. We need to inject a lot of that early inspiration ourselves.

Guest 2

And so one of our newer projects is if you go to the to the Val Tan tutorial, We, like, walk you through all the different primitives of Altan. And, the 4th step of the tutorial is we show you how to schedule a function.

Guest 2

And the function we we have you schedule is a function that will email you, every day with a piece with a new vow that someone in the community made. That is inspirational.

Guest 2

So we're like, have you schedule your own drip marketing campaign? And, obviously, you can unscheduled it, as as soon as you want.

Guest 2

But, yeah, like, dripping you with inspiration, it it's yeah. It's like we find that's, like, half half the battle. Half the battle is making a platform

Wes Bos

That keeps getting better for more and more advanced use cases, and the the other half is inspiring people with what they can even do with it. Yeah. The the primitives like, let's talk About that, some of the I don't know if you call them primitives or not, but it comes baked in with you can email yourself, you can schedule cron jobs.

Wes Bos

What what are some of the other features that sort of just come along with the platform? Yeah.

Guest 2

So, Any Vowel, immediately had is accessible via API like its own API.

Topic 8 18:27

APIs automatically generated for each val

Guest 2

Mhmm. And there are a couple different APIs. There's an API for just evaluating arbitrary code. There's an API, automatically generated for any eval, and then there's an express Yeah. If you, like, want a full express handler, there's there's an API for that as well.

Guest 2

They're, referencing your own referencing vows, like importing Vows that you've written or other people have written, that is, so currently so so back to your question of, like, vows and modules and, like, web standards.

Guest 2

This is something that we're probably moving away from, but right now, you can import someone else's vales easily as you you would tag them on Twitter. So at Steve Krauss dot foo, and then Foo is just evaluating your code, which is really wonderful and a magical experience. We're probably moving to a place that's more web standard. Like, as you as you probably know, the ad symbol is not, valid JavaScript and that hold us back in certain web standard y ways. So we'll we'll probably keep the developer of at symbol of Steve Craft.fu, and boom. It's an import. But under the hood, we'll, we'll we'll rewrite that to a a More web standard JavaScript import. So, anyways, there, in terms of primitives, we have APIs, we have referencing and importing From Valtown and throughout the MPM Deno community, emailing yourself as easily as you'd lock to the console with console dot email, scheduling functions with Kron,

Wes Bos

And I think that's about it for, like, the the inbuilt primitives. The email thing is really cool because that's that's always such a a hurdle, when you're trying to integrate that into your application because you there's there's so many things to think about. You gotta think about how you're gonna render the thing, how are you going to, what package are you gonna use for SMTP? What like, there's like so many pieces to sending a simple email.

Wes Bos

And then you gotta, like, sign up for a service, and then you have to also set up your d mark d and all those, like, things on your domain name. It's just like, oh, man. Like, That's a lot to get up and running.

Wes Bos

So it's amazing that you just have that. Like, how do you avoid people abusing That as well as, like, are people trying to mine Bitcoin in Valve?

Guest 2

Great. Yeah. These are these are great questions.

Guest 2

I feel like you you gave me so much to talk about and so much to reply to. So, consult.email, the was so right now, you can only email yourself.

Guest 2

So Okay. So you you can't so you can't abuse it by emailing other people. So that's how we solve that problem.

Guest 2

And we're thinking very seriously about adding console dot SMS to text yourself. And but, you know, you'll we'll make you verify your phone number so you can only text yourself.

Guest 2

And then And then, like, in terms of these, like, built in API things, we're we we think there's this this tension, and and we're not sure sure what to do about it. We're like, we wanna get really good at helping you use any API. And then some APIs like email or text messaging, particularly yourself, we kinda wanna build that in. And so, like, for example, storage.

Guest 2

Like, we're really we're actively debating internally whether or not we should do kinda like what Purcell did with Upstash and Neon. Like, as soon as you sign up for Val Town, do we just give you an account on those platforms and just give you database Databases, just right right away. Just do Mhmm. At me dot, you know, Redis or at me dot Upstash, and you just go ahead and shove data in it. Does it just work, and you don't even have to sign up for these other services, or do we just play well with them and have you sign up for them, like, normal accounts? So that that there's a attention there,

Wes Bos

that we're we're working through. Oh, you you should totally make it work. At least the the vow persistence is the best thing ever because Sometimes when you're writing, someone who writes lots of quick scripts, persisting that data is sometimes really frustrating. And the fastest Thing to do is to grab, like, a key value store that will persist it in, like, a local local text file or or somewhere, you know, You don't have to make a schema or anything like that. And that's really nice with the Val town because literally variables are persistence. And you could you could just make a set, Right? Or a map and and be able to to store stuff in there.

Guest 2

Well, so so that's where thing well, like, I don't know if you used the word set and map on purpose there, but, right now, the there are, like, a lot of limitations to Vowel variables and what we can persist. Right now, it's just JSON. So, like, a map and a set, You you could encode those into JSON and parse them back, if you wanted to. Yeah.

Guest 2

So but but that's that's this limitation and this weird duality between Vowel values are are a lot like variables. And, like, during a Vowel function execution, you can use it just like a JavaScript value. But at the end of the day, We we serialize to Jason and back, and then it that leads to some unexpected behavior. We also have size limits to these things.

Guest 2

So, It it's it's just like a I think we think about a lot, how how we wanna deal with persistence in Val Town and the long term vision for, like, what that looks like in other other more, like, serious data stores because our our data store is really just meant for these little scripts like you were talking about. It's, like, so great to just, like, shove some data somewhere, And it's there. Amazing. Val Tan, we can handle that. But, like, when you want a serious data store, what's that off ramp story? And and that's I guess, in a lot of ways, that's, like, the story of Val Tan. We're we were built for hobbyist, and we're, like, the easiest, quickest tool to get started with and play with.

Topic 9 23:28

Data store limitations of val town

Guest 2

But Totally. As a business, as a company, we, like, we need to scale. And and for our users, okay, we need to scale to real use cases. Like, that's that's where, things always go, and so we, yeah, we, like, need to Be the best tool for playing with, and then we need we but we also need to scale to real real use cases. Yeah. That you don't wanna be the there's some other company like that where

Wes Bos

Who was it? I was trying to talking about it the other day where some there's some company where it's it's just the place where everybody posts They're demo stuff, and, like, everybody's riding the free plan forever. Mhmm. And then when it comes to doing, like, real stuff,

Guest 2

they move away, and you Certainly do not want that. I was gonna say that some companies like, Vercel are are like, do a a really good job of getting the hobbyist and then keeping them When there are Fortune 500 companies, but a lot of companies, you know, like, Kuroku famously wasn't able to to keep people at scale. Yeah. Totally.

Scott Tolinski

Speaking of, like, professional stuff here, what about, like, what is the the UI story for these snippets? Do you do you primarily see Val town is being just a straight up, code execution, or is there any UI, plans. Because, like, what I often see is people, you know, just doing basic, String concatenation to return HTML from a request. Is is there any, quality of life things that you're thinking about for UIs, or is UIs Definitely not a a focus for this platform. That's a great question.

Guest 2

We we'd know that there are dragons in in UI and that It's just, a a a tar pit. Like, if we re from a surface area perspective and a focus perspective, We can really make a big mistake by, like, wading into it not thoughtfully.

Guest 2

There's there's just so much work To do to make our function execution platform work from, like, so many different perspectives that, yeah, if we get bogged down in And making UI work and supporting React and Svelte and just all the different variations, and then the next and and remix. It just, It's dangerous.

Guest 2

So Yeah.

Guest 2

We we keep making little prototypes to, like, help with quality of life because we don't want you concatenating HTML. Like, the first thing is, like, we could just support JSX, but then, like, we just have these questions of, like, what are what's the web standard? Like, when when we support JSX, what does it Do like, do we do we use the TypeScript pragma syntax to, like, let you specify if it's react or preact? You know, like, Anyways, they're they're like there's a lot of decisions we make here, and there aren't a lot of great web standards, for for all these things. So We're we're thinking about it carefully, and we're we're not try we're trying to not be hasty.

Topic 10 26:53

Careful approach to UI in val town

Guest 2

So, like, just for people listening, I I wanna give the context But you can return h t you can return and render HTML in Val Town via the express endpoint.

Guest 2

And and And it works in like you said, you just you're constructing HTML via string, and it's rendering on the server. So it's it's pretty bare bones today, but I know a lot of improvements to make, but we just, yeah, we just don't wanna, we wanna do it offline. Yeah.

Scott Tolinski

That is very smart.

Wes Bos

I certainly would not want to to do that because then you're supporting it 3 years down the road when people moved on, but you still have to keep it going.

Wes Bos

I wanna talk about that or ask about the Express endpoint as well.

Wes Bos

What's the the idea behind using press over, like like web primitives, like, some of the winter CG stuff, The request response, fetch APIs, all that. Yeah. Yeah. We're we're we're we're going there.

Guest 2

Yeah. We can't wait to Awesome.

Guest 2

Yeah, to get to that, the web standard response API. We it might even I don't know if it'll launch this week, but, the prototype is almost done of the response API. Oh, sweet. So so So maybe it'll launch next week. Yeah. The the one thing about the

Wes Bos

like, I've been trying to move all my server stuff to web web responses.

Wes Bos

And the one thing is that, like, there's some there's not always, like, the niceties like JSON Functions, you know, or or returning errors or whatever. They don't often have it. So I've been I I've talked about this many times on the show. I've been in love with it. I've been This, package called Hano JS, which is it's built on web standards, but then it also adds A couple little handy helper functions on top, which are really nice. Yeah. Yeah. I I've I've heard you talk about it in the show, actually.

Guest 2

I and I'm I'm pleased to say that as far as the last time I checked, our, response based API does support Hano. So you can you can just use

Wes Bos

corresponds, or you can use Hano on top of it. Oh, cool. Right from about 10. Oh, sick. Nice. Can we ask you about the tech stack Behind everything, I where should we start with? With the front end or the the back end? Mhmm.

Wes Bos

Let's start with the front end. Sure. The front end is is amazing. Like, You can simply just start writing code, and the autocomplete is is perfect. And, like, I've I don't feel like I want to move back to my editor because, You know, sometimes you use these, like, web editors, and you're like, I'm just gonna write it and copy paste it in.

Guest 2

What are you using there? The code mirror 6. Pretty pretty solid.

Guest 2

High praise. I don't I don't know if we deserve quite that high praise yet.

Guest 2

One of the biggest things we're missing is, Copilot. I don't know if you use Copilot on a daily basis, but, we we definitely want that, in the in the front end editor.

Guest 2

Yeah. We're using code mirror 6 for the editor, and and then we have a a bunch of custom autocomplete

Scott Tolinski

helpers. Oh, I have not seen CodeMirror before. I don't know how I haven't seen this. But No. I I'm pretty sure that's what

Wes Bos

CodePen is running on.

Wes Bos

Really? Yeah.

Wes Bos

Yeah. I I don't I don't know. Yeah. It's it's pretty popular. It's that it's it's Code Mirror or Monaco from from Versus Code. I've used Monaco, but have not used CodeMirror. You know? Yeah. Monaco is what I've I've used in the past. CodeMirror is pretty cool. And what about like, are you using any JavaScript framework for the entire UI?

Guest 2

It's Remix React. How how you liking Remix? We like it. We like it. Yeah. There are, like, just, like, 1 or 2 platform bugs that we were annoyed with, but but on the whole,

Scott Tolinski

yeah. We're quite happy with it. Nice. And I I guess we can talk about the the back end then. What what so what it seems like everything's very snappy In this platform, so what's the the back end look like? So we have like, our API server is just a Node Express server,

Guest 2

And then our, evaluation server is it's, so Val Town code runs on Deno. So it's like a Deno platform. We moved from node to Deno, I think, in January.

Guest 2

Mainly for security reasons and also for yeah. I guess security reasons was the main reason, because that's the kind of why Dino was built for, like, their permission model. So why why Dino for the evaluations and not for the,

Scott Tolinski

the is it just maturity of,

Guest 2

Express. It's a good question. We thought about it. Oh, yeah. I think a big part of it was Remix doesn't work on Dino, And so Oh, right. Okay. We're, like, we're we're, like, unknown anyways.

Guest 2

Like, I don't know if it if it, Like, gains us anything to put our API server on Dino as well. Mhmm.

Wes Bos

Remix does does run on Dino. I have Does it? I have a website running on it. It was it was a bit of a dog to get up and running.

Wes Bos

Like, I I could tell that I was one of the first people To host Remix on Netlify with Dino.

Wes Bos

And, because I found, like, 6 or 7, like, little bugs along the way. And, Obviously, I I logged them. We got them fixed. But, that's the kind of cool thing about the stuff we talk about it is that it runs in Deno. It runs in Node. It runs in Cloudflare workers and Mhmm. And all that stuff. So are you just running Deno on,

Topic 11 32:11

Val town runs on Render servers

Guest 2

like, a long running instance on a server somewhere, Or are you using, like, serverless Deno, Deno Deploy? What what does that look like? Yeah. We're just running we, so our whole stack, Front end, API server and Deno evaluation servers all run on render, which I've heard you guys talk about on the Oh, wow. Platform before. Yeah. Mhmm. And, and yeah. So we run our own Deno evaluation servers, so far. We we would love to, I I don't know about for forever, but definitely for now, we, we, like, we know all the platforms that run code as a service, like, including, you know, deploy, platform workers, Lambda. Yeah. We'd love to use those instead of maintaining the service ourselves, but nobody has the properties that we need, like, lets you import as Flexibly as we need to to to be able to import, or, like, Val Town is this weird mix of a code runtime, like a function of the service platform, and it's like an IDE development environment where, like Mhmm. We need them both to be fast. Like, if you if you're at 1 plus 1, we wanna give you that evaluation in milliseconds. And then but then if you wanna evaluate a function at, like, you know, A lot of times, we also want that to be fast. The all the other functions of the service platforms are much more optimized for the latter use case where you're, like, upload a zip file, They deploy it. Yeah. It might take it might take seconds or minutes, and then it's fast, and and that doesn't work for us. So, anyways, maybe one of those Platforms will eventually work for us, but right now, we have to do ourselves. So so you guys literally just, like, store the Vowel

Wes Bos

text in the database, Pull it out and pass it to Eval? Basically. Yeah. Wow. That's awesome.

Wes Bos

That's that's really cool to hear that. Like, You think everybody's going serverless. You know? And, here you are running this cool thing. Like, I'm on render as well, Running a node server, and I'm a big fan of it. So it's cool to hear that. Yeah. I was even surprised that our front end server is

Guest 2

It's just, 2 boxes on render. Like, you know, like, all the Versailles magic they do to make things run fast The edge is cool, but it's not totally required. Especially if you wanna do server side rendering, it's, like, more important for these boxes to be near your database Yeah. Have them near your users.

Wes Bos

And what about database? What are you using? Render Postgres.

Topic 12 34:31

Uses Render Postgres database

Guest 2

Yeah. We've got us, like yeah. We're really using the crap out of render. Yeah. Yeah. Totally.

Scott Tolinski

Nice.

Wes Bos

Oh, that's great.

Wes Bos

And so your paid plans says, like, pricing is based on wall time and CPU time. So, the differences between the 2 maybe I'll let you explain it. I've tried to explain it a couple times on the podcast.

Wes Bos

How do you measure

Guest 2

wall and CPU time? Yeah. So wall time is the total time of hours running.

Guest 2

So if it if you have, like, long running API requests, like, if you're if you're calling out to g two p four And it takes 30 seconds. That's included in wall time. CPU time is is the actual time you're doing computation on our CPUs.

Guest 2

So when you're making a request to g two v four, we're you're not paying CPU time for that because, you know, You you've awaited, and you've ceded control of the CPU back to other people's compute. That's that's a very good explanation of it. I

Wes Bos

Had thought for sure you were on Cloudflare Workers because of that. Because that's that's usually how Cloudflare Workers touts their Pricing is that if you have a long fetch request, you're not actually it's not like you're using resources. Right? You're just kind of sitting there waiting for it. But then when it comes back and you're looping and and running reduces and doing CPU intensive stuff, that's where you actually get charged for for using the thing. So did you write your whole like, an entire model that calculates how long these things are Running? How do you even calculate CPU time? Great question. To be honest, a lot of these things

Guest 2

are, not actually gated. These are these are aspirational limits.

Guest 2

So so right now, yeah, right now, you you could use our service.

Guest 2

I if you come in our Discord and ask politely, I will tell you what things we actually hold you to and which things we will hold you to one day.

Wes Bos

Yeah.

Guest 2

But I I so, anyways, there are more guidelines about what we what we can commit to being free for a long time and what we We will soon make you pay for it. There are some things we we we will make you pay for today and some things we will make you pay for tomorrow, and we're just giving you fair notice. Oh, this is the This podcast is a playbook on how to start something. Freaking get a couple of render servers,

Wes Bos

Postgres database, And you don't have to write every single feature yet. You know? Oh, that's great. Are you seeing uptake in different areas? I know I know it's still pretty new. You're still figuring a lot of stuff out. But, like, IoT is certainly one of those spots where I think this could be useful.

Wes Bos

Super. Can you talk Well, that and any other areas you're starting to see uptake in or you wish to see uptake in? Yeah. Yeah. Great question.

Guest 2

I just Crunch numbers yesterday to see, like, who which users are using our service the most.

Guest 2

And by far, this one user I've never heard of had this 1 valve that's, like, pinging his his, like, home sensor for air quality every, you know, A lot. I don't know. Like, every couple seconds.

Topic 13 37:36

Common val town use case is IoT and home automation

Guest 2

So by by usage, I think IoT might be one of the the highest, things on our platform. Yeah. So In terms of, like and I yeah. Sorry. I was gonna add that in terms of who our, like, target user is, like, our all of our best users own, Arduinos. It it's it's just a thing we've noticed.

Guest 2

Like, the the the kind of person who owns an Arduino is the kind of person who would like To hack around with Val Tan. Oh, that's great. It's funny because we just had an episode

Wes Bos

on, not specifically just Arduinos, but, like, microcontrollers and, using we we even talked about running JavaScript on a microcontroller and having the The, like, the world open part, the Vowel town would be a nice little side to that. If you need to be able to ping

Guest 2

An API or send some data out of it, that would be great. Yeah. And I think so one thing we've been seeing is Val Time's really gate great for plug in e systems. So there's this, one of our new enthusiastic users is building a raycast an open source open source raycast alternative, called Sunbeam, and he is he thinks Val Town would be, like, a perfect cohost for all of the extensions for his Ecosystem, or or like another one Yeah. Is that there are there's like this widgety plug in thing if you wanna cuss like, build custom widgets on your iPhone. I think It's called a Widgeon. I don't know. I can Yeah. Leave a link later. And, and you need to, like, host some JSON in order to, like, specify What you you want your widget to look like, and you can host it on GitHub guests. But if you want it to be a little bit dynamic, Val Tan is your perfect cohost for You're cohost for that kind of a a service. But, anyways, to togg list other common use cases, my personal favorite is poll jobs Or webhooky jobs that, like, shuttle data between services. This is back to the if this, then that or Zapier use cases.

Guest 2

Like, whatever has mentioned on Twitter or Hacker News or, like, now I have Blue Sky and Mastodon poll jobs running, like, whenever I mentioned or or Val Town has mentioned, I immediately get a notification. That's how, like, West like, this morning when you tweeted about Val Town, you didn't tag me or Val Town, but I got a notification about it because I have a Vowel running that is is is constantly querying Twitter for mentions.

Guest 2

So so that's, That's my favorite use. These, like, little pull job y things that run every 5 minutes or every hour, and then console that email you or Post in your Discord when when I find something. Yeah.

Wes Bos

Mhmm.

Topic 14 40:19

Pull jobs and webhooks are common use case

Wes Bos

That's great. Because before Vercel had Cron Jobs, There was literally, like, a 100 start ups that were just cron jobs, and You could get that for free in Val Town. Yeah. Totally. We yeah. We wanna yeah. What what was the name of the Alfred alt the Raycast alternative you said? Sunbeam.

Scott Tolinski

Sunbeam.

Guest 2

Sun. I I think yeah. Like, ray like a ray. Like like, it's a pun on Raycast, Sunbeam.

Guest 2

I think it's I think it's it's still pretty new. I think he'll be excited to hear about us talking about him. But, yeah, but he's been great. He he, He made a Val Town CLI client. He's made a a Val Town, Chrome extension to, like, give you extra, like, Features, to, like, navigate Val Town, you know, with a Chrome extension. And, we're we're we're rolling out, like, a More full featured API to let you, like, read your vals, like, list your vals, and, get a vial by version number, Evaluate about well, you can already evaluate about. But, anyways, basically, we're like, he's one of our better community members, and, been asking for more APIs because he wants to build, like, a Versus code plug in for Val Town. So you can write your your Vows right in Versus code, hit save. Oh, yeah. Hit save, so then Val Town gives you the results.

Guest 2

But we we need to build a couple more APIs to enable the community to

Wes Bos

to take that on. Cool. I, I just found the link to Sunbeam. I know people are gonna be asking. Whenever there's, like, somebody casually mentions something on the podcast, those are the links that everybody is, like, crazily looking for. So I was like, I gotta make sure We got it for the listeners. I just I put it in the show notes.

Wes Bos

Nice. Really quickly talk about, Like, what do you have any what are method methodologies on on teaching kids to code? People ask us this all the time as, like, how do you teach it? And I have young kids, and they're starting to get interested in it. And I've dipped into a few things with, an older nephew of mine. What what's your thoughts on how to teach kids to code? Yeah. Great question. So I would be remiss if I didn't start by giving you, like,

Guest 2

a tiny history lesson.

Guest 2

So Sure.

Guest 2

Like, the kind of I the grandfather of teaching kids to code is this guy named Seymour Papert Seymour Papert. And he was a mathematician and educational researcher, And, he created the logo programming language, which is a predecessor to the Scratch programming language, and he kind of expand this Ethos at MIT of making these programming languages for kids that have been really, really influential, in in a lot of ways.

Guest 2

And, and he it was his philosophy that started the after school program that I went to when I was a kid. And, the thing that really got me radicalized into, like, loving programming languages and programming tools is that when I was a kid, I was bad at math.

Guest 2

And then by learning logo, I became good at math. And I knew they were related even as a kid. And then as a as a College kid, I read Seymour Papert's writing, and it turns out it was all on purpose. He was just trying to design a Trojan horse programming language To make children good at math through learning to code without them realizing that he was trying to make them good at math.

Guest 2

So I'm I'm quite passionate about teaching kids to code, But not for the coding as my like, you know, I I do wanna teach kids to code so that they can do things with computers. That's awesome. But in some ways, to me, that's almost the, The carrot are like it's like, come learn how to make video games or learn how to make web apps. And secretly, you're gonna get, like, really good at math, or, like, mathematical precise thinking, debugging techniques. Like, to me to me, it's like the softer skills that you learn in order to program that is even more important than than, the like, what you can do with computers after.

Guest 2

So, anyways, thanks for letting me go on a little rant. No. That's great. I had not heard about Seymour Papert, so I'm gonna certainly look into him. Carry on. He he was a big influence of Alan Kaye and Brent Victor who are also, folks that I I admire and pull a lot of, inspiration from.

Guest 2

But back to your question of, like, how do you teach or, like, how would I think about teaching kids to code? So I started with Scratch, which is the successor to logo. It's a Language out of MIT. It's fairly popular these days. It's block based. So it really is programming, but you can't make a syntax error because these blocks fit together like Legos, And the shapes of the blocks give children hints as to how they function. So, like, one of my favorite examples is that booleans are hexagons, And so an and, a, like, a logical and or logical or, it it in itself is shaped like a hexagon. So you know that its return type is a hexagon, And its 2 inputs are also hexagons, so it takes 2 2 booleans. And then an if statement, it's it's it has a hexagon shaped hole, And then and then it, like, accepts other blocks, for, like, you know, the if condition, the else condition.

Recommended books - Seymour Papert, Brett Victor, Dynamic Land

Guest 2

So, it's really thoughtfully designed in scratch. And so that's that's where I recommend people start because, like, you know, early in this conversation, I said syntax isn't that hard to learn, which is true, but it's pretty hard to learn for an 8 year old, And it's and it's really hard to learn at the same time as learning, the, like, fundamentals of programming, like, computational thinking. And so the way I broke it up after a couple years of teaching, you know, hundreds of kids for for thousands of hours, What I broke it up was is first start with scratch and really focus on the concepts of behind programming, and you really get that down and get kids making games. It's, like, So engaging. Like, within their 1st hour or 2, they're they made a whack a mole kind of game in scratch. It's awesome. And then after a year or 2 of scratch, the or they just get old old enough that they're like they haven't really fully explored scratch, but they decide that it's for children. It's like, I'm just I'm done with this thing. I want adult programming. I want I want Python or JavaScript.

Guest 2

And then, That transition is so hard. That's part of why I'm passionate about building better developer developer tools because it's like that gulf between how easy it is for kids to get started with Scratch and how hard it is For them to do programming after scratch.

Guest 2

So the tool I built, it's been a while since I revisited it, but the tool I built, to help with that transition is I built a JavaScript framework called Woof JS, which is a pun on scratch.

Guest 2

And for every block in scratch, there's an existing there's an equivalent command in Woof, So there's a one to 1 mapping. So, in JavaScript in Woof. So the idea is, You don't have to learn any new concepts or any new API.

Guest 2

You can just Mhmm. You're just learning syntax. Like, I've I've totally isolated syntax to be, the only thing you have to focus on when you transition from scratch to woof. You just get to learn JavaScript syntax, how to call functions, how to Construct a function, how to name variables, that sort of thing.

Guest 2

So what kids do is they'll, like, pull up their Scratch project, and side by side, they'll have a wolf project and just translate the code from 1 to the other, And it'll it'll just be working. It'll be a website, and it'll be a JavaScript, and and that's a great little transition. And then from there, I take them on to more web programming. So that that's the Yeah. The flow that I came up with. It kind of feels like even Valton is the next step there because

Scott Tolinski

it's so easy to get a snippet up and running. You don't have to worry about anything other than just the programming syntax in in what you wanna create. So, wow, it's a very clear progression to me. Thank you. Yeah. Yeah. Yeah. That's definitely it's it's so funny. Like, I I

Guest 2

I my life has been a bit of more of a windy road than This this conversation makes it seem, but definitely with respect.

Topic 16 47:41

Teaching kids to code - start with Scratch

Wes Bos

There's a clear progression, that I've been building for children. Wes, do you have anything else, or do you wanna get into the supper club Questions. Yeah. Let's get into the the supper club. I'm just fixing my Val town because I somebody is abusing it now.

Scott Tolinski

That makes sense. I have a couple of, supper club questions that are off the, Yeah. Off the cuff. Board. Something that off the cuff here. Yeah. Just from our our conversation, I had some really, some questions for you specifically. You seem to have, like, a really good knowledge of programming history, in general, is that something that you you spend time on learning? Is there a particular place you go to learn about those things or or books or anything?

Guest 2

Yeah. Yeah. So, I I guess I have 2 jokes for you here.

Guest 2

So I I I made this one joke that my career is a Brett first search, because I started at Brett Victor, and then I just explored the graph of ideas from Brett Victor's website and his references and the things that his references reference.

Guest 2

I don't know if if you guys have heard of Brett Victor, or your listeners have, but he's, UI researcher he's kinda hard to describe it. UI researcher from Apple. He has his own website. His current project is called Dynamic Land.

Guest 2

He has a lot of, like, really iconic talks and essays that I that I highly recommend to anyone.

Guest 2

And After reading them and and being quite expired inspired and and getting into making dev tools, I I had this period of almost 3 years where I Read his essays and essays he refers to and other essays that are related, just from his blog, Kind of like as a full time job almost, like podcasting about them. That's what the future of coding podcast is about. And so if you're interested in that whole world of dev tools and Programming languages and and the future and the history of them all, I'd recommend the podcast. I'd recommend the community.

Guest 2

There are a lot of links there that that point you to places. Brett Victor even is the guy who got me on to Seymour Papert.

Guest 2

That was kind of a that was, like, the the the original moment of how I got back to that, like, childhood

Scott Tolinski

Educational experience. Is that future of coding .org? Yes. Cool. I'll make sure we get that linked up. Another question, While Wes is still working on his, no, I fixed it. I just,

Wes Bos

I deleted it. It's the the downside of giving people an input Unguarded is that people will write 4 loops. Surprisingly, nobody has written anything awful yet, which is Shout out to our community.

Scott Tolinski

I I still laugh at the, the very first JavaScript meetup I went to. They did a a demo of Meteor j s, and it was like a a real time board where anybody could input. Right? And, like, within seconds of showing the audience, people were trying to Inject or trying to get around it or, you know, mess with it. Another follow-up question I had would be, is there any particular programming books? Because you've mentioned a small matter of programming, but is there any other programming books that you'd recommend people check out?

Guest 2

Yes. So Seymour Papert has 3 books. So if you're passionate about, teaching kids to code, I would, or or just education And mathematics in general, I would yeah. Definitely recommend Seymour Papert's books.

Guest 2

There's a book that I can't remember that Title of that's really good about computer history, like Internet, computers early, Xerox PARC, Bell Labs, Alan Kaye, Computer history. Oh, it's called Dream Machines. It's a it was put out by Stripe Press. Also, it's a good audiobook. That's a really good comprehensive history.

Guest 2

Yeah. Straight press.

Scott Tolinski

Yeah. Straight press knows how to you know, one thing they really they they took The how do you make something feel like a a work of art kind of as a book or or whatever? I have a couple of Stripe press, and, man, what a cool platform.

Guest 2

Yeah.

Guest 2

But, yeah, besides those books, I would I'd definitely just head over to the future of coding. We have all the links there, in this vein.

Wes Bos

Yeah. Bread Victor is is a great place to start. Also, Alan Kay is a great great place to start. At least those are some of my favorites. Awesome. I I you kinda talked about this, but I'm I'm curious to hear what your straight up answer is. If you had to start coding from scratch, what would you learn? Is it Literally scratch?

Guest 2

So okay. So, another big part of my philosophy is education should be way more personalized. So whenever so I get asked this question a lot, And I always reply to this question by asking more questions. Like, who are you? What, like, What kind of coding like things have you done? Have you done Excel? Have you done Python? Did you take any classes? What are your motivations? Are you trying to get a job? Are you just curious? Is there something very specific you're trying to build? Like, I I someone was, like, going on with this whole thing he wanted to learn, Like, this random language, and I couldn't figure it out. And it turns out he had a very specific goal in mind, and it was and that needed to be done in a totally different language. I was like, what what are we we even talking about here? Like Mhmm.

Topic 17 52:03

Learning coding is personal - customize based on goals

Guest 2

So I'm a big fan of getting very specific with people and And getting concrete about what it is that they want. Like, yeah, what they're being motivated by because, like, I call this the karate syndrome. Like, A lot of people are like, you know, wanna learn karate. It's like, what does that even mean? Like, you just want do you you wanna, like, tell your friends that you know karate? Like like, I feel like they they think they feel that way about programming. Like, I just wanna tell my friends I can code. Like, what does that even mean? You just wanna, like, brag about having a skill? Like, we need to get more specific about What you actually want here, and then and then we can support that. So back to your question.

Guest 2

For generic kid, I built a program, that, like, Scratch is the way to go. You you're starting you're starting to make video games and animations right from the get go. That's that's awesome.

Guest 2

For high for even for middle school kids, Scratch might be a little bit harder to swallow. For high school kids, it's gonna look too childish, and you'll need to find something different.

Guest 2

I guess I'm preaching to the choir here. I I think Python is silly. Like, everyone should learn JavaScript as their first language, But, that that was a radical take 5 years ago. 5 years ago, parents kept complaining to me, like, why are you teaching my kids Python? Mhmm. But but these days, I think I'm looking like, that decision is, like, a smarter decision. People aren't complaining as much.

Guest 2

But And I I think that'll only be more and more true, that JavaScript should be the first language. Absolutely.

Scott Tolinski

Yeah. I agree. What yeah. I remember when, Was it Code Academy launched? Like JavaScript was like the only thing they had. And that was like they did get some pushbacks. Like, why is it just JavaScript here?

Guest 2

But I think that worked out for them. I was gonna throw in a fun computer trivia fact. Valtime is similar to Replit, and they they were the sponsor of my podcast, and I did some work but Replit actually kind of, in some sense, spun out of Codecademy because Amjad, who started Replit, Worked at Codecademy. It was one of their 1st employees, and he built maybe their 1st employee. He built the, the edit the, like, the REPL in Codecademy, which which spun out to be it kind of spun out to be roughly. So, anyways Oh, interesting. The world is more connected than you'd think. Yeah.

Scott Tolinski

Hey. And, everything's connected on Fal Town. Right? What about

Wes Bos

Scott doesn't get to do his, sponsor transitions anymore, so he sneaks those types of things in when he can.

Scott Tolinski

I gotta do it.

Scott Tolinski

What what do you go to stay up on the latest and greatest in programming topics these days? These days, I turn to my left because my cofounder Tom McBride is,

Guest 2

He he he knows how to stay up on all these things and, better than I do. So I asked Tom, Tom, what's going on with React server components? And he he He he makes a noise.

Guest 2

She's, you know, a sucky teeth noise.

Scott Tolinski

What what does Tom have a Twitter handle? Does he,

Guest 2

Tweet? Yes.

Guest 2

TMWC, I think. I I I can't, or TMCW.

Guest 2

I'm I'm vaguely dyslexic.

Wes Bos

We should Let's see. TMCW.

Scott Tolinski

MCW.

Scott Tolinski

Tom McRight?

Wes Bos

Yes. Yeah. TMCW.

Wes Bos

We'll link it up in the show notes. Nice. Alright. Last section we have is the sick picks and shameless plugs.

Guest 2

Did you come prepared with a stick pick today? I did. I did. It took took me a while to come up with it, but there is this new product in my life that causes me So much joy, and I haven't been able to get any of my friends to start using it. And so maybe someone in the show will will take me up on it. They're, so I Don't like carrying keys.

Guest 2

I really wanted my door to be able to unlock my phone, but I live in an apartment building.

Guest 2

Like and they they wouldn't Go for that. So the first thing I tried was I put a lockbox on the outside of my door, and they hated that. They were like, you gotta get rid of this thing immediately.

Guest 2

But I found this product, called SwitchBot. They they they sell a lot of these bots, that you can install, Like, on top of a light switch, and it'll it's like a button presser. I think that was their 1st product. Oh. But they have this one that's designed specifically for opening a door, and you can attach it to the inside of your lock Just, like, right on the outside of it, and it, like, has a little handle, and it turns it turns your your thing, and it works works great. I I feel like I'm a computer wizard. I walk up to my door and press a button, and it unlocks my door. Things are wild. I love the SwitchBot stuff. I've never She bought 1 myself. But anytime I see it, I'm like, that's the

Wes Bos

instead of trying to, like, integrate or replace something, sometimes the best Solution is to literally just tack something on top of Yeah. You're old school version. Yeah.

Wes Bos

Yeah. Especially if you're renting or in a condo or something like that, You're not allowed? Cool.

Wes Bos

Shameless plugs. What do you got for us today?

Topic 18 57:29

Try out val town and join Discord community

Guest 2

Well, I don't know if it should be for something else or for Val Town. But if it could be for Val Town, I would say, Please sign up and try it out. Make some cool Vals.

Guest 2

Join us in the Discord. We're very friendly. We, we we get our hands dirty and help you debug

Wes Bos

your code and get it working. So, we'd love to see your end. Beautiful. Well, thank you so much for coming on. I very much enjoyed this and Excited to see what you have in store for the future of Val Town. Thanks, guys. Really appreciate you guys having me on, and this is a really fun conversation. Wicked. Thank you. Peace.

Scott Tolinski

Head on over to syntax.fm for a full archive of all of our shows.

Scott Tolinski

And don't forget to subscribe in your podcast player or drop a review if you like this show.

Share

Play / pause the audio
Minimize / expand the player
Mute / unmute the audio
Seek backward 30 seconds
Seek forward 30 seconds
Increase playback rate
Decrease playback rate
Show / hide this window